Tech Pixels

Example report

What you receive from a modernisation assessment.

This is a complete example, written for a fictional product and company. The structure, depth and tone are what you'd get for yours. In a real report, every phase also carries a fixed price.

Example Distribution Ltd (fictional). Prepared by Tech Pixels Ltd.

Modernisation assessment: Orders portal

.NET Framework 4.8, ASP.NET WebForms, 212 pages, IIS on Windows Server 2016

1Summary

The Orders portal is a stable, profitable product held back by its platform. It runs on .NET Framework 4.8 and WebForms, depends on a 2014 control suite, and is hosted on Windows Server 2016, which loses extended support in January 2027.

Recommendation: migrate incrementally. Run an ASP.NET Core application alongside the existing one and move the ordering screens first; they change most often and carry the heaviest ViewState. Feature work continues throughout.

120 to 164 days

Total effort across five phases

6 to 8 months

Elapsed, alongside feature work

Phase 0

Recommended first step

2What we looked at

System inventory
Solution1 WebForms web project, 3 class libraries, 1 WCF service
Screens212 .aspx pages, 64 user controls, 3 master pages
Code-behindAbout 96,000 lines of C#
Data accessEntity Framework 6 (about two thirds), ADO.NET and stored procedures (the rest)
Third-partyTelerik UI for ASP.NET AJAX (2014), Crystal Reports 13, log4net
HostingIIS 10 on a single Windows Server 2016 VM, SQL Server 2016
ReleasesPublished by hand from Visual Studio
Tests41 unit tests, no automated UI or integration tests

3Risks

Risk register
RiskWhy it mattersWhat to doSeverity
Business logic in code-behind38 pages mix rules with System.Web page events, so they can't move until the logic is lifted out.Extract into tested services in phase 0 and 1, page by page.High
Telerik 2014 gridsThe WebForms control suite has no drop-in equivalent on ASP.NET Core; 51 screens use RadGrid.Rebuild grids with a modern component as each module moves.High
Windows Server 2016Extended support ends in January 2027, after which the host gets no security updates.Move to a supported host in phase 0, before any code changes.High
Crystal Reports 13The runtime only works on .NET Framework.Keep reports on the legacy app until phase 4, then replace.Medium
In-process session stateOld and new apps must share login and session while they run side by side.Use the System.Web adapters' remote session and shared authentication.Medium
Manual releases and few testsEvery release during a migration is riskier without a pipeline and tests on key flows.Build a CI/CD pipeline and tests for the ordering flows first.Medium
WCF service for two partnersPartners call it directly, so its contract can't change without notice.Leave in place; move to CoreWCF later if needed.Low
Entity Framework 6 data layerEF6 runs on modern .NET, so it can be reused as-is at first.Reuse now; consider EF Core once the screens have moved.Low

4Options compared

Not recommended

Full rewrite

Roughly 9 to 14 months with feature work frozen, and the highest risk of missing behaviour the current system relies on.

Recommended

Incremental migration

Put an ASP.NET Core app in front of the existing one using YARP, share login and session through the System.Web adapters, and move one module at a time. Customers never see a cut-over.

Short-term only

Upgrade in place

Stay on .NET Framework 4.8 on a supported host and keep patching. Cheap now, but WebForms never moves forward and hiring gets harder.

Not advised

Leave as is

The Windows Server 2016 end of support in January 2027 forces a decision within months either way.

5Recommended plan

Each phase ends with something released. You can pause between any two phases without leaving the product half-migrated.

  1. Phase 0: Foundations

    2 to 3 weeks

    10 to 14 days

    CI/CD pipeline, tests on the ordering flows, move to a supported Windows host.

  2. Phase 1: Side by side

    3 to 4 weeks

    15 to 20 days

    ASP.NET Core host with YARP in front, shared login and session, first screen (order search) moved.

  3. Phase 2: Ordering module

    6 to 8 weeks

    30 to 40 days

    46 ordering screens moved, grids rebuilt. The part of the product that changes most often.

  4. Phase 3: Remaining modules

    10 to 14 weeks

    50 to 70 days

    Customers, stock, accounts and admin, one module at a time.

  5. Phase 4: Reports and retire

    3 to 4 weeks

    15 to 20 days

    Replace Crystal Reports, switch off the legacy app and its server.

Effort is shown in days in this example. A real report prices each phase as a fixed sum.

6Next steps

  1. Agree the recommended approach, or choose another option from section 4.
  2. Start phase 0: the pipeline, tests and host move make everything after it safer.
  3. Review progress at the end of each phase before committing to the next.

Want this for your product?