Fabrikam Enterprise Pizza is a sample legacy .NET Framework enterprise application representing a regional pizza franchise platform. The repository captures the system before and after modernization, with the legacy estate centered on multi-project web, desktop, service, integration, and SQL Server components.
- StoreOps — ordering, dispatch, delivery routes, workforce operations, and POS coordination
- CustomerHub — corporate accounts, catering, franchise relationships, and partner workflows
- Reporting — nightly rollups, delivery KPIs, labor summaries, and operational scorecards
- Commerce edge — public ordering through the web storefront
- ASP.NET Web Forms:
Portal,StoreOps.Portal,Web.FranchisePortal,Web.CustomerHub - ASP.NET MVC 5:
Web.Storefront - Windows Forms:
Desktop.DispatchBoard
- WCF service:
Services.DispatchHost - ASMX service:
Services.PartnerSync - POS integration:
Integrations.PosSync - Batch processing:
Reporting.Batch
- Business logic:
Business.StoreOps,Business.CustomerHub - Shared libraries:
Core,Shared.Contracts,Data
- SQL Server:
FabrikamPizza_StoreOps,FabrikamPizza_CustomerHub,FabrikamPizza_Reporting
The topology below summarizes the legacy runtime shape. For more detailed architecture notes, see docs\before\solution-architecture.md.
flowchart TB
Customers[Customers]
StoreStaff[Store staff and dispatchers]
FranchiseStaff[Franchise and corporate staff]
subgraph Apps[User-facing applications]
Portal[Portal\nWeb Forms]
StoreOpsPortal[StoreOps.Portal\nWeb Forms]
FranchisePortal[Web.FranchisePortal\nWeb Forms]
CustomerHubPortal[Web.CustomerHub\nWeb Forms]
Storefront[Web.Storefront\nMVC 5]
DispatchBoard[Desktop.DispatchBoard\nWindows Forms]
end
subgraph Services[Service layer]
DispatchHost[Services.DispatchHost\nWCF]
PartnerSync[Services.PartnerSync\nASMX]
end
subgraph Business[Business and data layer]
StoreOpsBiz[Business.StoreOps]
CustomerHubBiz[Business.CustomerHub]
SharedLayer[Core + Shared.Contracts + Data]
PosSync[Integrations.PosSync]
end
Batch[Reporting.Batch\nScheduled process]
PosExternal[External POS systems]
subgraph Databases[SQL Server databases]
StoreOpsDb[FabrikamPizza_StoreOps]
CustomerHubDb[FabrikamPizza_CustomerHub]
ReportingDb[FabrikamPizza_Reporting]
end
Customers --> Storefront
StoreStaff --> StoreOpsPortal
StoreStaff --> DispatchBoard
FranchiseStaff --> Portal
FranchiseStaff --> FranchisePortal
FranchiseStaff --> CustomerHubPortal
Storefront --> DispatchHost
Portal --> PartnerSync
FranchisePortal --> PartnerSync
CustomerHubPortal --> PartnerSync
StoreOpsPortal --> DispatchHost
DispatchBoard --> DispatchHost
DispatchHost --> StoreOpsBiz
PartnerSync --> CustomerHubBiz
StoreOpsBiz --> SharedLayer
CustomerHubBiz --> SharedLayer
PosExternal --> PosSync
PosSync --> SharedLayer
Batch --> SharedLayer
SharedLayer --> StoreOpsDb
SharedLayer --> CustomerHubDb
SharedLayer --> ReportingDb
Batch --> ReportingDb
src\before\— legacy .NET Framework solution and projectssrc\after\— modernized target solution spacedocs\— before/after architecture and supporting documentationdata\— SQL Server assets and sample data artifactsscripts\— helper scripts for legacy validation and setup
The canonical legacy solution entry point is src\before\Fabrikam.EnterprisePizza.Legacy.sln.
nuget restore src\before\Fabrikam.EnterprisePizza.Legacy.sln
dotnet msbuild src\before\Fabrikam.EnterprisePizza.Legacy.sln /t:Build /p:Configuration=Debug
powershell -ExecutionPolicy Bypass -File .\scripts\Invoke-LegacyNUnit.ps1 -AssemblyPath .\src\before\Fabrikam.EnterprisePizza.Tests.Unit\bin\Debug\Fabrikam.EnterprisePizza.Tests.Unit.dll