Legacy modernization
Moving a system nobody fully understands, without stopping the business.
An old system is hard to replace because its behaviour is undocumented, and the business relies on some of that behaviour in ways nobody remembers. The main risk is finding out, at the switch to the new system, which hidden behaviour you did not reproduce.
Our approach
We read the whole system before changing any of it, which is one task AI tooling does well: a codebase that would take a person weeks to understand fully can be described in days. From that we build a behavioural test suite against the old system first, and treat it as the specification. The new system has to pass it before anything is switched over, and the two run in parallel with output comparison until they agree. Timeline we plan for: 8 to 16 weeks, depending on how much of the old system must be reproduced.
Other builds
Common questions
Why is legacy modernization risky even when the old code is simple?
The risk comes from behaviour that is undocumented, that the business relies on, and that nobody currently at the company remembers. The dangerous moment is the switch to the new system, when a hidden behaviour the old system happened to have goes missing from the new one and nobody notices until it affects a customer or a report.
How do you find undocumented behaviour before it causes a surprise at the switch?
We read the whole existing system before changing any of it, which is one task AI tooling handles well: a codebase that would take a person weeks to understand fully can be described in days. That reading finds the hidden behaviour the business relies on that nobody wrote into a process document, which is exactly the part a rewrite is most likely to lose.
What is a behavioural test suite and why build it against the old system first?
It is a set of tests that captures what the old system actually does, built by observing the running system rather than by reading its documentation, then treated as the specification the new system has to meet. Building it first, before the new system exists, means the replacement is being measured against real behaviour instead of against someone's memory of what the old system was supposed to do.
How do you confirm the new system is safe to switch to?
The new system has to pass the behavioural test suite before anything is switched over, and after that the old and new systems run in parallel with their outputs compared until they agree. That parallel-run period is what turns 'we believe it matches' into a measured fact, since disagreements show up as clear output differences rather than as a feeling that something might be wrong.
How long does a legacy modernization project usually take?
Eight to sixteen weeks depending on surface area is the range we scope to, not a measured average, since this describes an engagement pattern rather than a record of past projects. Surface area, meaning how much of the old system's behaviour actually needs to be reproduced, is the main factor, more than the age or size of the codebase on its own.
Does the business have to stop using the old system during the migration?
No, the point of running the old and new systems in parallel with output comparison is specifically to avoid a sudden stop. The business keeps using the system it already trusts while the new one is validated against real, live behaviour, and the switch happens once the comparison shows they agree rather than on a fixed calendar date.
What if nobody currently at the company understands the old system?
That is the normal starting condition for this kind of project, and it does not stop the project. Reading the system directly, rather than relying on what past staff remembered, which may no longer exist, is why we characterise the codebase from its actual behaviour first. The behavioural test suite becomes the durable record of what the system does, which the team did not have before.
Is a full rewrite always the right approach to legacy modernization?
Not necessarily, and that judgment happens during the read-the-whole-system phase before any rebuild decision is made. Some systems need a full replacement because the underlying platform is the problem; others need the logic the business relies on taken out and rebuilt, with the rest left alone. The behavioural test suite is useful either way, since it documents what has to be preserved regardless of how much is rewritten.