A distributor had grown by bolting systems together as it needed them. The transport management system talked to the warehouse system, the warehouse system talked to the ERP, and each carrier had its own way of exchanging shipment and status files. Every connection had been built point-to-point, in a hurry, by whoever was available at the time.

The result was predictable. When a carrier changed an EDI layout or moved a field, shipping stopped until someone traced the break and patched the specific link. Because the same business event was reshaped slightly differently in every connection, a fix in one place often dislodged something in another. Master data made it worse: the ERP, the warehouse system and the carriers each identified the same item and the same shipment by different codes.

The challenges we had to solve

  • Point-to-point links meant a single carrier’s format change halted shipping rather than causing a contained fix.
  • The same events — order released, shipment dispatched, delivered, invoiced — were modelled inconsistently across connections.
  • Item and shipment identifiers diverged between ERP, WMS and carrier files, so reconciliation was manual.
  • Nobody had a single view of what had failed, so breaks were found when a customer complained.

How we approached it

We began by writing down the handful of business events that actually mattered and defining one internal representation for each — a canonical form the company owned, separate from any carrier’s EDI 856 or a TMS XML payload. The translation layer sits in the middle: each system and each carrier connects to it once, and a mapping turns their format into the canonical event and back out again. A format change now means editing one mapping, not unpicking a chain of links.

We did this without a big cutover, moving one connection at a time onto the layer and running it in parallel until each was proven. Alongside it we added a plain log of every message and every translation, so a failure shows where it happened and what the payload looked like. We documented each mapping and the canonical events in language the operations team could follow, so a future change does not depend on the person who first wrote it.

Where it stands

When a carrier announces a format change, it is now a scheduled task against one mapping rather than an emergency that holds up dispatch. Breaks surface in the log before customers notice them, and adding a new carrier is a known piece of work rather than an open question. The systems still do their own jobs; the difference is that the seams between them are now somewhere the team can see and reason about.

Talk to us about your project.

A short conversation is usually enough to tell whether we are the right fit for the work. We will be straight with you either way.