The integration layer protects both sides

When several systems use different protocols, identifiers, currencies, error models, and release cycles, direct point-to-point calls create a mesh of assumptions. An integration layer earns its place by translating at explicit boundaries, preserving correlation, and preventing one vendor model from becoming everybody else’s domain model.

Canonical contracts reduce pairwise mapping

  • Define canonical messages around business intent, not the union of every vendor field.
  • Keep one adapter per external contract and version it independently.
  • Translate identifiers, units, currencies, dates, and error semantics deliberately.
  • Store correlation and audit metadata before asynchronous handoffs.
  • Use orchestration only when one workflow genuinely spans systems; do not centralize all domain logic.

An inbound command through adapters

External adapters map contracts into a canonical command. Orchestration owns cross-system sequencing, while each source system keeps its business ownership.

Diagram

Canonical integration hub without domain leakage

External adapters map contracts into a canonical command. Orchestration owns cross-system sequencing, while each source system keeps its business ownership.

Connecting ERP, payments, and a legacy core

Integration layers that become a new monolith

Boundary checklist

  • Name system-of-record ownership for each entity.
  • Version canonical commands and external adapters independently.
  • Persist workflow state and external references.
  • Define compensation or resume behavior per step.
  • Trace every call with a shared correlation identifier.