Legacy system modernisation, one function at a time
The short answer: a legacy system is rarely best modernised by switching it off and switching a new one on. For most businesses a phased replacement works better: the new system takes over one function at a time while the old one keeps running until data and users have moved.
Plenty of businesses run on a system that was built many years ago. It still works, but nobody dares touch it. The original developer has left, the server runs a version that no longer gets security updates, and every new hire has to learn a list of shortcuts and workarounds. This page is about moving on without a big-bang cutover that stops operations for a week, and without paying to rebuild the same system with the same flaws.
When is it time to replace a legacy system?
Small changes take weeks because nobody knows the code and everyone is afraid to break something
The system runs on software or servers that no longer receive security updates
Staff keep data in spreadsheets on the side because the system cannot do what they need
It cannot talk to your newer tools, such as accounting, CRM or payments
Only one person knows how it works, and that person is retiring or has already left
Rebuild, refactor or wrap it with an API?
There are four basic routes. The choice depends less on the technology and more on how healthy the data model is, and how much of the business logic still fits the way you work today. A system with good data and bad screens needs very different treatment from one where the structure itself is wrong.
The four routes out of a legacy system, and when each makes sense.
Approach
Fits when
Risk
Refactor
The code is messy but the technology is still maintained
Low, but you end up with the same system, only tidier
Wrap with an API
The core works but must talk to new apps and integrations
Low to medium, the old core still has to be run
Phased replacement
The system has to go, but the business cannot stop
Medium, needs discipline on order and data
Full rebuild at once
The system is small, or the data model is fundamentally wrong
High, everything must work on cutover day
How the phased strangler approach works
Developers often call it the strangler pattern, named after a fig that grows around a tree until the tree can be removed. The new system is built next to the old one and takes over one bounded function at a time. Users experience a series of small switches instead of one large cutover day.
1
Map it
We go through screens, data and integrations and find the functions that hurt the most.
2
Layer in front
An API or a sync gives the new system access to the old data.
3
First module
The most valuable function is rebuilt and used by a small group first.
4
Move more
Module by module, users and data move while the old system shrinks.
5
Switch off
When nothing is written to the old system any more, it is archived and shut down.
Each phase ends with something in production before the next one starts.
Data migration: moving the data is not the hard part
Copying tables from one database to another is quick. What takes time is working out what the data actually means: fields named one thing and used for another, duplicate customers, statuses nobody can explain any more, and free-text fields holding half the business. That is why we always start with a trial migration on a copy of real data, long before any switch.
Decide what comes across and what only needs archiving
Clean up duplicates and dead statuses before the migration, not after
Run the migration several times as a script so it can be repeated on switch day
Let key users check samples: do they recognise their own customers and orders?
Can the old and new system run in parallel?
Yes, and it is often the safest way. For a period the new module writes data while the old system can still read it, or the other way round. It needs a clear rule on which system is the source of truth for each type of data, so nobody edits the same order in two places. Parallel running must have an end date. Otherwise you end up maintaining two systems instead of one.
Risks when replacing a legacy system
Risk
What happens
How we manage it
Hidden business logic
The old system did something nobody knew about
User interviews and a review of real data before design
Poor data quality
Errors are carried into the new system
Trial migration and clean-up before switching
Scope creep
Every wish gets added to the replacement
Fixed price per phase, new wishes priced separately
User resistance
People stay in the old system
Small switches, key users first and a shutdown date
How much does legacy modernisation cost?
It depends on how many modules need moving and how messy the data is. We do not have a list price for modernisation. You get a written fixed price per phase within 24 hours once we have seen the system. As a reference point, a bounded first module can be measured against our web app packages, which start at EUR 2,500 + EUR 85/month with 12 features and one integration. If you are unsure whether you need custom software at all, read custom software vs off-the-shelf first.
We have built portals that bring together data and workflows from several sources, including the IT support portal for Mannaz and customer portals for Grundfos iGRID. The new code is React, Next.js and TypeScript, and you own both code and data. Read more about how we build web apps.
We have worked with Ceptiv on several of our digital offerings, and they have become a natural part of the team. They move fast, turning ideas into new designs and clickable prototypes quickly, so we can test with customers early instead of debating on paper.
Szabolcs Nagy · Lead Global Product Manager, GrundfosRead the case→
When we started working with Ceptiv, Kirppu was one store in Herlev and a lot of ambition. We needed a booking system our renters could use without calling us, and we needed it fast. Ceptiv took charge of the whole experience, from the prototype and the design to testing it with real renters, and they were honest about what belonged in the first version and what could wait.
Claus Andreassen · CEO and co-owner, Kirppu Group ApSRead the case→
Bringing Ceptiv’s designer into our teams was one of the best decisions we made for the product. Core, Automate and Express 365 serve very different users, and Ceptiv gave them one clear design language that still feels at home in Microsoft 365.
We needed an IT support platform where our employees, participants and facilitators could find the answers on their own, and that is exactly what Ceptiv gave us. They took the time to understand how people actually use our systems and designed a platform that is simple to find your way around and easy for our IT team to keep up to date.
Working with Ceptiv was a real pleasure. Their designer quickly understood a very complex domain and turned our requirements into an interface that was clear, warm and easy to use for everyone, from parents to pedagogues.
Dina Raabjerg · Project Manager, Systematic A/SRead the case→
Ceptiv was a true partner on the new LEGO Service Portal. They brought the voice of our employees into every sprint through usability tests, journey mapping and workshops, and turned complex requirements into a portal that is simple and genuinely enjoyable to use.
Sadak Halil · Product Owner, The LEGO GroupRead the case→
Ceptiv understood from the first meeting what MiGrow is about: making it easy for companies to find a development project they genuinely care about. They turned our ideas into a clear concept, a sign-up flow that is quick to get through and a search that makes sense straight away.
Cathrine Bianca Christensen · Founder, MiGrowRead the case→
MyMannaz had to work for three very different groups of people, and Ceptiv understood that from the first workshop. They spent time with our coordinators, facilitators and participants, and turned what they learned into one simple app instead of three separate systems.
Ceptiv gave us a UI designer who became part of the Cura team from the very first sprint. He quickly understood a demanding domain, from Fælles Sprog III to the reality of a home care shift, and turned complex requirements into screens that are calm and clear for care staff under pressure.
Dina Raabjerg · Project Manager, Systematic A/SRead the case→
We came to Ceptiv with an idea and a clear ambition, and they took ownership of the whole journey, from the first sketch to a finished system. They created a brand we are proud of, designed every screen of the portal and built everything from scratch: the website, the panels for jobseekers and employers, the admin and the payouts.
Dado Bubalo & Joachim Hansen · Co-owner, JoberoRead the case→
Ceptiv understood from day one that we sell trust before we sell property. The new identity gives us a calm and solid expression that works just as well on a prospectus as on a construction site. Our investors noticed it straight away.
Lars Thomsen · Director & Partner, Imbro A/SRead the case→
We have worked with Ceptiv on our prospectuses for many years, and it has made a real difference. They gave us a standard design that makes a heavy legal document easy to read and nice to hold, and that we can reuse from project to project.
Should we rebuild from scratch or upgrade the old system?
If the technology is still maintained and the data model fits your business, refactoring or an API layer is often enough. If the platform is dead or the structure is wrong, rebuilding pays off, but in phases. We rarely recommend a complete rebuild in one go, because then everything has to work on the same day.
What is the strangler pattern?
It is a way of replacing a system gradually. The new system is built alongside the old one and takes over one function at a time, for example orders first, then invoicing, then reports. The old system shrinks until nothing is written to it any more, and then it is shut down. Users experience small switches rather than one big day.
Will we lose data in a migration?
Not if the migration is tested properly. We run it as a script on a copy of your real data several times before the switch, and key users check samples. Anything that does not belong in the new system is archived so you can still look up old records. The old system is only switched off once the data is confirmed.
How long does a modernisation take?
It depends on the number of modules and the quality of the data. The advantage of phases is that the first module can be live long before the whole project is done, so you get value along the way. The written plan gives you the order of phases, what each one delivers and a fixed price per phase.
Can the new system talk to our other tools?
Yes. That is often one of the main reasons to modernise. We have more than 40 pre-built integrations, including e-conomic, Dinero, MobilePay, HubSpot and Microsoft 365, and we connect to your own systems via API or sync. The old system can also be connected during the transition period.
Who owns the code after the modernisation?
You do. Everything we build is written from scratch in React, Next.js and TypeScript, and you own both code and data. That is one of the key differences from many legacy systems, where the knowledge and the code sit with one supplier. If you cancel, you take the code with you.
Describe your project and I will contact you as soon as possible, so we can schedule a no-obligation meeting. You leave with practical advice on how to get your project off to a good start.