Modernize the old app one piece at a time.
Application modernization means moving an ageing business app onto a supported platform with the least change that removes the risk: retire it, rehost it, refactor it or rebuild it. QServices decides app by app, then moves VB6, Access, Web Forms and .NET Framework apps to current .NET and Azure in slices, so the business never stops for a big-bang rewrite.
.NET 8 and .NET 9 both lose support on 10 November 2026.
Application modernization is the work of moving a legacy business application onto a supported, secure and maintainable platform. Depending on the app, that means retiring it, moving it as it is to new infrastructure, upgrading its code, rebuilding it, or replacing it with an off-the-shelf product. Microsoft's guidance is to make the least change needed, and it is clear that moving an app to the cloud on its own isn't modernization.
Microsoft Cloud Adoption Framework, Modernize (updated October 2026): "A rehost migration alone isn't modernization."Day counts update when the page loads. Anything already ended is running without security fixes today.
No security patches. Move to .NET 10 LTS, supported to 14 Nov 2028.
Same day as .NET 8, because standard releases now get 24 months.
Where we land most apps today.
Same day as Windows Server 2016. 4.7 to 4.8.1 follow the Windows they run on.
Already unsupported. Usually a short retarget to .NET 10.
The runtime still gets critical fixes on supported Windows, 32-bit only. Microsoft "strongly recommends" replacing VB6 apps.
No security updates for the server the app runs on.
Already over, on-premises and on Azure.
Already ended. Paid security updates on-premises cost about 75% of the licence a year.
Ended. Security updates continue to July 2027 for those who pay, or free on Azure.
From Microsoft's .NET support policy and lifecycle pages, checked October 2026. We don't list dates for Classic ASP or Access here because Microsoft's own pages for them weren't available to verify.
A typical estate, sorted. Microsoft and AWS both describe these options; the skill is putting each app in the right column and not rewriting what only needs moving.
Same numbers now come from Power BI. Archive the data and switch it off.
Three pages, opened twice last year.
Works fine; its server is the problem. Azure VM now, refactor later.
Retarget to .NET 10 before 10 Nov. Days, not months.
Moved route by route behind a new front door.
No supported IDE. Rebuilt in Blazor over the same data.
Rebuilt as a Power App on Azure SQL with approvals.
A standard service desk product covers it.
Illustrative. Microsoft's Cloud Adoption Framework lists eight migration strategies, AWS lists seven; we use the five that cover most mid-market estates.
Martin Fowler on full rewrites: "we've seen this simple-sounding plan go down in flames most of the time." Microsoft calls its own ASP.NET Core migration path an implementation of the strangler fig pattern. Drag the slider.
We put a modern proxy in front of the old app. Users notice nothing, but every request now passes through a place we control.
Login and lookups move to ASP.NET Core. Shared sign-in means users don't log in twice, and the old app keeps everything else.
Order entry and pricing move once tests prove they match the old behaviour. Each release can be rolled back on its own.
Rarely used screens move or get retired. The old database is split as each part moves.
The proxy comes out, the old server is decommissioned and its data archived. A US GAO review of nine legacy modernization plans found only three fully covered how the old system would be disposed of. Ours does.
Everything sits inside an Azure landing zone with policies, identity, networking and monitoring set up once.
| Landing | Best for | Effort to run |
|---|---|---|
| Azure Virtual Machines | A bridge for apps that must leave an old server now | High |
| App Service | ASP.NET and ASP.NET Core web apps and APIs | Low |
| Managed Instance on Azure App Service | Older Windows web apps that need COM, the registry or MSI installers | Low to medium |
| Azure Container Apps | Containerised .NET APIs and background jobs, scaling to zero | Low |
| Azure Kubernetes Service | Many services, with a platform team to run them | High |
| Azure SQL Managed Instance | SQL Server moved with Agent jobs and cross-database queries intact | Low |
| Azure SQL Database | Rebuilt or refactored apps with a single database | Very low |
From Microsoft Learn architecture and service documentation, October 2026.
For banks, the core banking platform usually stays. What ages badly is everything around it, and that's where we work.
New services talk to the core through one controlled layer, so the core code never changes.
Change data capture feeds new services from the core's data without modifying it.
Old and new paths run side by side, and each payment takes the path that's ready for it.
VB6, Access and Web Forms back-office tools rebuilt on supported .NET.
OCC Bulletin 2023-17 treats the cloud and the modernization partner as third parties. We give you what your diligence needs.
BankingRollback per release and tested failover, in line with the Basel Committee's resilience principles.
Fixed price per phase. You see working slices in production every few weeks, not a demo at the end.
Every app checked against the dates above. .NET 8 and 9 apps get retargeted to .NET 10 first; servers that can't wait get a temporary move to Azure.
Discovery and dependency mapping with Azure Migrate, then a retire, rehost, refactor, rebuild or replace call for each app, with the business case.
Your team ranks apps by business impact and cost of delay. We schedule around your busy periods.
An Azure landing zone with identity, networking, policies and monitoring, set up once for every app.
Two to four week slices behind a new front door, each one tested against the old behaviour and released on its own.
Your team signs off the last slice; we decommission the old server and archive its data.
Once the app is on supported .NET and Azure, AI agents can work alongside it.
We price per phase after the assessment. Microsoft funding programmes can offset assessment and deployment costs for eligible projects.
It depends on how many apps, how large and how tangled they are, and which option each one needs: a retarget from .NET 8 to .NET 10 takes days, a VB6 rebuild takes months. Weigh it against the cost of staying: paid security updates for SQL Server 2016 on-premises run at about 75% of the licence a year. We price each phase after a two-week assessment.
Decide per app, not for the whole estate. Start with hard deadlines, then pick the least change that removes the risk: retire what nobody uses, rehost what's stable, refactor sound code on old runtimes, and rebuild only where there are no supported tools left or the process has changed.
Keep the core and modernize around it. Put an API layer in front of it, feed new services with change data capture instead of changing core code, route each transaction to the old or new path, and rebuild the long tail of back-office tools. Treat the cloud and the partner as third parties under OCC 2023-17.
Refactor when the code is sound but the runtime is unsupported. Rebuild when there's no supported toolchain, as with VB6, or the business process has changed. Either way, deliver it in slices behind a new front door; Martin Fowler notes that big-bang rewrites fail most of the time.
On 10 November 2026, the same day as .NET 9. Move to .NET 10, a long-term support release supported until 14 November 2028.
Microsoft has deprecated it in favour of GitHub Copilot's modernization chat agent, which upgrades .NET Framework apps to current .NET. It speeds up the mechanical work; testing, design decisions and anything Web Forms or WCF still need people.
Find out which apps need moving now, which can wait, and which you can simply switch off.
Facts on this page checked on 22 October 2026.

Founder and CEO

Chief Sales Officer
Join our live webinar on Sept 24 and see five
ways to automate meetings, approvals, and
document search with tools already in your
tenant.