
Legacy system modernisation means updating or replacing old software that still runs your business but has become costly, risky or hard to change. The main options are to retain, rehost, replatform, refactor, rebuild, replace with a packaged product or retire it. Most successful programmes move in phases, protect the business rules with tests, and keep a rollback plan rather than attempting one big switch.
Key takeaways
- A legacy system is not just old: it is one that is hard to change safely, hard to secure or hard to staff.
- Typical triggers are security exposure, rising cost of change, difficulty hiring and inability to integrate.
- Options range from doing nothing deliberately to a full rebuild, and the right choice is often a mix across different parts of the system.
- Assess before you decide: inventory the system, its dependencies, its data and the business rules buried in the code.
- Reduce risk with characterisation tests, parallel runs, phased migration and a clear rollback plan.
- Full rewrites often fail because the old system quietly does more than anyone remembers, so prefer incremental approaches where you can.
What makes a system legacy?
Age alone is not the problem. Plenty of old systems are stable and cheap to run. A system becomes legacy when one or more of these is true.
- Outdated technology: languages, frameworks or databases that are no longer widely used or taught.
- Unsupported components: operating systems, libraries or hardware that no longer receive security fixes.
- Key-person knowledge: only one or two people understand how it works, and documentation is thin.
- Brittle integrations: other systems depend on quirks, file formats or timing that nobody dares touch.
- Fear of change: every release is stressful, and small requests take weeks.
Our guide to technical debt for non-technical founders explains how this pressure builds up over time.
What are the signs that it is time to modernise?
Look for patterns in the business, not only in the code.
- Security risk: components that cannot be patched, or an inability to meet customer security questionnaires.
- Cost of change: simple features take far longer than they should, and defects keep returning.
- Hiring difficulty: developers with the right skills are scarce, expensive or unwilling to join.
- Integration limits: you cannot connect to modern payment, shipping, CRM or analytics tools without painful workarounds.
When several of these appear together, delay usually costs more than action.
What are the modernisation options in plain words?
Think of a menu, not a single path.
- Retain: keep it as it is, on purpose, with monitoring and a plan. Sensible for stable systems that are rarely changed and not exposed to risk.
- Rehost (lift and shift): move it to new infrastructure, such as the cloud, with little or no change to the software. Quick, and it reduces hardware risk, but it keeps the old design. Our cloud migration checklist covers the practical steps.
- Replatform: move it and make modest changes to benefit from a newer environment, for example switching to a managed database.
- Refactor: improve the internal structure of the code without changing what it does, so it becomes easier to maintain and extend.
- Rebuild: write a new system, using the old one as a reference for what must be preserved.
- Replace with SaaS or a packaged product: adopt an off-the-shelf tool and change your process where it differs. See build vs buy for how to weigh this.
- Retire: switch it off, because the function is no longer needed or is duplicated elsewhere. This is the cheapest option and is surprisingly common once you ask who actually uses the system.
The strangler approach
Rather than replace everything at once, you build new pieces alongside the old system and route more and more functions to them over time, until the old system has nothing left to do. It works well because each step is small, can be released and measured separately, and can be reversed if needed.
How do you assess the current system?
Good decisions come from an honest inventory.
- List the functions: what it does, for whom, and how often each part is used.
- Map the dependencies: other systems, scheduled jobs, spreadsheets, reports and manual processes that rely on it.
- Inspect the data: where it lives, its quality, its volume and its structure. See data migration between systems for the planning that follows.
- Find the hidden business rules: pricing exceptions, approval limits and special cases that exist only in code or in one person's head. Interview long-serving staff and read the code and the support history.
- Rate each area by business value, risk and effort.
How do you reduce risk during modernisation?
Characterisation tests
When tests do not exist, write tests that record what the system currently does for a range of inputs, right or wrong. If the new version behaves differently, you decide whether it is a bug or an intentional change.
Parallel runs
Run old and new systems side by side on the same inputs and compare the results, before switching real users. Differences reveal missing rules and edge cases early.
Phased migration
Move one customer group, region, product line or function at a time. Start with a low-risk slice to learn, then proceed.
Rollback plan
Decide in advance how to return to the old system if the new one misbehaves, including what happens to data created in the meantime. A rollback plan that has never been rehearsed is only a hope.
How do you keep the business running?
Modernisation happens while customers still order, staff still invoice and deadlines still arrive.
- Agree a lightweight process for urgent fixes to the old system and how they reach the new one, rather than freezing all changes.
- Monitor closely after each release. Our guide to monitoring and observability basics explains what to track.
How should you communicate with stakeholders?
Different groups worry about different things.
- Executives: want milestones, risks and decisions in business language.
- Staff: want to know what changes for them, when and how they will be trained.
- Customers and partners: want notice of anything that affects them, such as new integration details.
- The technical team: needs a clear scope and freedom to say when assumptions are failing.
How do you budget and plan realistically?
Be wary of confident precision at the start. Discovery almost always reveals hidden complexity, so treat early estimates as ranges and refine them as you learn. Fund an initial assessment before committing to the whole programme, split the work into stages with decision points, include time for data cleaning, testing, training and parallel running, keep a contingency and remember the cost of running old and new systems side by side for a while.
Our guide on software development estimates can help you read proposals critically.
Why do full rewrites often fail?
The big-bang rewrite is tempting: a clean start with modern tools. It often fails for predictable reasons.
- The old system contains years of fixes and special cases that were never written down, so the new one disappoints on day one.
- Nothing delivers value until the very end, which means risk is stacked in one launch.
A rewrite can still be right, for example when the system is small, well understood, or a poor fit for the business.
What should you ask a vendor?
- How will you discover and document hidden business rules before building?
- What is your approach: incremental, parallel or big bang, and why?
- What tests will protect existing behaviour?
- What do we receive at the end: code, documentation and access? Insist on a documented handover.
A simple decision framework
For each part of the system, work through these questions in order.
- Is it still needed? If not, retire it.
- Does a product already do this well enough? If yes, consider replacing it.
- Is it stable, secure and rarely changed? If yes, retain it, perhaps rehost it.
- Is the design sound but the environment old? Replatform.
- Is the design workable but the code hard to change? Refactor.
- Is the design itself the blocker? Rebuild, preferably incrementally with the strangler approach.
A worked example
Imagine a distribution company whose order system was written years ago by a developer who has since left. After taking inventory, it finds a quarter of the screens unused and a nightly job quietly applying special pricing for a few large customers. It retires the unused screens, rehosts the system on supported infrastructure and writes tests around pricing. Then it builds a new customer ordering portal that talks to the old system, followed by the stock module, replacing pieces until the old system can be switched off.
FAQ
What is legacy system modernisation?
It is the process of updating, restructuring or replacing older software so that it is secure, maintainable and able to support current business needs. Approaches range from moving it to new infrastructure to rebuilding or replacing it, usually in phases to limit risk.
How do I know if my system needs modernising?
Warning signs include unsupported components, security concerns, slow and costly changes, difficulty hiring people who know the technology, and an inability to connect with modern tools. If a single person holds most of the knowledge, that alone is a risk worth addressing.
Is it better to rewrite or refactor legacy software?
Refactoring or incremental replacement is usually safer because it delivers value in steps and preserves hidden business rules. A complete rewrite can work for small, well-understood systems, but large rewrites often run late and miss behaviour the old system provided.
What is the strangler pattern in software modernisation?
It is an approach where new components are built around an old system and take over its functions gradually, until the old system can be retired. Each step is small and reversible, which lowers risk compared with replacing everything at once.
Related reading
- Technical Debt Explained for Non-Technical Founders
- Data Migration Between Systems: A Safe, Step-by-Step Plan
- Build vs Buy Software: A Decision Framework for Owners
Next steps
Start with a short assessment: list what the system does, who depends on it, what is unsupported and where the knowledge lives. Then decide, function by function, whether to retain, replace or rebuild. If you would like an outside view or help planning a phased move, contact us and we can review your system with you.



