Legacy modernization cost: the honest answer
There is no list price, and you should be wary of anyone who offers one. Two systems of the same age and with the same number of screens can have very different costs, because what weighs the most is what is hidden underneath.
In practice, the cost is the result of how much effort it takes to understand the system, change what needs to change, and prove that it still works the same way. The third item is usually the most underestimated.
These are the eight factors that weigh the most in a software modernization budget. The next sections explain each one.
- Size and condition of the code: how much there is and how tangled it is.
- Documentation: whether there is any, and whether it still reflects what the system does.
- Tests: whether anything proves that one change did not break another.
- Integrations: how many systems, services, and devices it talks to.
- Database: structure, volume, data quality, and the rules stored inside it.
- Number of profiles and modules: each type of user and each area of the system multiplies rules and screens.
- Operational risk: how much the company grinds to a halt if the system goes down.
- Client's team: who knows the business rules and has time to validate.
Code, documentation, and tests: where the hidden effort lives
Code size matters, but condition matters more. A large, well-organized system with separated responsibilities is cheaper to modernize than a small system where business rules, data access, and the interface are mixed together in the same file.
Documentation determines how much time is spent just understanding the system. Without it, part of the work is archaeology: reading code, running the system, asking the people who use it, and discovering rules that no one remembered existed. That time goes into the cost, even when it does not appear in the proposal.
Tests are the most overlooked factor. Without automated tests, every change requires manual checking to make sure the old behavior was preserved. Building a minimal base of tests for the critical parts before touching anything is usually one of the best investments in the project, because it lowers the cost of every step that follows.
Integrations, database, profiles, and modules
Integrations are where estimates blow up the most. Each connection to another system, API, exchange file, or device has its own format, its own exceptions, and, almost always, someone on the other side who needs to take part. The most common mistake is counting an integration as a single item, without looking at what it actually carries.
The database weighs in for two reasons. First, data quality: duplicates, fields used for more than one purpose, and inconsistent old records make migration hard work. Second, hidden logic: stored procedures, triggers, and scheduled routines that run business rules without anyone remembering them.
Profiles and modules enter the calculation almost linearly. A system with a single type of user and a few modules is one problem. A system with administrator, operator, customer, and partner profiles, each with different permissions and screens, is several problems at once. That is why listing modules and profiles is the first step of any serious estimate.
Operational risk and the client's team
The more the company depends on the system every hour, the more care the modernization demands, and care costs money. A system that can be offline at night allows one kind of migration. A system that serves customers all day requires parallel execution, a rollback plan, and validation at every step.
The client's team also factors into the price, even if it does not show up as a cost line. If no one at the company knows the rules or has time to validate deliveries, the project moves slowly, goes back to fix misunderstandings, and costs more. An internal owner with decision-making power, even for just a few hours a week, visibly lowers that risk.
There is also dependence on individuals. If only one developer understands the system, the modernization has to start by capturing what that person knows. Doing this while they are still available is far cheaper than doing it later.
Modernize or keep things as they are: the math almost no one does
The comparison is usually done wrong: on one side, the cost of a project; on the other, zero. But keeping things as they are does not cost zero. It costs ever-slower maintenance, fixes that break other parts, difficulty hiring people who work with the old technology, and new features that take far longer than they should.
There is also risk, which does not show up on any payroll until it happens: dependencies without support or security patches, servers that no one knows how to recreate, and knowledge concentrated in one or two people. The cost of an outage or a security breach usually exceeds that of a planned modernization.
This does not mean modernizing always pays off. If the system is stable, has changed little in recent years, is unlikely to grow, and is cheap to maintain, leaving it as it is may be the right decision. We tell clients so when that is the case.
- Add up the time your team spends today on maintenance and fixes, including what is taken away from their main work.
- Estimate how long it takes to release a simple change and compare it with how long it would take in a well-organized system.
- List the people and components without which the system cannot be maintained.
- Ask what happens to the business if the system is down for a full day.
How the incremental approach spreads out the investment
Rewriting everything at once concentrates the spending in a single block and postpones the return until cutover day. If something goes wrong, the loss is big and the money has already been spent. At SKAD, we prefer to modernize in parts, without stopping operations: one module at a time, with the old and new systems coexisting during the transition.
In practice, the investment is split into stages with verifiable deliverables. You see the result of one stage before approving the next, can change priorities if the business changes, and find out early if the estimate was off. This does not necessarily make the project cheaper overall, but it makes the spending predictable and reversible. If you want to dig deeper into the decision between adjusting what exists and starting from scratch, read how to decide between refactoring and rewriting.
We also recommend starting with what hurts the most or what blocks everything else, not with what looks easiest. That way the first stage already reduces maintenance cost. Learn how we run this process in our approach to legacy system modernization.
What AI reduces in legacy system migration cost (and what it doesn't)
AI helps a lot with repetitive parts: reading and explaining unfamiliar code, generating a first draft of documentation, converting snippets from one structure to another, writing initial tests, and pointing out duplicated patterns. This kind of work used to consume many hours, and it is where effort drops most clearly.
What AI does not eliminate is human review. It makes mistakes with confidence, does not know your business rules, and cannot tell which strange behaviors of the old system are bugs and which are features users depend on. All generated code goes through an engineer's review and testing before going to production.
Be wary of promises that AI modernizes everything on its own for a fraction of the cost. What it does is redirect the team's time: less typing and manual conversion, more architecture decisions, validation, and care with integrations and data, which remain the most delicate points.
How to request a comparable software modernization diagnosis and quote
Start with the diagnosis. Before talking about price, a good proposal presupposes a look at the code, the database, the integrations, and how the system is used. When a quote arrives without any of this analysis, the number is just a guess dressed up as precision.
To compare proposals, ask every vendor for the same structure. Each one should include:
- Scope divided by modules or stages, with what is in and what is left out.
- Assumptions about code, database, integrations, and access to people who know the system.
- How the old system keeps running during the transition and what the rollback plan is.
- Testing strategy and criteria for considering each stage complete.
- The role of AI in the process and how human review is done.
- What happens after delivery: maintenance, support, and who is responsible for problems.
Common mistakes when requesting and evaluating quotes
The most common mistake we see is choosing the cheapest proposal without comparing assumptions. Two proposals with different prices are almost always quoting different scopes, and the difference comes back later as a change order.
Another mistake is demanding a fixed price for a system no one has analyzed. If the vendor accepts, they have either built the uncertainty into the price or will charge for it later. Splitting the work into a diagnosis and stages is usually more honest for both sides.
Finally, forgetting about maintenance. Modernizing and then being left without support recreates the problem within a few years. To better understand how each type of project is estimated, also see how much a custom system or app costs. And if you want to see the result before deciding, you can request a free prototype of what the new system would look like.
From our experience
At SKAD, we refactored the systems SyncStop, 4Car, KaraokeApp, The Bee App, and DEM (the latter for equipment inspection) with the support of AI. All were built in plain PHP with jQuery and Bootstrap, and the apps used Cordova.
Today these systems run on PHP 8.3 with Slim 4 for the API, React with Vite on the web, and React Native with Expo in the app. We kept the PHP language; what changed was the framework and the architecture. After the refactoring, maintaining these systems became lighter.
Frequently asked questions
How much does it cost to modernize a legacy system?
It depends on the size and condition of the code, documentation, tests, integrations, database, profiles, modules, and operational risk. Only a diagnosis of the system lets you estimate with any real criteria.
Is modernizing cheaper than rewriting from scratch?
Not always, but it is usually less risky, because the investment is split into stages and operations continue. When the code is so degraded that reusing it is not worth it, a rewrite may be the best choice.
Does AI lower the cost of modernization?
It reduces the effort in repetitive tasks, such as understanding code, documenting, converting snippets, and creating initial tests. Review, architecture decisions, and validation remain human work.
Can you modernize without stopping the business?
Yes, with the incremental approach. The old and new systems coexist while each module is migrated and validated, with a rollback plan at every stage.
What should I have ready before requesting a quote?
Access to the code and the database, a list of modules, profiles, and integrations, and someone who knows the business rules. If anything is missing, the diagnosis helps gather it.
Conclusion
Before asking for any price, gather what already exists: access to the code and the database, the list of modules, profiles, and integrations, and the name of someone who knows the business rules. With that in hand, the diagnosis goes quickly and the quote stops being a guess. If you want to start there, message SKAD on WhatsApp and ask for a diagnosis of your legacy system.