Service · Software development

Modernising legacy software with strategy and execution.

Business-critical applications that are too old to extend easily, but too important to simply replace. We guide the entire migration: from portfolio analysis and 6R classification to strangler-fig rollout and handover of operations.

6R strategyStrangler figCloud migrationKnowledge transfer

Legacy is not the same as technical debt.

Technical debt is incremental mess: a refactor here and there, adding test coverage, upgrading dependencies. A legacy modernisation is an order of magnitude bigger. It concerns systems where the technology stack itself is the problem: a Delphi application whose original developer has been gone for years, an AS/400 with RPG code nobody dares to touch any more, a Classic ASP portal that no longer works with modern single sign-on, or an Oracle Forms environment that only runs on a specific version of Java, which is itself end-of-life.

The pain is familiar: every change is expensive, every extension feels risky, and the people who still truly understand the system are becoming increasingly scarce. At the same time, years of carefully built business logic is often embedded in it. That mustn't be lost in a migration, but the stack it runs on deserves a second life elsewhere.

We have been doing this work since companies first started planning their cloud migrations. We take a pragmatic approach: not every legacy application needs to be rebuilt. Some should simply be retired, while others can comfortably run for years after a rehost. The art lies in making the right choice for each application and planning the migration so that the business experiences as little disruption as possible. For incremental clean-up work within a single codebase, we recommend our page on resolving technical debt; for the hosting side, we suggest our page on having your platform migration carried out.

A modernisation involves two things that are often only addressed afterwards, at greater cost: measuring what the old system actually does before you begin, and establishing what is really in it, because with older software this is rarely documented anywhere any more.

Three levels of legacy modernisation.

The scope of a project depends on the number of applications, the dependencies between them, and the degree to which you still have a grip on the original code. In the first conversation, we advise which level suits your situation.

Single-app modernisation · fixed sprint budget

Tackling one critical application

A specific application that is holding the organisation back: a desktop Delphi tool, a Classic ASP portal, or an Access database that has outgrown itself. We rebuild it or replatform it, preserving the business logic that has accumulated over the years. For a single application, with clearly mapped dependencies.

Code reviewTest safety netRebuild or refactorOperational handover
Portfolio approach · multiple sprints

Portfolio modernisation with a 6R roadmap

You have a collection of older systems, often built up following an acquisition or years of organic growth. We inventory them, classify each system according to Gartner's 6 Rs (retire, retain, rehost, replatform, refactor, repurchase, rebuild, replace), and build a roadmap with priorities and sequencing. We then carry out the first tranches ourselves.

InventoryBAML matrixMigration roadmapStrangler fig
Multi-system programme · longer engagement

Programme modernisation with a compliance overlay

For organisations with multi-system legacy estates that are subject to compliance scrutiny: financial services under DORA, critical infrastructure under NIS2, and healthcare under NEN 7510. We act as orchestrator across multiple vendors, carry out the complex migrations ourselves, and ensure the audit trail and evidence grow alongside the programme from day one.

Orchestrator roleDORANIS2 / NEN 7510Multi-vendor

What a legacy engagement delivers.

Not just new software. You also gain the insight and the operational foundation to continue the modernisation yourselves afterwards.

  • Application inventory with TCO and business impactWhich systems are running, what they cost (licences, hosting, maintenance, developer hours), and how critical they are to the business, plotted in a Gartner BAML matrix.
  • 6R classification per applicationA reasoned choice for each system: retire, retain, rehost, replatform, refactor, repurchase, rebuild or replace.
  • Roadmap with sequencing and risk reduction firstWhich migration goes first (to remove risk), which can wait, and how dependencies dictate the order.
  • Modernised applications themselvesThe actual new or replatformed versions, production-ready, with staging and CI/CD. Hosted in the cloud (AWS / Azure / GCP) or on-premises.
  • Test safety net before code changesEnd-to-end tests on the old implementation, so that during a refactor or replatform we do not quietly lose business rules.
  • Knowledge transfer and runbooksDocumentation of the old business logic (often hidden knowledge), runbooks for the new system, and training for your operations team.
  • Maintenance contract (optional)Ongoing monitoring, patching and further development, with a fixed monthly fee. Or a full handover to your own team, the choice is yours.

When legacy modernisation is the right choice.

Below are some patterns we come across often. If you recognise one, this is probably worth a conversation.

Knowledge loss

The original developer has left

A system from the mid-1990s or early 2000s whose builder left long ago. There is no documentation, the code is interwoven with conventions nobody remembers, and every change feels like a gamble.

Stack graveyard

Too many different technologies

Common with ICT vendors or after a series of acquisitions: five, six or seven different tech stacks side by side, each known by only a few developers. Maintenance becomes unmanageable and integrations are fragile.

Compliance pressure

New legislation affects old systems

DORA, NIS2, the AI Act or NEN 7510 impose requirements on logging, security or data minimisation that your legacy stack cannot, or barely can, deliver. Patching no longer works; modernisation is the only route.

Cloud necessity

On-premises hardware reaching end of life

The physical server running your AS/400 or Oracle Forms application is approaching end of life. Replacing it is costly, yet there is no on-premises successor any more. Migrating to the cloud is the logical step.

M&A aftermath

An acquisition has left you with a second stack

You have bought a company and with it an entire application portfolio built on a completely different stack. Two silos running side by side is expensive, and consolidation calls for a modernisation plan.

Scaling ceiling

The old architecture no longer scales

A monolith running on a single server that cannot grow horizontally, a database that can no longer handle transaction volumes, or a desktop app unsuited to remote work. Scale calls for a new architecture.

The legacy categories we encounter.

No two legacy stacks are alike. Modernising a mainframe requires something entirely different from replatforming a Delphi application. The categories below cover most of what we see in the market.

Mainframe

z/OS, COBOL, JCL

Banks and insurers in particular still run core systems on mainframes. Modernisation often combines a phased extraction (rebuild or replace) with temporary façades, so modern channels can be developed before the mainframe is retired.

IBM i

AS/400 with RPG applications

Often ERP-like systems that have run stably for decades. Replatform to Linux or containers while preserving the data models, or rebuild gradually with the RPG application as the source of truth during the transition.

Desktop legacy

Delphi, VB6, .NET WinForms, MFC

Construction firms, manufacturers and ICT vendors often rely on sector-specific tools. We replatform these to the web or a modern desktop (modern .NET, Electron or native web apps), preserving the workflows users are familiar with.

Web legacy

Classic ASP, ColdFusion, PHP 4/5, Perl/CGI

Surprisingly many B2B portals still run on these. We modernise to Node.js, .NET, PHP 8 or a modern front-end stack, often with an API layer between old and new so that migration can proceed incrementally.

Database legacy

Access, Oracle Forms, SQL Server 2000

Usually smaller applications that have quietly become critical to the organisation. Migration to a modern back end with an API layer, often combined with a new web front end.

Cloud-naive

LAMP monoliths without containerisation

Not old in years, but outdated in architecture: not horizontally scalable, no CI/CD, no observability. Replatform to containers, infrastructure as code and modern deployment pipelines.

Gartner's 6 Rs, expanded to eight choices.

Gartner's 6R strategy is the industry standard for modernisation decisions. We use an expanded version with eight options, because reality sometimes simply calls for more nuance.

Retire

Decommission

Not every legacy system needs a successor. In a typical portfolio, a considerable share can simply be retired. That is not failure; it is clearing out. Whatever still needs to go, we archive in line with retention requirements.

Retain

Deliberately keep

The system is old but works well and sees little change. No action required. We do, however, monitor for risk (end-of-life of the stack, single-point-of-failure personnel) and schedule a review point in the roadmap.

Rehost

‘Lift and shift’ to the cloud

Moving the application from a physical server or VM to a cloud VM, without changing the code. Quick and inexpensive, but the old architecture remains. Useful as an interim step to remove hardware risk.

Replatform

Light adaptation for PaaS or containers

The code remains largely intact but moves to a container, PaaS database or managed service. Greater operational gain than rehosting, with limited code impact. Often the sweet spot for desktop and web legacy.

Refactor

Internal restructuring, same functionality

Modernising the code internally — modularising it, making it testable, replacing dependencies — without changing its behaviour. Important before a rebuild if a lot of undocumented logic remains.

Repurchase

Replacement with SaaS

Sometimes the old system does something the market already offers as standard SaaS (CRM, helpdesk, expense management). Replacing it with a commercial product is then more rational than building it yourself. We guide the selection and data migration.

Rebuild

Complete rebuild while keeping the scope

Building the application from scratch, with the same business functionality but a modern stack and architecture. For systems that are strategic and business-critical, and where refactoring is no longer cost-effective.

Replace

Replacement with something entirely new

Not only replacing the technology but also revisiting the scope. Sometimes an inventory reveals that the old system does what was needed in 2005, but the working process has since changed. In that case, we build not the old version but the new one.

Why bespoke development and not automated translation alone.

There are good automated translation tools for legacy systems: Modulus, Asysco AMT (COBOL to .NET), Heirloom for mainframes. We use them where they fit. However, in a number of scenarios pure automation falls short and bespoke development is the right route.

Business logic too specific

The translator does not understand the rules

Automated translation transforms syntax: COBOL code into C# code. But the real value of a legacy system often lies in unspoken business rules that have crept into the code over the years. Those rarely survive a one-shot translation.

Strategic nature

Too important for a tool-only approach

For applications where your competitive advantage lies, you want more than a one-to-one conversion. You want the modernisation to be an upgrade of what the application can do at the same time — and that calls for design, not translation.

Multi-system orchestration

No single tool covers the whole picture

In portfolio projects, several migrations run in parallel — each with its own tooling, its own supplier and its own risk. Someone has to orchestrate them. That is a role no tool can fill.

Compliance overlay

Audit trail from the outset

Healthcare with NEN 7510, finance with DORA, critical infrastructure with NIS2. An audit trail cannot be retrofitted afterwards — it must be built into the migration from the very first sprint.

Knowledge loss

Nobody can review the output any more

An automated translation produces something. But when the original developer has left and the current administrator has no idea how the old system worked, nobody can objectively judge whether the result is correct. We arrange that reverse engineering.

Integrated landscape

The application is connected to ten others

Translator X can migrate application A, but application A talks to B, C and D. Those integrations must move along with it. Bespoke development and orchestration are then cheaper than six separate migration projects running side by side.

How a legacy modernisation project works at our company.

1

Inventory and stakeholder mapping

We map every application: tech stack, hosting, users, integrations, licences, and maintenance costs. At the same time, we identify which business processes run on them and who owns them. It often becomes clear at this stage that 10 to 20 per cent of the portfolio can simply be retired.

2

TCO calculation and BAML matrix

For each application, we weigh Total Cost of Ownership against business impact. High-impact, high-cost systems are prioritised; low-impact, low-cost systems can stay as they are. The outcome is a visual matrix that leadership can use to steer decisions.

3

6R classification and roadmap

For each application, we select the right strategy from the extended 6R set (retire, retain, rehost, replatform, refactor, repurchase, rebuild, replace). We then sequence the work: which dependencies dictate the order, where risk-reduction wins come first, and how we spread the workload across your IT organisation.

4

Test safety net and evidence of behaviour

For systems we plan to refactor or rebuild, we first create a test safety net that captures how they currently behave. This includes automated end-to-end tests and, where necessary, screen recordings of existing user workflows. The aim is to prevent unwritten business rules from disappearing during migration.

5

Strangler fig migration

No big bang. We place a façade in front of the old system and migrate functionality piece by piece to the new stack. Users notice little change, and the organisation keeps working. Only once the last piece of functionality has been migrated do we switch off the old system.

6

Hosting migration and infrastructure as code

Where relevant, the new application moves to the cloud (AWS, Azure, GCP) or a container platform (Kubernetes, OpenShift). All infrastructure is defined in Terraform or Pulumi, deployments run through CI/CD, and monitoring uses OpenTelemetry. Staying on-premises is also an option; sometimes it is the right choice.

7

Operational handover and knowledge transfer

The final phase. We train your operations team, write runbooks for incidents and planned changes, and arrange knowledge transfer on the business logic we uncovered along the way. After that, you can choose: manage it yourselves, or we run it for a fixed monthly fee.

Frequently asked questions.

What clients typically want to know before starting a modernisation project.

What exactly counts as 'legacy'?
In practice, anything where modern development is structurally difficult. That could be mainframe COBOL, an AS/400 with RPG applications, desktop tools built in Delphi or VB6, web platforms in Classic ASP, ColdFusion or PHP 4/5, or database systems built around Access and Oracle Forms. Sometimes it is even a 'newer' stack, such as a LAMP monolith without containerisation. The core pattern is always the same: the technology stack makes change expensive or risky.
How does this differ from resolving technical debt?
Technical debt is incremental clean-up within a codebase that still makes modern choices in its own right: upgrading dependencies, adding tests, refactoring code. Legacy modernisation is an order of magnitude bigger: replacing, replatforming or fully rebuilding because the stack itself is the problem. For the incremental work within a single codebase, please see our technical debt page.
Big bang or strangler fig: what do you recommend?
Almost always the strangler fig. Big-bang migrations are popular on paper but dangerous in practice: one mistake and the entire business grinds to a halt. With the strangler fig, you migrate functionality piece by piece; users work in a hybrid environment where old and new components run side by side, and you can roll back at any point. It takes a little longer, but the risk is a fraction of the alternative.
How big is the risk when replacing a business-critical application?
The biggest risk is usually not the technology but hidden business logic: rules that are documented nowhere yet have sat in the code for years. That's why, before we start, we build a safety net of tests around the legacy implementation and, where useful, parallel-run scenarios in which old and new systems process the same input at the same time. This way, any discrepancy surfaces before the old version is switched off.
Cloud or on-premise after modernisation?
Both are possible. Cloud (AWS, Azure, GCP) is often the logical choice: faster rollout, better observability, easier scaling. However, where compliance requirements are strict (certain government domains, some financial workloads, healthcare environments with data residency requirements), on-premise or a sovereign cloud remains common. We advise on a per-application basis. For the cloud route itself, we have a separate page on platform migration.
Who writes the tests during a refactor?
We do. For a refactor, we first write tests against the existing implementation (based on behaviour, not implementation) so that during the migration we can objectively measure whether the new system does the same as the old one. We often uncover undocumented edge cases in the process, and we record these directly in test names so that the knowledge is preserved.
What determines the cost?
The number of applications, the extent to which business logic is documented (poorly documented logic takes more reverse-engineering), the number of integrations with other systems, and the compliance overlay. A single-application replatform is fundamentally different from a multi-system programme with a DORA overlay. We pin this down in the first conversation and give you a reasoned estimate.
How long does such a project take?
It depends heavily on scope. Replatforming a single desktop application to a web app can be done within a few sprints. A portfolio modernisation of ten to twenty applications is a multi-sprint project, sometimes delivered in tranches over a longer period so as not to overwhelm the IT organisation. We map out the planning at the roadmap stage.
Which compliance overlays do you encounter?
DORA (financial), NIS2 (critical infrastructure), NEN 7510 (healthcare), BIO (government), GDPR (always), and the AI Act when modernising to an AI stack. We make sure audit evidence grows along with the project from the outset, rather than a separate compliance phase afterwards, as that is usually when things get stuck.
Do you also work with our existing IT department?
Almost always. A legacy modernisation is not a celebration that an external supplier can host alone: your people know the business, the users and the history. We work as an extension of your team, carry out knowledge transfer continuously (not just at the end), and agree clear management responsibilities before handover. See also our IT modernisation consultancy if you would first like a second opinion.

Talk to us about your legacy portfolio.

A free, no-obligation 30-minute introductory call. Tell us which systems are holding you back, which legislation is coming your way and which part of your team still has a grip on the legacy stack. We'll come back with a first direction, and we'll be honest if it isn't the right fit for us. Would you like to look more broadly first? See also our page on platform modernisation consultancy or on building enterprise software.

Edit content