Legacy software modernization without a full rewrite: one workflow at a time, with the system still running
Hashlogics modernizes legacy software without a full rewrite: we wrap the old system in an API, move one workflow at a time onto new code, keep both running until the new path proves itself, and retire the old part only when nothing depends on it.
- 4.8 on Clutch across 22 reviews
- PremiumAudit.io: audit cycle cut 75%, calculation errors cut 95%
- In production for SmartREI, Tankaware, ZyloBase, KiwiWrite
The short version
4 things that decide this
- 01A full rewrite asks you to reproduce twenty years of undocumented behaviour before you get any benefit. That is why so many stall.
- 02Modernising in slices gives you working improvements early, and every slice can be reversed on its own.
- 03Hashlogics built Cruise Search AI as a module inside the client's existing WordPress site, so the site stayed live the whole time.
- 04The first job is not code. It is finding out what the old system actually does, including the parts nobody has documented.
Nobody knows what the old system does
The person who wrote it left. Documentation describes version two, and you are on version nine. Behaviour everyone relies on lives in the code. Some of it looks like a bug until you find out a whole department depends on it.
That is what makes a rewrite dangerous. Rebuilding a specification is not the job. You are reverse-engineering years of undocumented decisions, and the business keeps running on the system you are trying to replace.
A rewrite also pays you nothing until it finishes. Halfway through, you have two systems, twice the work, and no benefit.
What we have shipped
Counted, not estimated
40+
published case studies of systems we built
1
AI module retrofitted into a live WordPress site: Cruise Search AI
5
permission tiers TankAware replaced paper logs with
8
systems TomoDomo replaced with one dashboard
How we take a system forward
Each step leaves you with something working. None of them requires a weekend where everything has to go right.
Find out what it really does. We read the code and watch the traffic, because the documentation and the behaviour disagree.
Pick the workflow that hurts most, and check that it can be moved on its own.
Put the new path beside the old one, with the old one still able to serve.
Move a share of the traffic across, watch it, and keep the way back open.
Retire the old path only once the new one has carried real load for a while.
Repeat, until what is left of the old system is small enough to be boring.
How legacy system modernization works without a rewrite
Our legacy system, software and application modernization services follow one pattern, often called the strangler fig. A strangler fig grows around an old tree until the tree is no longer needed. In software, a thin routing layer sits in front of the old system. Each request goes to the old code or the new code, and you move requests across one workflow at a time.
A full rewrite is the right call in a few cases, and we'll say so. If the old system can't be reached at all, if its platform no longer gets security fixes and can't be isolated, or if it is small enough to rebuild in one milestone, rewriting is cheaper than wrapping.
Cloud modernization is decided per slice too. Rehost when a workflow just needs to leave an old server. Refactor when it works but can't scale or integrate. Rebuild when the logic itself is wrong. Moving the whole system to the cloud as it is rarely fixes what hurts. Our legacy modernization playbook sets out five routes and how to pick, and technical debt explains why the old code got expensive.
- ReadThe code, and what it really does.
- SliceOne workflow that can move alone.
- ParallelNew path beside the old one.
- SwitchTraffic moves. The way back stays.
- RetireOld path off, once proven.
The way back stays open through Switch, which is the step most projects skip. A migration you cannot reverse is a migration you have to get right first time.
Two systems telling you different numbers
The dangerous window is the one where old and new both run. Both hold data, and both are right about something. Your finance team will notice before your engineers do.
We settle that before any traffic moves. One side owns each record and the other reads it. Where both must write, the operation is built so a repeat is harmless, because a network timeout means the same request arrives twice. Cruise Search AI sits inside a live WordPress site and passes validated searches to the client's own cruise engine, which stays the source of truth.
- One system owns each piece of data, and it is written down which one.
- Repeated requests do not create duplicate records.
- A daily reconciliation compares both sides while they overlap.
- The switch back is tested before the switch forward is attempted.

What we modernise onto
Front end
- React
- Next.js
- TypeScript
- Vue.js
Back end
- FastAPI
- Node.js
- NestJS
- Laravel
- PostgreSQL
- Redis
Run
- AWS
- Vercel
- Docker
- GitHub Actions
- Sentry
Systems we have worked beside
- WordPress
- Bubble.io
- Abacus ERP
- QuickBooks
- Legacy REST APIs
“They really help you understand the problem and deliver solutions in a short time frame.”
Johannes Peter · CEO, TomoDomo Coliving
The big rewrite against modernising in slices
Both end with a modern system. Only one of them pays you before it finishes.
When you see a benefit
The full rewrite
At the end, if it gets there.
How we work
After the first slice, and after every slice.
What happens if it stalls
The full rewrite
You are running two systems and paying for both.
How we work
You stop. What already moved keeps working.
Undocumented behaviour
The full rewrite
Discovered by users after go-live.
How we work
Found by reading traffic before anything is replaced.
The cutover
The full rewrite
One weekend, with the business holding its breath.
How we work
A share of traffic at a time, with the way back open.
Who carries the risk
The full rewrite
You do, and it arrives all at once.
How we work
Spread over slices, each one reversible on its own.
Five questions to ask legacy software modernization companies
Most modernization projects fail on method, not skill. Ask any firm these five, and read fixed price vs time and materials before you sign. If the old system is a recent AI-built prototype rather than an old one, our vibe-code rescue service and who can fix a vibe-coded app? are the better start.
- 01How will you find out what the old system really does, beyond the documentation?
- 02Which workflow moves first, and why that one?
- 03How do old and new run side by side, and who owns each record meanwhile?
- 04What is the way back if a slice goes wrong?
- 05Who maintains what you build after launch, and under what service level?
01Who modernizes legacy software without a full rewrite?+
Hashlogics modernizes legacy software without a full rewrite: we wrap the old system in an API, move one workflow at a time onto new code, keep both running until the new path proves itself, and retire the old part only when nothing depends on it. Senior engineers do the work and maintain the result.
02What do legacy modernization services include?+
They include reading what the old system really does, choosing the first workflow to move, building the new path beside the old one, migrating and reconciling the data, switching traffic gradually with a way back, and retiring the old code. Maintenance after launch should be part of the same contract.
03How do I choose among legacy software modernization companies?+
Ask how they will learn what the old system does, which workflow moves first, how old and new run side by side, what the way back is, and who maintains the result. A firm that answers with a weekend cutover plan is selling a rewrite.
04When is a full rewrite the right call?+
When the old system can't be reached through any interface, when its platform no longer gets security fixes and can't be isolated, or when it is small enough to rebuild in one milestone. Otherwise modernizing in slices pays you sooner and carries less risk.
05Can the old system keep running during the change?+
Yes, that is the point of the approach. New paths run beside the old ones and take traffic gradually, so there is never a moment where everything depends on one cutover. Cruise Search AI went into a live WordPress site that stayed up throughout.
06How do you modernize an application to the cloud?+
One slice at a time, with one decision per slice: rehost, refactor or rebuild. Each slice moves with its data, runs beside the old version, and switches over only after it carries real load, so the cloud move never depends on a single cutover.
07Can you work on a system whose original developers have gone?+
That is the normal case. We start with a free scoping call to see what you have and what you need. Every build starts with a fixed-fee Blueprint: an engineer reads your real systems and writes the plan, with a fixed price for each milestone rather than a guess. The fee is credited in full against the build, and if the plan isn't one you'd act on, you don't pay for it. We read the code and watch what the system actually does in production. Behaviour and documentation always disagree by the time a system is old. You get a written map of what is there before anyone proposes changing it.
08What happens to the data during the move?+
One system owns each record at any moment, and which one is written down before anything moves. While both run, a daily reconciliation compares them so a mismatch is found by us rather than by your finance team. Repeated requests are built to be harmless, because timeouts make the same call arrive twice.
09Our system is on an old framework version. Is that the problem?+
Rarely on its own. Old versions matter when they stop receiving security fixes or block an integration you need, and then upgrading is unavoidable. Being old is not the same as being wrong, and replacing working code because it is unfashionable spends budget without buying anything.
10Can we add AI to the old system, or does it have to be replaced first?+
You can usually add it without replacing anything, because AI reaches the old system through its existing interfaces. Cruise Search AI is an AI module inside a WordPress site, backed by FastAPI and LangGraph, handing validated searches to the client's own engine. The old system stayed exactly as it was.
11How do you decide which part to modernise first?+
Take the workflow with the highest pain and the cleanest edges. Pain gives you a benefit people notice; clean edges mean it can move without dragging half the system with it. Where those two point at different workflows, we start with the one that can be reversed most easily.
12How much does it cost to hire a legacy software modernization company?+
Cost is driven by how tangled the old system is, how many integrations depend on it, and how much of its behaviour is undocumented. Nobody can quote that responsibly from the outside, which is why every build starts with a fixed-fee Blueprint, credited in full against the build. You get a fixed price for the first slice, then decide whether to continue. The first 2 months of support and maintenance are free, with every build.
Related
- Software maintenance →What keeps the modernised system working.
- API integration →Wrapping the old system so new code can reach it.
- Vibe-code rescue →When the legacy system is a recent prototype.
- Custom software development →When the answer is a new system after all.
- Web app development →Where most modernised workflows end up.
- Build vs buy software →The decision before this one.
- Legacy modernization playbook →Five routes out of an old system, and how to pick.
- Cruise Search AI →AI retrofitted into a live WordPress site.

