Skip to main content
Enterprise Systems

ERP integrations that survive the next vendor release

Every integration works on the day it ships. The ones still working two years later share four design decisions.

2 min readBy Sofia Almeida
Two people reviewing a system on a large office monitor
Cover image for ERP integrations that survive the next vendor release

Key takeaways

  • Own an anti-corruption layer so a vendor field rename cannot reach your domain model.
  • Make every write idempotent and every job replayable from a stored payload.
  • Alert on business outcomes, not on HTTP status codes.

What makes an ERP integration durable?

Four things: an anti-corruption layer that keeps vendor shapes out of your domain model, idempotent writes keyed on business identifiers, stored raw payloads so any window can be replayed, and alerting on business outcomes rather than transport errors.

Never let a vendor field name into your domain

The fastest way to make an integration fragile is to let the vendor payload flow straight through the application. When CustName becomes CustomerName in a minor release, the change lands in forty files.

One adapter, one mapping, one place to change. It looks like ceremony on day one and it is the reason the integration is still running after the third vendor upgrade.

Idempotency is what makes retries safe

Networks fail mid-write. Queues redeliver. Someone reruns yesterday's job. Any of those creates duplicate orders unless every write is keyed on a business identifier the ERP also understands.

With idempotency in place, the recovery procedure for most incidents becomes replay the window, which takes minutes. Without it, recovery is a reconciliation spreadsheet and a difficult conversation with finance.

The four decisions, and what each one buys

DecisionBuys you
Anti-corruption layerVendor changes stay a one-file edit
Idempotent writesSafe retries and safe replays
Stored raw payloadsReprocessing without asking the vendor
Outcome-based alertsAlerts people still read after a month

Reconcile on a schedule, not on suspicion

A nightly reconciliation that counts records on both sides and reports the delta is unglamorous and catches the slow divergence that no alert notices — the one record type that stopped syncing three weeks ago.

It is a day of work and it is the difference between finding a gap yourself and having a customer find it for you.

Version the contract you control

You cannot version the vendor's API, but you can version your own boundary. The adapter that translates their payload into your domain types is code you own, and treating it as a published contract inside your organisation changes how safely it can evolve.

In practice that means the mapping has tests built from real captured payloads, a changelog, and an owner. When the vendor ships a breaking change, the work is scoped to one module with a test suite that already describes the expected behaviour.

It also makes vendor migration thinkable. Two of the integrations we run have survived a change of upstream system entirely, because the application never knew which vendor it was talking to. That was not foresight about the specific change; it was the ordinary benefit of not letting someone else's schema into the domain.

FAQFAQ

Frequently asked questions

About the author

SA

Delivery Lead

Led 40+ enterprise platform migrations

Sofia runs delivery across engineering engagements — discovery, estimation, increments and handover. She writes about migrations, pricing models and the undocumented business logic that turns a clean estimate into an overrun.

  • Enterprise migrations
  • Project estimation
  • Delivery management
  • CRM and ERP systems
All articles by Sofia

Read next

More on the same problem, from the same team.

Want this built, not just read about?

Tell us the outcome you need. We reply within one business day with a plan, a timeline and a price.

ExploreKeep exploring

Related pages

Guides

Subscribe Newsletter

Practical playbooks on AI, product engineering, growth marketing and creator campaigns. One email a month, no filler.