Skip to content
RUNVANCE

Service

Legacy Modernisation

Moving ageing applications onto a maintainable stack without stopping the business that runs on them.

What this service is

Legacy modernisation is bringing an existing, business-critical application onto a supported platform — by rewriting it, re-architecting it, or progressively replacing parts of it. The defining constraint is that the old system cannot simply be switched off, so the work has to proceed while it keeps running.

The problem

What usually brings people here

An unsupported platform

The framework, runtime or database version no longer receives security updates, and upgrading is blocked by the application itself.

Knowledge held by one person

One developer understands the system, there is no documentation, and that is now a business risk.

Change has become slow and risky

Small modifications take weeks and break things elsewhere, because there are no tests and no clear boundaries.

It cannot integrate

The system holds critical data but offers no API, so everything around it is manual.

Capabilities

What we do

  • Assessment of the existing codebase and data
  • Modernisation strategy and sequencing
  • Incremental migration behind a facade
  • Re-platforming to a supported stack
  • Data migration and schema redesign
  • Adding an API layer to a closed system
  • Test coverage around existing behaviour
  • Parallel running and phased cutover

Use cases

Typical engagements

Strangler-pattern replacement

New functionality is built alongside the old system and traffic moves across feature by feature, so there is no single high-risk cutover.

Re-platforming

The logic is sound but the runtime, framework or hosting is unsupported, and the application moves without changing behaviour.

Opening up a closed system

An API layer added in front of a legacy application so the rest of the business can integrate with it.

Delivery

How the work runs

  1. 01

    Discovery & requirements

    We map how the work actually flows today — the systems, the spreadsheets, the manual handoffs — and agree what success looks like in measurable terms.

  2. 02

    Solution architecture

    Data model, service boundaries, integration points and hosting. You get the shape of the system before anyone writes production code.

  3. 03

    UX & technical design

    Screens and flows for the people who will use it daily, reviewed against the architecture so the design is buildable as drawn.

  4. 04

    Development & integration

    Built in increments you can see and use. Integrations are wired early, because that is where most projects actually go wrong.

  5. 05

    Testing & quality assurance

    Automated tests around the logic that matters, plus migration rehearsals against real data shapes before anything goes near production.

  6. 06

    Deployment & onboarding

    Release pipeline, environment configuration, data migration and training for the teams who have to live with the system.

  7. 07

    Support & continuous improvement

    Monitoring, fixes and the next increment. Software that is used changes; the engagement allows for that.

Technology

What we build with

Backend & APIs

  • Java 21
  • Spring Boot 3
  • Spring Cloud Gateway
  • Spring Security
  • Python
  • REST & webhook APIs

Frontend

  • React 19
  • Next.js
  • TypeScript
  • Vite
  • Tailwind CSS

Data

  • PostgreSQL
  • MongoDB
  • Redis
  • Flyway
  • JPA
  • Database-per-service

Messaging & storage

  • Kafka / Redpanda
  • Event streaming
  • MinIO & object storage
  • Dead-letter queues

Cloud & DevOps

  • Azure
  • Docker & Compose
  • Kubernetes manifests
  • GitHub Actions CI
  • Static & container hosting

AI & automation

  • LLM integration
  • Retrieval over business data
  • Document extraction
  • Workflow orchestration
  • Local & cloud inference

Before you commit

What to weigh up

Full rewrites have a poor record: they take longer than planned and the old system keeps changing while you work. Incremental replacement is slower on paper and far more likely to finish. Before anything else, establish test coverage around current behaviour — otherwise you cannot tell a migration from a regression.

Questions

Frequently asked

Should we rewrite or refactor?
Refactor and replace incrementally where the logic is still correct and the problem is the platform. A rewrite only makes sense when the business process it encodes has genuinely changed, and even then it should be delivered in stages.
Can we modernise without downtime?
Usually. Running old and new side by side with traffic shifted gradually keeps the business operating, at the cost of a period where both must be maintained.
What if the original developers have gone?
That is common. We start by reading the code and the data, documenting actual behaviour, and putting tests around it before changing anything.
How do you reduce migration risk?
Characterisation tests on existing behaviour, rehearsed migrations against production-shaped data, parallel running with output comparison, and a cutover plan that can be reversed.

Talk to us about Legacy Modernisation

Tell us what you want to build, automate or improve, and we'll help you identify the right technical approach.