Skip to content
GuidesUpdated · 9 min read

Application modernization strategies: the 7 Rs, strangler fig and the dates that force your hand

How to choose an application modernization strategy per system: the AWS 7 Rs with when-to-use rules, why rehosting alone isn't modernization, the strangler fig pattern done properly (and when not to use it), modernizing a shared database, and a dated calendar of 2025–2027 end-of-support deadlines.

Elgrith Editorial TeamStrategy, design & SEO · 9 min read
Share
Weathered old blocks joined to a new oak structure by one blue block: moving a legacy system to a modern one
FIG 01Weathered old blocks joined to a new oak structure by one blue block: moving a legacy system to a modern one
TL;DR

Key takeaways

  1. 01The main application modernization strategies are the 7 Rs: retire, retain, rehost, relocate, repurchase, replatform and refactor or re-architect. Choose per application, by business value and risk.
  2. 02Rehosting moves a system but doesn't modernize it; Microsoft's Cloud Adoption Framework says "A rehost migration alone isn't modernization."
  3. 03For large systems, the strangler fig pattern replaces functionality in slices behind a façade, so the old system keeps running until the last slice moves.
  4. 04Microsoft's guidance says not to use strangler fig when requests can't be intercepted, when the system is small enough to replace whole, or when you must decommission quickly.
  5. 05.NET 8 and .NET 9 reach end of support on 10 November 2026, PHP 8.2 on 31 December 2026, and Windows Server 2016 and .NET Framework 4.6.2 on 12 January 2027.

The main application modernization strategies are the 7 Rs: retire, retain, rehost, relocate, repurchase, replatform and refactor or re-architect. Pick one per application, based on its business value and risk, and modernize large systems in slices with the strangler fig pattern rather than a big-bang rewrite. End-of-support dates often decide the timing.

Most guides on this topic list strategies without telling you when each one fits, and some invent their own "Rs" or promise "zero downtime". This one uses AWS's published 7 Rs with its own use cases, Microsoft's guidance on the strangler fig pattern (including when not to use it), and a calendar of support deadlines checked on 23 October 2026. Several of those dates land in the next three months, so check them again before you plan: .NET dates in particular should be rechecked after 10 November 2026.

What are the 7 Rs of application modernization?

AWS Prescriptive Guidance describes seven migration strategies, "known as the 7 Rs". They were written for cloud migration, but they work as a modernization vocabulary because each one is a different answer to "what do we do with this application?"

StrategyWhat it meansWhen it fits
RetireDecommission or archive the applicationNo business value left; unsupported OS or components; no inbound connections for 90 days
RetainKeep it where it is for nowHigh risk needing a detailed plan, dependencies on other apps, recently upgraded, specialised hardware, a SaaS replacement on the way
Rehost ("lift and shift")Move it to new infrastructure without changing the applicationData-centre exit on a deadline; quick wins before deeper work
RelocateMove servers or instances to a cloud version of the same platform, or between accounts and regionsMoving many servers at once without rewriting applications or buying hardware
Repurchase ("drop and shop")Replace it with a different product, usually SaaSCommodity functions like email, HR or ticketing where a product does the job
Replatform ("lift, tinker and shift")Move it and make targeted changes, such as a managed database or containersCutting hosting and licence costs without a rewrite
Refactor or re-architectRedesign it to use cloud-native featuresThe monolith blocks delivery, the code is hard to test or maintain, scale or speed demands it

Two AWS details are worth knowing. First, AWS suggests looking at retiring "zombie applications" with average CPU and memory usage below 5%, and "idle applications" between 5% and 20% over 90 days. Utilisation data from a discovery tool shows which applications qualify. Second, AWS states that refactor "is not recommended for large migrations", because it modernizes during the move. Its advice is to rehost, relocate or replatform first, then modernize once the migration is complete.

How to choose per application

Score each application on two axes, then let the scores suggest a strategy:

Low business valueHigh business value
Low technical risk (supported stack, tests, documentation)Retire or retainReplatform; refactor the parts that slow you down
High technical risk (unsupported stack, no tests, few people understand it)Retire, or repurchase if the function is still neededRefactor or re-architect in slices with the strangler fig pattern

Add a third question: is there a deadline? An end-of-support date (see the calendar below) can push an application to rehost or replatform now and refactor later.

Is rehosting modernization?

No. Rehosting changes where an application runs, not how it's built. Microsoft's Cloud Adoption Framework Modernize guidance puts it plainly: "A rehost migration alone isn't modernization."

Rehosting still has a place. It can get you out of a data centre, onto supported infrastructure and into an environment where later changes are easier. The mistake is to declare the job done after the move. Plan the next step for each rehosted application before you migrate it: replatform the database, containerise the app, or refactor the parts that change most often. Our cloud migration work covers the move; application modernization covers what comes after. For the move itself, use our cloud migration checklist.

What is the strangler fig pattern?

The strangler fig pattern replaces a legacy system piece by piece. Martin Fowler named it after the strangler fig, a vine that sprouts on a host tree and grows until its roots reach the ground and it can sustain itself; his Strangler Fig Application article (updated 22 Aug 2024) describes building the new system around the edges of the old one until the old one can be removed.

Microsoft's Azure Architecture Center (updated 16 Oct 2026) describes the mechanics in four phases:

  1. Add a façade. A proxy sits between clients and the legacy system. At first it routes almost everything to the old system.
  2. Move functionality in slices. You build a feature in the new system and the façade starts routing those requests to it. Each iteration moves more.
  3. Decommission the legacy system once nothing depends on it.
  4. Remove the façade and let clients talk to the new system directly.

How to do it well

  • Find the seams. Pick slices with clear boundaries: a module, a business capability, a set of screens or an API. Domain boundaries work better than technical layers.
  • Start with a slice that matters but won't sink you. High enough value to prove the approach; low enough risk to survive mistakes.
  • Keep the façade healthy. Microsoft warns that the façade must keep up with the migration and must not become "a single point of failure or a performance bottleneck". Monitor it like production infrastructure, because it is.
  • Use an anti-corruption layer. While both systems coexist, the new system may need to call unmigrated legacy features, and vice versa. Microsoft recommends the anti-corruption layer pattern: an adapter that translates between the two, so legacy conventions don't leak into the new design.
  • Write characterisation tests first. Before moving a slice, capture what the legacy system actually does today, including the odd behaviour users depend on. Our software testing team often starts modernization projects this way.

When should you not use the strangler fig pattern?

The pattern isn't always right. Microsoft's guidance lists situations where it might not be suitable:

  • Requests to the back end can't be intercepted, so there's nowhere to put a façade.
  • You can't access the legacy source code and it has no other integration point you can change, such as its database.
  • The system is small and replacing it whole is simple.
  • You need to decommission the original quickly, because the pattern assumes both systems run side by side for an extended period.

We'd add one more: when the organisation can't fund two systems in parallel. Strangler fig spreads the cost and the risk, but you pay for the old and new systems at the same time until the end. If that's not possible, a well-tested, phased replacement or a repurchase may be the better route.

How do you modernize a shared legacy database?

The database is usually the hardest part, because many legacy applications share one large database across business domains. Microsoft's strangler fig guidance gives a three-step approach for extracting one domain at a time:

StepWhat happensRollback
1. New service, old databaseA new service handles requests for one domain but still reads and writes the monolithic databaseEasy: route traffic back
2. New database, syncedCopy the domain's tables and history to a new database with an extract, transform and load (ETL) job; keep it in sync with change data capture (CDC); validate consistencyStill possible: legacy tables and sync remain
3. CutoverThe new database becomes the system of record; remove the domain's tables and stored procedures from the monolithHard: you'd need to restore objects and replay changes

Microsoft's advice is to treat removing legacy objects as a deliberate final step, only after the new system is validated. Where business logic lives in stored procedures, the database itself can send messages to new services, or CDC can read the transaction log, so you don't have to change legacy application code. For moving the data itself, see our data migration checklist.

Which deadlines force the decision in 2026–2027?

Support dates turn "someday" into a project plan. These were checked on 23 October 2026 on the vendors' own pages.

PlatformDateWhat it meansSource
Windows 10Ended 14 Oct 2025No free security updates. Commercial Extended Security Updates cost $61 per device in year one, doubling each year, for up to three years; consumer ESU runs to 12 Oct 2027Microsoft, ESU
SQL Server 2016Ended 14 Jul 2026Extended support overMicrosoft lifecycle
Python 3.10Ended 1 Oct 2026End of life; no more security fixesPython devguide
.NET 8 and .NET 910 Nov 2026End of support for both; .NET 10 (LTS) is supported to 14 Nov 2028.NET support policy
PHP 8.231 Dec 2026Security support endsPHP supported versions
Windows Server 201612 Jan 2027Extended support endsMicrosoft lifecycle
.NET Framework 4.6.212 Jan 2027Support endsMicrosoft lifecycle

What to do with each:

  • .NET 8 or 9 apps: usually a straightforward upgrade to .NET 10, not a rewrite. Test it, then ship it. Our .NET development team handles these upgrades.
  • .NET Framework 4.6.2: move to a later supported .NET Framework version as a short-term fix, or port to modern .NET as part of a replatform.
  • SQL Server 2016 and Windows Server 2016: replatform the database to a supported or managed version; rehost the servers if you need time.
  • PHP 8.2 and Python 3.10: upgrade the runtime and dependencies; the hard part is usually old libraries, not your code.
  • Java estates: check your vendor's support dates for your exact distribution and version; our Java development team can assess the upgrade path.
  • Windows 10 desktops running line-of-business apps: if the app ties you to old machines, a modern desktop app or a web app may be cheaper than years of ESU fees.

What did GAO find about legacy systems?

The US Government Accountability Office's report GAO-25-107795 (17 Jul 2025) is a useful reality check for any organisation. It found that federal agencies spend more than $100 billion a year on IT, with about 80% typically reported on operations and maintenance. GAO identified 11 of the most critical legacy systems, ranging from 23 to 60 years old. Agencies had modernization plans for 9 of them, but only 3 of those plans included all the key elements GAO looked for, and 2 systems had no plan at all.

The lessons transfer to private companies: most of the budget goes to keeping old systems running, and modernization stalls without a plan that names milestones, the work needed and the system's disposition. Write that plan before you choose tools.

What does a modernization roadmap look like?

  1. Inventory. List every application, its stack, owners, users, integrations and support dates.
  2. Score. Business value, technical risk and deadline for each.
  3. Assign a strategy per application using the 7 Rs. Expect a mix.
  4. Retire first. Zombie and idle applications free up budget immediately.
  5. Hit the deadlines. Upgrade or replatform anything on the support calendar above.
  6. Strangle the core. For the high-value, high-risk systems, plan slices behind a façade, with characterisation tests and a data plan per slice.
  7. Measure. Track release frequency, incidents and running costs before and after, so the business sees the return.

How can Elgrith help?

Elgrith has delivered 1,000+ projects for 250+ clients since 2015, from our New Delhi HQ and client-partnership centres in New York, London and Shanghai. Our application modernization team starts with an assessment of your portfolio, assigns a strategy per application, and modernizes the core in slices so the business keeps running. We work across .NET, Java, PHP, Python and front-end stacks, and we pair with our cloud migration team when hosting moves too. You own the code and IP, and you get a fixed written quote after a free call. Book a call or start a project.

FAQ

Frequently asked questions

Sources 13 linked

  1. 01AWS Prescriptive Guidance — About the migration strategies (7 Rs)docs.aws.amazon.com(opens in a new tab)
  2. 02Martin Fowler — Strangler Fig Application (updated 22 Aug 2024)martinfowler.com(opens in a new tab)
  3. 03Microsoft Azure Architecture Center — Strangler Fig pattern (updated 16 Oct 2026)learn.microsoft.com(opens in a new tab)
  4. 04Microsoft Cloud Adoption Framework — Modernizelearn.microsoft.com(opens in a new tab)
  5. 05GAO — GAO-25-107795: Agencies need to plan for modernizing critical decades-old legacy systems (17 Jul 2025)gao.gov(opens in a new tab)
  6. 06Microsoft — .NET and .NET Core support policydotnet.microsoft.com(opens in a new tab)
  7. 07Microsoft Lifecycle — Windows Server 2016learn.microsoft.com(opens in a new tab)
  8. 08Microsoft Lifecycle — SQL Server 2016learn.microsoft.com(opens in a new tab)
  9. 09Microsoft Lifecycle — .NET Frameworklearn.microsoft.com(opens in a new tab)
  10. 10Microsoft — Windows 10 end of supportmicrosoft.com(opens in a new tab)
  11. 11Microsoft Learn — Extended Security Updates for Windows 10 (17 Nov 2025)learn.microsoft.com(opens in a new tab)
  12. 12PHP — Supported versionsphp.net(opens in a new tab)
  13. 13Python Developer's Guide — Status of Python versionsdevguide.python.org(opens in a new tab)
Elgrith Editorial TeamStrategy, design & SEO · 9 min read

Published

Share
  • #Application modernization
  • #Legacy systems
  • #Strangler fig
  • #Cloud migration
  • #End of support

Related guides

All guides

Next step

Want this done for you?

Tell us where you want to be in 12 months. We’ll reply within one business day with a plan, a timeline and a fixed quote.

Book a free call

Open

Pick a day. You'll choose a time in your own time zone on the next step.

See all times