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.

24 t
Written fixed price per phase
40+
Pre-built integrations
2016
Building software since

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.

ApproachFits whenRisk
RefactorThe code is messy but the technology is still maintainedLow, but you end up with the same system, only tidier
Wrap with an APIThe core works but must talk to new apps and integrationsLow to medium, the old core still has to be run
Phased replacementThe system has to go, but the business cannot stopMedium, needs discipline on order and data
Full rebuild at onceThe system is small, or the data model is fundamentally wrongHigh, 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

RiskWhat happensHow we manage it
Hidden business logicThe old system did something nobody knew aboutUser interviews and a review of real data before design
Poor data qualityErrors are carried into the new systemTrial migration and clean-up before switching
Scope creepEvery wish gets added to the replacementFixed price per phase, new wishes priced separately
User resistancePeople stay in the old systemSmall 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.

Selected work

Built by us, in production today

Leadership development · IT support portal

An IT support portal where Mannaz employees find the answer themselves.

What our clients say

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

FAQ

FAQ: legacy system modernisation

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.

Tell us what you need built

You get a written fixed-price proposal within 24 hours. No sales calls required.

Dennis Nielsen

Dennis Nielsen

Head of Operations, Ceptiv

Free consultation

One free hour of advice before you start.

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.

  • Free
  • 1 hour
  • No obligation