Home / Legacy software modernisation
Software modernisation

Legacy software modernisation without stopping the business

Modernise legacy software in steps: pin its current behaviour down with tests first, then replace it module by module while the old system keeps running. A full rebuild pays off only when the rules in the code are wrong.

Most organisations run on a few systems nobody likes to touch: an Access database carrying the planning, a .NET Framework order application, a PHP portal from 2016. This page is for the IT manager or CIO who decides what happens to them and must keep the result supported.

By Tom Joseph · Last updated: 29 October 2026

Summarize with AI Prompt copied. Paste it into the chat
Share
In short

There are four routes: upgrade the code to a supported version (refactor), replace the system module by module behind a routing layer (the strangler fig pattern), rebuild it, or move to a standard package. Three questions decide which one fits: are the business rules in the code still right, can today's behaviour be captured in tests, and can requests to the old system be intercepted? Whichever route you take: no big bang, tests first, and an agreed split of work with whoever runs your servers.

Why now

Which platforms are losing support

PlatformEnd of supportWhat it means
PHP 8.1 and olderAlready endedNo security fixes from the PHP project. php.net lists only 8.2 to 8.5 as supported.
PHP 8.231 December 2026Security fixes stop at the end of this year; PHP 8.3 is covered until 31 December 2027.
.NET Framework 4.6.212 January 2027Versions 4.5.2, 4.6 and 4.6.1 already retired on 26 April 2022 (Microsoft Lifecycle).
.NET 8 and .NET 910 November 2026The current long-term release, .NET 10, is supported until 14 November 2028 (.NET support policy).
Access 2016 and Access 201914 October 2025No new security updates (Microsoft, end of support 2025).
The decision

Refactor, replace in steps, rebuild or buy a package

RouteChoose it whenWhere the risk sits
Refactor and upgradeThe business rules are still right and the problem is mainly the runtime or framework, such as PHP 7.4 or .NET Framework.Behaviour nobody wrote down that changes quietly during the upgrade.
Replace in steps (strangler fig)The system is large, must keep running for years, and requests can be routed through a layer in front of it.Two systems sharing the same data for a while.
RebuildThe rules in the code are no longer right, the system is small, or the code cannot be tested.Old rules that turn out to be missing only after go-live.
Standard packageThe process does not set you apart and a package already does it well.Custom logic that returns as configuration nobody oversees.
RetireHardly anyone still uses it.A forgotten integration or report that still depends on it.
Step by step

How the strangler fig pattern spreads the risk

Microsoft describes the Strangler Fig pattern like this: a façade receives every request and routes it to either the legacy system or the new one. Functionality moves across piece by piece, users keep the same entry point, and the old system is switched off once nothing depends on it.

In practice you start with one module that has a clear boundary and a visible benefit, such as order entry or reporting. It goes live next to the rest, proves itself in use, and only then does the next one follow. Each step can be undone by pointing the façade back.

Microsoft also says when the pattern does not fit: when requests to the old system cannot be intercepted, when you cannot change its source code or database, or when the system is small enough that replacing it in one go is simpler.

AI, used safely

AI-assisted migration starts with tests, not code

AI tools now handle most of the mechanical work. Microsoft's GitHub Copilot upgrade agent moves .NET Framework projects of any version to .NET 8 or later, has a scenario for ASP.NET Web Forms to Blazor, and makes a Git commit for every portion of the work so each change can be rolled back. For PHP, Rector applies upgrade rules from PHP 5.3 up to 8.5.

The risk sits in behaviour that is written down nowhere, so we start with characterisation tests: tests that record what the system does today, including the quirks users rely on. AI drafts them, an engineer checks them against real cases, and from then on no change merges unless the tests stay green and an engineer has read it. Our PHP2Shell analysis shows what breaks in practice.

Continuity

Keeping the business running during the migration

Data

Data migration sets the timeline

Code converts quickly with today's tooling; data does not. An Access database or an old SQL Server environment holds duplicate customers, fields whose meaning drifted over the years, and rules that live only in a query written by a colleague who left.

We work in four steps. An inventory: which tables, who writes to them, which reports and integrations depend on them. Then the mapping from old to new, with a cleaning decision per field. Then trial migrations on a copy, repeated until the reconciliation holds: counts, totals and samples per table, signed off by someone from the business. Only then the final transfer, in an agreed freeze window.

When you replace in steps, old and new use the same data for a while. Microsoft notes that both systems must then reach that data at the same time; we settle that design before the first module goes live.

Who does what

Your ICT partner, your IT organisation and us

PhaseCrux DigitsYour ICT partnerYour organisation
AnalysisCode audit, test coverage, migration plan per applicationAccess to the code and servers, an overview of environments, runtime and server versionsAn owner per application, priorities and the budget
BuildRefactoring, new modules, characterisation tests, data migration scriptsTest and acceptance environments that match productionAcceptance tests, decisions on disputed business rules
Change and releaseA change request with impact and rollback planA slot in the change calendarApproval by the change advisory board
Go-liveRelease package, runbook, support during cutoverDeployment, servers, backups, monitoringSign-off for go-live
After go-liveHandover of code, tests and knowledgeHosting, patching, operationsApplication ownership
Hosting, patching, helpdeskNot us: we do not offer theseYesContract management
Ownership

Your code, your tests, no new dependency

Many legacy problems are ownership problems: the source sits with a supplier, the only developer has left, or nobody knows which version runs in production.

With us the code lives in your own repository from day one. You receive the test suite that proves the behaviour, the data migration scripts, a runbook your ICT partner can use to deploy and restore the application, and a record of the architecture decisions. No proprietary framework or platform licence of ours sits underneath, so another supplier or your own team can carry on without us.

Ask every supplier, us included: which repository holds the code, who has the rights, and can a third party build and deploy it from the handover alone?

Cost and timeline

Three fixed steps, per application

Audit and strategy, €2,500, one to two weeks: code, dependencies, test coverage and data reviewed, with advice per application (refactor, replace in steps, rebuild or retire) and a fixed price for the next step. If a standard package is the better choice, the advice says so. Production-ready MVP, €20,000, four to six weeks: the first module, or the upgrade of one bounded application, with characterisation tests, working on your own data. Production, from €50,000, eight to twelve weeks: the full migration, integrated, tested and handed over with all source code. Prices exclude VAT, and the audit is credited against the MVP if you continue within 60 days. One named engineer is your contact from start to finish.

All prices are on our pricing page, and how we build is on custom software development.

Examples

What this looks like by sector (examples)

FAQ

Frequently asked questions

What is legacy software?

Legacy software is software your organisation still needs but that has become hard to maintain: the runtime gets no security updates, the framework is outdated, or nobody knows the code any more. Age alone says little: a twenty-year-old system with tests can be healthier than a five-year-old application nobody dares to touch.

When is replacing better than modernising?

Replacing is better when the business rules in the code are no longer right, when a standard package supports the process just as well, or when the system is small enough to rebuild faster than to test. If the rules are still right and the problem is mainly the technology, modernising keeps the value that sits in the code. The audit gives reasoned advice per application.

What does legacy software modernisation cost?

At Crux Digits the audit costs €2,500, a Production-ready MVP €20,000 and a full production migration from €50,000, excluding VAT. The audit takes one to two weeks, the MVP four to six weeks and production eight to twelve weeks. The audit is credited against the MVP within 60 days. The final cost depends mostly on test coverage, data quality and integrations.

Can AI convert old code automatically?

Yes, for the mechanical part: AI tools and rule-based tools such as Rector and the GitHub Copilot upgrade agent convert most outdated code. What they do not decide is whether the result behaves the same. That is why characterisation tests come first, and why an engineer reads every change before it is merged into the codebase.

How do you migrate data without downtime?

By running trial migrations on a copy until the reconciliation holds and doing the final transfer in a short, agreed freeze window. When you replace in steps, data moves per module. The old system stays available as a fallback until the business has accepted the new module.

Does our ICT partner need to be involved?

Yes: your ICT partner keeps running the servers, deployments, backups and operations, while we work on the application. They give us a test environment; we give them a release package and a runbook. Crux Digits does not host or run a helpdesk; we work alongside your ICT partner, not instead of them.

Which application is first on your list?

Send us the application's name, its runtime version and who runs it. We tell you which route fits and what the audit would deliver.

Book a free consultation →