Skip to content
Operations & Logistics · Anonymised — UK logistics operator · 2026

Replatforming a 12-year-old operations system without freezing the roadmap

Replaced a Rails monolith with a service-oriented platform over 14 months — zero downtime, ten new features shipped during the migration.

The situation

What was happening before we got involved.

A twelve-year-old Rails application that had outlasted three different rounds of "we'll rewrite it next year". Every operational change cost more than the last. The team that wrote it had moved on. Two recent attempts at a rewrite had stalled before reaching production. We were brought in not to write the rewrite, but to plan the smallest credible sequence of changes that would land it incrementally — without freezing the feature roadmap the business depended on.

What we did

The decisions we made, and why.

  1. 01

    Started with what was load-bearing

    Spent the first three weeks profiling, reading code, and talking to the people who used the system every day. Found that 80% of the operational pain came from three specific subsystems — and that the rest of the monolith was working fine.

  2. 02

    Sequenced the migration around revenue

    Built a roadmap where each phase landed something the business could measure. No phase was longer than six weeks. No phase was a rewrite for its own sake. The features the business had been asking for shipped alongside the migration, not after it.

  3. 03

    Strangler-fig over rewrite

    New services took over from the monolith one capability at a time, with a routing layer that let us shift traffic gradually. We never had a "switchover weekend" — because there was nothing to switch.

  4. 04

    Handed the work back as we went

    The in-house team paired with our engineers from week one. By month nine they were shipping in the new architecture without us. By month fourteen we were off the contract and on speed dial.

The outcome

What changed, in production.

The legacy monolith now handles only the parts of the business it was always best at. Three new services run the rest, scaled independently, owned by the in-house team. The customer-facing parts of the system did not go down once during the migration — measured against an SLA the business had been quietly worried about for years.

  • 0 minutes

    Customer-facing downtime

  • 10

    New features shipped during migration

  • 100%

    In-house ownership at handover

“They came in like senior peers, not a vendor. Within a week they were challenging assumptions our own team had stopped questioning — and the system they shipped is still the one we run on, two years later.”

Placeholder Name · Head of Engineering, Anonymised — UK logistics operator

Working on something similar? Let's talk.

Liverpool, UK. Available across the UK and remote.

What happens next...

Someone on the team usually replies within a working day.

  1. 01

    We read every message

    Usually within a working day. The first reply comes from a person on the team, not an autoresponder.

  2. 02

    If there's a fit, we set up a 30-minute call

    We listen, ask questions, and try to work out whether we're the right people for what you're building.

  3. 03

    If we can help, we send a written proposal within a week of the call

    An honest indicative range, a shape for the engagement, and the people we'd put on it.