Inventory before intention
Legacy ESB estates almost always contain more flows than anyone believes. A thorough inventory — every flow, its producers and consumers, message volume, durability requirement, and last modification date — routinely reveals that a substantial minority of deployed flows carry no production traffic at all.
Retiring dead flows before migration is the cheapest work in the entire programme, and it shrinks the scope that everything else is measured against.
Classify by risk, not by ease
Group flows into three classes: mechanical lift-and-shift candidates, flows requiring redesign because they depend on platform-specific primitives, and flows encoding business logic that should be relocated out of the integration tier entirely.
The third class is where migration programmes overrun. Business logic embedded in transformation scripts over many years is rarely documented and often the only remaining specification of a critical rule. Budget discovery time for it explicitly rather than discovering it mid-cutover.
The strangler façade
Place a routing façade in front of the existing bus so consumers address a stable endpoint regardless of which platform serves the request. Migrate flows behind it one at a time, with the ability to route back on failure within a single deployment.
For a period both platforms run in parallel. Run them in shadow mode first — the new implementation processes production traffic and its output is compared against the legacy result without being delivered. Discrepancies surface before any customer sees them.
What changes operationally
Cloud-native integration changes the operational contract. Ephemeral compute means state must be externalised. Managed brokers have different ordering and delivery guarantees than the appliance they replace. Network egress becomes a metered cost that shapes design.
Re-derive service-level objectives against measured behaviour on the new platform rather than carrying over legacy numbers, and re-baseline the cost model early. Migrations that fail commercially usually did so because throughput-linked pricing was never modelled at production volume.
