Legacy systems are rarely legacy because they are old. They are legacy because the business depends on them and no one is confident changing them. That dependence is exactly why replacing them all at once is so dangerous.
The alternative is less dramatic and far more reliable: modernise in slices, keep both worlds running while you do, and let evidence — not optimism — decide when the old system can finally be switched off.
Map the business before the code
Before touching the system, map what the business actually does with it: the processes, the reports, and the workarounds and spreadsheets that have grown up around it. The workarounds are often the most valuable discovery — they show where the current system has already failed its users.
Replace in slices
The strangler pattern places a new layer in front of the legacy system and moves capabilities across one at a time. Users see a single product; behind it, traffic shifts from old to new as each slice proves itself.
- Choose a slice with clear boundaries and visible value.
- Build it on the new platform, with the legacy path still available as a fallback.
- Route real traffic gradually, measure, then retire the old path.
Treat data migration as its own project
Moving data is where modernisation projects most often go wrong. Years of records carry inconsistent formats, duplicates and meaning that lives only in people's heads. Financial data raises the stakes further: every balance has to reconcile.
- Profile the source data early, before the target design is fixed.
- Make migrations repeatable and idempotent so they can be rehearsed many times.
- Reconcile automatically — record counts, totals and balances — and make the results visible to the business.
A migration is finished when the business trusts the numbers — not when the script completes.
Bring people along
New software changes how people work. Involving the people who use the system every day — early and often — surfaces requirements no document captures, and builds the confidence needed to let the old system go.
