Legacy modernisation without a big-bang rewrite
Published 27 January 2026Updated 19 August 202610 min read
Modernise incrementally: put a facade in front of the legacy system, move one capability at a time behind an anti-corruption layer, run dual-write with reconciliation before switching reads, and cut over per capability with a rollback path. Big-bang rewrites fail because they require the business to stop changing while you catch up.
Why rewrites fail predictably
A rewrite competes with a system that already handles years of accumulated edge cases, while the business keeps requesting changes to the old one. The new system reaches parity late, if at all, and the parallel maintenance cost is what usually kills the programme.
Find the seams
- Route new traffic through a facade so callers stop depending on the legacy interface directly.
- Pick capabilities with clear data boundaries first, not the hardest module.
- Wrap legacy semantics in an anti-corruption layer so its data model does not leak into the new system.
Dual-write, reconcile, then switch reads
Write to both systems while reads still come from the legacy one, and reconcile continuously with drift reported per field. Only when drift holds at zero do you move reads. This sequence makes cutover a decision rather than an event.
Keep the rollback path live for a full business cycle — a month-end or quarter-end will surface behaviour no test suite covered.
Data migration is a product, not a script
Profile the legacy data first: duplicates, missing references, encoding artefacts, and values that violate their own documented constraints. Migration logic needs tests, repeatability, and a report of every record it could not migrate cleanly, with an owner for each exception class.
Frequently asked questions
What is the strangler-fig pattern?
An incremental modernisation approach where a facade routes traffic to a legacy system while capabilities are moved one at a time to a new system, until the legacy system carries no traffic and can be retired.
How long should dual-write run before switching reads?
Until reconciliation drift holds at zero across at least one full business cycle, including a month-end close. The measurement, not the calendar, decides.
Can legacy modernisation happen without downtime?
Usually yes, per capability, when dual-write and reconciliation precede the read switch and a rollback path stays available. Downtime is normally needed only for a small number of stateful cutovers.
ServiceNow integration patterns for engineering teams
Table API versus Scripted REST, incident bridging, CMDB alignment, SLA-safe state mapping, and loop suppression when connecting ServiceNow to engineering tooling.
iPaaS or custom integration? A decision framework, not a preference
When Zapier, Make, Workato, or a vendor connector is the right answer, when custom engineering pays for itself, and the total-cost factors most teams miss.
What a custom software integration actually costs — and why estimates vary so much
The cost drivers behind integration projects: object count, sync direction, data quality, auth model, volume, compliance, and the discovery work that prevents overruns.