Legacy System Migration Guide
A practical approach to modernising legacy systems without blowing up what already works. Strategies, data migration, and the mistakes that kill projects.
A practical approach to modernising legacy systems without blowing up what already works. Strategies, data migration, and the mistakes that kill projects.
Legacy systems survive because they work. They handle edge cases nobody documented, enforce business rules nobody remembers writing, and support workflows that the organisation has built around over years or decades.
The risk of migration isn't building the new thing. It's losing the accumulated knowledge embedded in the old thing. Hidden business logic, undocumented integrations, workarounds that became processes. Every migration project discovers these surprises, and the ones that succeed are the ones that planned for them.
There are three main approaches. Each trades off risk against speed.
Named after the fig tree that gradually wraps around and replaces its host. You build new functionality alongside the old system and route traffic to it incrementally. Over time, more and more of the old system gets replaced until there's nothing left.
Build the entire new system, then run both systems simultaneously for a period. Compare outputs to verify the new system behaves correctly before switching over.
Parallel runs are good for systems where correctness is critical and verifiable: financial systems, payroll, billing engines. You can compare the outputs of both systems and investigate any discrepancies before committing to the switch.
Parallel runs are expensive. You're paying for two full systems plus the effort to compare their outputs. For large, complex systems, the comparison itself can become a significant project.
Build the new system, pick a date, switch everything over at once.
Small systems with limited integrations. Simple applications where the risk of failure is manageable and rollback is straightforward.
Complex systems with many dependencies. If something goes wrong on cutover day and you can't roll back, you're in serious trouble. Big bang migrations fail more often than they succeed for complex systems, and the failures tend to be spectacular.
| Factor | Strangler Fig | Parallel Run | Big Bang |
|---|---|---|---|
| Risk | Low | Medium | High |
| Duration | Long | Medium | Short |
| Cost | Spread over time | High peak cost | Concentrated |
| Best for | Complex, critical systems | Financial/accuracy-critical | Simple, isolated systems |
| Rollback | Per module | Switch back to old | Difficult |
For most business-critical legacy systems, the strangler fig is the safest bet. It's slower, but the risk profile is dramatically better.
Data migration is where most legacy projects get into trouble. The application code is the part everyone focuses on. The data is the part that actually hurts.
For a medium-complexity business system, 6-18 months using the strangler fig approach. Simpler systems can be faster. Large enterprise migrations can take 2+ years. The biggest variable is data migration complexity, not the application code.
Yes. Sometimes the best approach is to wrap the legacy system with modern APIs, improve the front end, and fix the most painful pain points without replacing the core. This "modernise in place" approach works when the core system is fundamentally sound but the interface and integrations are outdated.
This is more common than you'd expect. Start with a code review and system audit. Document what the system does by observing its behaviour, not just reading the code. Interview users to understand how they actually use it. Budget extra time for discovery.
Not necessarily. The migration is an opportunity to choose appropriate technology for the next 10 years. But don't pick trendy tech for its own sake. Choose boring, well-supported tools that your team can maintain. See software architecture patterns for guidance on structuring the new system.
How to measure and build a case for paying down tech debt.
Broader strategies for modernising old software.
Architecture options for the new system.
Tell us what you're working on. We'll come back with a practical recommendation and clear next steps.