An accounting services firm ran its core operations on a system written in-house more than a decade earlier. It still worked, but it had become brittle: the original developers had moved on, small changes carried outsized risk, and a short list of features could only be touched by one or two people who remembered how the internals fit together. Everyone agreed it needed replacing. Nobody wanted to be responsible for a full rewrite that switched everything over on one nerve-wracking weekend.

The firm could not stop. The system processed client work every business day, and a big-bang cutover that stalled halfway would have put live client commitments at risk. That fear had kept the project on a shelf for years, which only made the system more fragile.

The challenges we had to solve

  • The business depended on the system every working day, so it had to stay live throughout the change.
  • Knowledge of the internals had thinned to a couple of people, so the behaviour was not fully documented anywhere.
  • A failed big-bang cutover was the outcome everyone feared, so each step needed a way back.
  • The old and new parts had to coexist and agree while the migration was in flight.

How we approached it

We replaced the system gradually rather than all at once. We put a routing layer in front of it so that, from the users’ point of view, nothing moved, while behind that layer we could send a given function to the old system or to its replacement. We picked the natural seams in the system first — the parts that were loosely coupled and safe to lift out — built modern versions of them, ran them beside the originals until the results matched, and only then switched traffic across. Each step was small and could be rolled back on its own.

Recovering behaviour that lived only in the old code was a real part of the work. We read it carefully, checked our understanding with the people who knew it, and wrote down the rules as we went, so the new system was documented in a way the old one never had been. Throughout, the firm kept serving clients on a system that was always in production and always observable, with no weekend that everyone dreaded.

Where it stands

The legacy system has been retired piece by piece, with the business running normally the whole time. The firm now stands on something current that more than one person understands, and the changes that used to be frightening are routine. Just as important, the move never required the firm to bet a weekend, or a client deadline, on everything switching over at once.

Talk to us about your project.

A short conversation is usually enough to tell whether we are the right fit for the work. We will be straight with you either way.