Skip to content
All work

Telco · Client · 2024 — now

Replacing a telco's order management while it keeps taking orders

I lead the teams replacing a legacy B2B ordering system with .NET microservices, one service line at a time, while the old system keeps running.

2
teams led, new platform and legacy
10+
engineers
0
disrupted live order flows

Context

A telecom operator takes its business orders on a legacy Conceptwave system. An order crosses many downstream systems, change windows are regulated, and the business can't stop selling while the platform under it is replaced. So the move happens one service line at a time, over several years, until the old system can be switched off.

I lead both teams: the one building the new platform, and the one keeping the legacy system running until then.

The path of an order

The new platform covers the whole flow, modeled on TM Forum's Open APIs.

Catalogwhat can be soldQuotepriced and validatedProduct orderssplit from the quoteProcessone per product orderService orderscreated by the processFulfilcallbacks and usertasks

An order, end to end

The platform

People

Order entry

User tasks

Catalog screens

Operations screens

Entry

API gateway

Services

Shared foundation

Order management

Product catalog

Business rules

Utility

Engines

Camunda 8 client

Kafka

PostgreSQL

Around it

Legacy system, synced both ways

Downstream systems, answering by callback

The new platform and what sits around itBuilt by me; the rest by the teams I lead

What I built myself

  • The foundation. The repository, the layout every service follows, the shared library for logging, cache invalidation and background jobs, the API gateway, and the .NET Aspire setup that runs the whole system on a laptop with one command.
  • Logging that doesn't slow requests down. Logs go to Kafka and are written to the database in batches.
  • Cache invalidation as an event. When a service changes cached data, every pod drops its copy.
  • A thin gateway. It routes to modules and nothing else. Authentication stayed where it was during the transition, so we didn't have to rebuild security before shipping anything.
  • The Camunda 8 client layer the platform uses for processes, messages, user tasks, incidents and deployments.
  • The user task framework: one pipeline and one form renderer for hundreds of human steps.

How we work

Both teams follow the same templates, code review, unit testing and quality standards, on the new platform and on the legacy side. I review the work and mentor the developers on both teams.

Outcome

Each service line moves on its own, with both systems running side by side until it does. Cut-overs have shipped on schedule without disrupting live orders, and every new service line starts from the same foundation instead of from scratch.

The parts

Try it