White paper 03 · Modernization · Custom dev

The Custom-Software Modernization Playbook. when to refactor, when to replatform, when to rebuild, and how to switch without disrupting the business.

Deciding whether to refactor, replatform or rebuild an aging system is rarely straightforward. This practical guide gives technology and business leaders a six-question modernization scorecard, a three-year cost model, low-disruption migration patterns, buyer-protection contract terms and a 90-day starting plan.

Version
1.0 · October 2026
Length
~13 pages
Lead author
Manish Mittal
Audience
CTOs, IT directors, procurement

Executive summary

What this paper covers, in plain English.

Most aging business systems do not need a big-bang rebuild. They need a clear decision, made system by system, about what to keep, what to refactor and what to replace, followed by a switchover plan that never takes the business offline.

The pressure to decide is real in 2026:

  • .NET 8 and .NET 9 reach end of support on November 10, 2026. After that date Microsoft ships no more security fixes for them.
  • PHP 8.1 reached end of life on December 31, 2025, and PHP 8.2 follows on December 31, 2026. Organizations with Drupal, WordPress, Laravel or Magento applications still running on these PHP versions should already be planning their upgrade path.
  • Standard support for the Magento Open Source 2.4.6 release line ended on August 11, 2026. Organizations still running that release should treat migration planning as an immediate priority.
  • Drupal 10 reaches end of life on December 9, 2026, the same week Drupal 12 is released. Sites still on Drupal 8 or 9 have had no security support since 2021 and 2023.
  • Node.js 20 reached end of life in April 2026, and Angular 18 and earlier are no longer patched. Custom applications that remain on Node.js 20, Angular 18 or earlier versions may now be running on unsupported foundations.
  • In the US federal government, about 79% of planned IT spending for fiscal year 2025 went to operating and maintaining existing systems, according to the GAO. Money spent keeping old systems running is money not spent improving them.

This paper gives decision-makers a practical way through:

  1. A six-question test to decide, for each system, whether to keep, refactor, replatform or rebuild.
  2. The hidden costs of staying on unsupported platforms, so the “do nothing” option is priced honestly.
  3. Migration patterns that avoid a big-bang cutover and keep disruption small.
  4. A cost model you can fill in with your own numbers.
  5. Contract terms for switchover and rollback that protect the buyer.
  6. How AI-assisted modernization changes the cost and speed in 2026, and where human review is still essential.
  7. A real example: how OST rebuilt its own website in 2026.

1. Why modernization keeps getting postponed

Modernization is easy to postpone because the old system still works today. The costs of waiting are spread out and hard to see: slower releases, harder hiring, security patches that no longer exist, and workarounds that pile up.

What you see What it usually means
Small changes take weeks Code is tightly coupled; every change risks breaking something else
Fixes “disappear” after a deploy No reliable build and release process; changes made on the server, not in code
Only one person understands the system High key-person risk; knowledge is not written down
Security scans flag the platform itself The platform or language version is past end of life
Hosting or licence costs keep rising Old versions need special hosting or paid extended support
Integrations break when a partner updates Old libraries cannot speak current protocols or APIs

None of these alone forces a rebuild. Together they show where to look first.

2. Keep, refactor, replatform or rebuild

There are four realistic options for each system. Most organizations end up using more than one.

Option What it means Good when Watch out for
Keep and patch Stay on the current system; apply updates; reduce risk around it The platform is still supported and the system meets business needs It postpones, not removes, the decision
Refactor Improve the existing code and upgrade versions in place The core logic is sound and the platform has a supported upgrade path Large version jumps can be as much work as a rebuild
Replatform Move the same functions to a new platform or CMS, keeping content and data The platform is the problem, not the business logic Data and content migration is most of the work
Rebuild Design and build the system again Requirements have changed a lot, or the code cannot be safely changed Highest cost and risk; needs strong scope control

3. The six-question test

Should you keep, refactor, replatform or rebuild? The six-question scorecard

Answer these six questions for each system. Score each answer 0 (no concern), 1 (some concern) or 2 (serious concern).

# Question 0 1 2
1 Support: Is the platform, language and framework still receiving security updates? Yes, for 2+ years Ends within 12 months Already ended
2 Change speed: Can a small change be built, tested and released in days? Days Weeks Months, or nobody dares
3 Fit: Does the system still match how the business works? Close fit Some workarounds Major workarounds or missing features
4 Code health: Can the team safely change the code? (tests, documentation, clear structure) Yes Partly No
5 People: Can you hire or keep people who know this technology? Easily With effort Hard or impossible
6 Data: Is the data clean, documented and easy to move? Yes Mostly No

How to read the score

Total Usual answer
0 to 3 Keep and patch. Revisit in 12 months.
4 to 6 Refactor, especially if questions 1 and 4 score low.
7 to 9 Replatform, especially if question 1 scores 2 but question 3 scores low.
10 to 12 Rebuild, especially if question 3 scores 2.

The score is a starting point for discussion, not a formula. A system that scores 2 on question 1 alone (unsupported platform) needs action soon, whatever its total.

4. The hidden cost of staying

“Do nothing” is a choice with costs. Price it honestly before comparing options.

  • Security exposure. Unsupported platforms receive no fixes. New vulnerabilities stay open, and payment, privacy and accessibility rules often require supported software. For example, PCI DSS requires that known vulnerabilities be fixed through supported updates.
  • Paid extended support. Some vendors and third parties sell extended support for old versions. It buys time, not a future, and the cost usually rises each year.
  • Slower change. If every change takes weeks instead of days, the cost shows up as missed opportunities and staff time.
  • Workarounds. Manual steps, spreadsheets and copy-paste work that people do because the system cannot.
  • Key-person risk. If one person leaves, how long would it take someone new to make a safe change?
  • Drupal 10 needs a plan now. Drupal 10 reaches end of life on December 9, 2026, so Drupal 10 sites need a supported upgrade path to keep receiving security fixes. The right path depends on each site’s modules and custom code. Drupal 8 and 9 sites face a larger jump and should be assessed with the six-question test.
  • Hosting. Old versions may need special or isolated hosting, and they block upgrades of everything around them. On a shared server, one old PHP version can hold back the whole server.

5. How to modernize without a big-bang cutover

Seven patterns for modernizing without a big-bang cutover

The goal is that customers, donors and staff barely notice the switch, except that things work better. No method can promise zero downtime in every case, but these patterns keep disruption small and reversible.

1. Strangler pattern (replace in slices). Put the new system beside the old one and move one section at a time: first the blog, then the product pages, then checkout. A routing layer (for example Cloudflare or the web server) sends each address to whichever system owns it. If a slice has problems, route it back.

2. Content and data migration in rehearsals. Write the migration as a repeatable script, not a one-time manual job. Run it many times on copies of real data, compare counts and samples, and fix problems before switchover day.

3. Redirect map. List every old address and where it now lives. Missing redirects lose search rankings and break links in old emails and ads. Test the full list automatically.

4. Parallel run. For business logic such as pricing, orders or calculations, run the old and new systems side by side on the same inputs and compare outputs before switching.

5. Feature flags and dark launch. Release new code switched off, then turn it on for staff, then a small share of visitors, then everyone.

6. Freeze, switch, verify. Agree a short content freeze, run the final migration, switch DNS or routing in a quiet period, then run a prepared checklist: forms, payments, logins, emails, analytics, redirects.

7. Rollback that is actually ready. Keep the old system running and untouched for an agreed period. Rolling back should be one routing or DNS change, tested in advance, not a plan written on the day.

6. A cost model you can fill in

We do not publish average project costs, because they vary too much with scope and data. Instead, compare options over the same period (we suggest 3 years) using your own numbers.

Cost line (3 years) Keep and patch Refactor Replatform Rebuild
One-time project cost
Data and content migration
Hosting and licences
Extended support or security patches for old versions
Staff time on workarounds and manual steps
Cost of slow change (estimated lost or delayed work)
Risk allowance (security incident, outage)
Total

How to use it

  • Fill in the “keep and patch” column first. It is usually higher than people expect.
  • Use ranges, not single numbers, where you are unsure.
  • Add a risk allowance for systems that score 2 on support (question 1).
  • Ask vendors to fill in their columns using the same lines, so quotes can be compared fairly.

7. AI-assisted modernization in 2026

The biggest change since most modernization plans were written is AI coding assistants. In 2026 they can help read an old codebase, document it, translate modules to a new language or framework, and write tests, with engineers reviewing every step.

What it changes

  • Discovery is faster. AI can significantly accelerate codebase discovery by mapping components, documenting existing behavior and explaining unfamiliar code. This lowers the risk of the “nobody understands it” systems from question 4.
  • Routine translation is cheaper. Repetitive work, such as upgrading Drupal 9 custom modules toward Drupal 11 coding standards, moving old PHP to supported versions, or converting old Angular components, can often be accelerated through AI-assisted engineering.
  • Tests come first. AI can help generate tests that capture how the existing system behaves, giving engineers a repeatable way to validate equivalent behavior in the modernized system.

What it does not change

  • Complex business logic still needs people. A 2026 published case study migrated 12 features of a Visual Basic 6 business system to C# and .NET 10 with an AI coding agent. Simple features matched the original about 92% of the time; the most complex ones only about 47%, for an average of about 70%. AI does the first draft; engineers make it correct.
  • Security-critical code, payment workflows and personal-data handling require rigorous human review and testing.
  • Content, data and decisions (what to keep, what to drop) are still business work.

How OST uses it. OST uses AI-assisted engineering on modernization projects, with every change reviewed and tested by our engineers before release. This is why the starting prices in our free modernization calculator are lower than traditional estimates. The final price always depends on a review of your system.

Practical rule: treat AI as a fast, tireless junior engineer. Use it to read, draft and test. Keep experienced engineers responsible for design, review and anything that touches money, security or personal data.

8. Contract terms that protect the buyer

Write switchover and rollback into the contract, not just the project plan.

Buyer protection checklist

  • Migration acceptance criteria, with record counts reconciled
  • A tested rollback procedure
  • Data ownership and export rights
  • Documentation and knowledge transfer
  • A post-launch support period

Sample clause: switchover readiness. “Switchover to production will proceed only after the Vendor has demonstrated, on a staging environment using a copy of production data: (a) a complete data migration with record counts reconciled; (b) all redirects in the agreed redirect map working; and (c) successful completion of the agreed acceptance checklist.”

Sample clause: rollback. “The Vendor will maintain the prior system in a deployable state for [30] days after switchover. If a severity-1 issue cannot be resolved within [4] hours, the Vendor will, at the Client’s request, restore service on the prior system within [2] hours at no additional cost.”

Sample clause: data ownership and export. “All Client data, content and configuration remain the property of the Client. On request, the Vendor will provide a complete export in an open, documented format within [10] business days.”

Sample clause: knowledge transfer. “Before final acceptance, the Vendor will deliver system documentation, deployment instructions and an administrator training session, and will provide [30] days of post-launch support.”

These are examples to discuss with your legal adviser. They are not legal advice.

9. Real-world example: rebuilding ost.agency in 2026

OST rebuilt its own website in 2026. We describe it here because we can share the details openly.

Where we started

  • An Angular 18 site, statically generated and served through an Express server behind Apache, on a server shared with other OST sites.
  • Releases were manual file uploads to dated folders. Quick fixes made directly on the server were lost at the next release, because the server, not the code, held the change.
  • Content changes needed a developer.
  • Performance checks in April 2026 placed many desktop pages in Google’s “needs improvement” range.

How the six-question test scored

Question Score Why
Support 1 Angular 18 was still supported at the time (it has since reached end of life), but the release setup was fragile
Change speed 2 Simple content changes needed a developer and a manual release
Fit 2 No content management for marketing, tools and resources
Code health 1 Working code, but fixes lived on the server
People 0 Common technologies
Data 1 Content spread across code files
Total 7 Replatform, with the business logic carried over

What we did

  • New platform: a static Astro website with Payload CMS for content, so marketing staff edit pages without a developer.
  • Code-first releases: every change goes through a pull request and review before a release, so fixes cannot be lost on the server.
  • Repeatable migrations: database changes are scripted, and content was migrated by script, not by hand.
  • Staging first: every change is tested on a staging copy before the live site.
  • Redirect map: old addresses were mapped to new ones to protect search rankings.

What we learned

  • Moving content was more work than building pages. Start the content inventory first.
  • A staging server that matches live catches problems that local testing does not.
  • Release scripts need as much care as the site itself. Our team found and fixed several gaps in the deploy script before they reached the live site.

10. A 90-day starting plan

Days Step Deliverable
1 to 15 Inventory List of systems, platforms, versions and support end dates
16 to 30 Score Six-question score for each system and a first recommendation
31 to 45 Price Filled-in 3-year cost model for the top 2 or 3 systems
46 to 60 Plan Chosen option, migration pattern, redirect and data plan, rollback plan
61 to 90 First slice One low-risk slice moved to the new platform, using the strangler pattern

This is an example plan. Larger estates, regulated data and complex integrations take longer.

Not sure whether to refactor, replatform or rebuild?

OST can review your existing systems, score modernization risk, compare your options over three years, and create a practical first-slice migration plan, before you commit to a full rebuild.

About the author

Manish Mittal is Technology and Digital Solutions Leader at OpenSource Technologies (OST). He has 23+ years in technology and has been with OST since 2012. OST is a women-led, WBENC-certified digital engineering firm with 14+ years and 500+ projects delivered for ecommerce, public sector and nonprofit clients.

Sources

All accessed October 6, 2026.

  1. Microsoft .NET Blog, “.NET 8 and .NET 9 will reach End of Support on November 10, 2026.” https://devblogs.microsoft.com/dotnet/dotnet-8-9-end-of-support/
  2. Microsoft, “.NET support policy.” https://dotnet.microsoft.com/en-us/platform/support/policy
  3. PHP, “Supported versions.” https://www.php.net/supported-versions.php
  4. Adobe, “Adobe Commerce and Magento Open Source lifecycle policy.” https://experienceleague.adobe.com/en/docs/commerce-operations/release/planning/lifecycle-policy
  5. Drupal.org, “Drupal core release schedule” (Drupal 10 end of life and Drupal 12 release). https://www.drupal.org/about/core/policies/core-release-cycles/schedule
  6. US Government Accountability Office, GAO-25-107795, “Information Technology: Agencies Need to Plan for Modernizing Critical Decades-Old Legacy Systems,” 2025. https://www.gao.gov/products/gao-25-107795
  7. Martin Fowler, “Strangler Fig Application.” https://martinfowler.com/bliki/StranglerFigApplication.html
  8. Angular, “Versioning and releases” (support windows). https://angular.dev/reference/releases
  9. Node.js, “Previous releases” (release and end-of-life schedule). https://nodejs.org/en/about/previous-releases
  10. “Legacy System Modernization with Coding Agents: A Case Study,” arXiv:2608.28972, 2026. https://arxiv.org/abs/2608.28972