Skip to content
Engineering blueprint

Modernizing an operations platform without stopping the business

A staged path for an aging internal platform that runs scheduling, billing and reporting and cannot be switched off.

An operations business whose daily work runs on a custom platform built ten or more years ago.

Overview

How does CodeWorx approach modernizing an operations platform without stopping the business?

A staged path for an aging internal platform that runs scheduling, billing and reporting and cannot be switched off. The existing platform keeps running. A stable API sits in front of it, and modernized areas move behind that API one at a time.

  • Changes ship in smaller, safer releases instead of large risky ones
  • New tools connect through the API instead of exports
  • Knowledge of the business rules moves from people's heads into tests and documentation
  • The business keeps operating normally throughout

The starting point

The platform still does its job. Scheduling, billing and reporting all run through it every day.

It was built by a small team, most of whom have moved on. Changes take weeks because nobody is sure what they will break.

Newer tools the business wants to use cannot connect to it, so data moves by export and re-typing.

What gets in the way
  • A full rebuild would take a year or more and freeze improvements while it happens.
  • The business rules live in the code, not in documents, so they are easy to lose in a rewrite.
  • Releases are manual and infrequent, which makes every change feel risky.
  • The database is shared by every part of the system, so nothing can move on its own.
The approach

5 stages, each useful on its own.

  1. 01

    Map before changing

    Trace the workflows the business actually depends on, the data each one touches and where the system breaks most often. Agree what to keep, improve, replace or retire.

  2. 02

    Put a stable API in front

    Add an API layer over the existing system. New tools and new screens talk to the API, not to the old code or database, so the core can change underneath without breaking them.

  3. 03

    Make releases safe

    Add automated tests around the workflows that matter most, a staging environment and a repeatable release pipeline before moving anything.

  4. 04

    Move one area at a time

    Start with the area that hurts most, often scheduling. Rebuild it behind the API, run it alongside the old version, then switch. Billing and reporting follow in later stages.

  5. 05

    Retire what is no longer used

    Each stage ends by switching off the old part, so the legacy footprint shrinks instead of the business running two systems forever.

Illustration of a legacy order-entry screen connected through an API layer to new orders, dispatch and inventory views
The architecture

The existing platform keeps running. A stable API sits in front of it, and modernized areas move behind that API one at a time.

  • API layer that both old and new components sit behind
  • Modernized areas own their data and publish changes as events
  • Shared monitoring across old and new parts during the transition
  • Automated tests on the workflows the business depends on
Decision record

The calls that shape the outcome.

ADR 01

Why not rebuild?

The platform still creates value and its rules are proven. A rebuild would re-learn them the hard way and pause improvement for months.

ADR 02

Why the API first?

It is the step that makes every later step independent. Without it, each change still touches the whole system.

ADR 03

What would change the plan

If the underlying technology is out of support or cannot be secured, a faster replacement of that part comes first.

What this improves

Typical technology

Chosen for the problem, not fixed in advance.
  • Node.js
  • Laravel
  • PostgreSQL
  • Docker
  • AWS
  • Terraform
  • CI/CD

Facing a problem like this?

Tell us where your system is today. We will tell you which parts of this blueprint apply.

Your privacy choices

We use necessary storage to run this site. With your permission, we also use Google Analytics and Google Ads measurement to see how the site is used and which campaigns lead to enquiries. Nothing else runs until you choose. Privacy Policy Cookie Policy

Cookie preferences

Choose what this site may use. You can change this at any time from Cookie settings in the footer.

Necessary

Always active

Keeps the site working and secure, and stores the choice you make here (one first-party cookie). It cannot be switched off.

Analytics

Google Analytics measures visits and how pages are used, so we can improve the site. It sets Google cookies only when allowed.

Advertising

Google Ads measurement shows which ads lead to enquiries. Google may use the email or phone number you enter in a form, in hashed form, for this. It runs through the same Google tag as Analytics, so it can only be switched on together with Analytics.