Architecture case / 001 · System architecture

Designing a CRM–ERP customer lifecycle.

A premise-led architecture for a fictional global B2B company—from commercial intent to a legally valid, operationally recoverable customer.

Fictional scenario

Independently created. Contains no employer or client implementation detail, internal names or figures.

01Executive brief

The integration is not the architecture.

A global B2B company wants CRM to “create customers in ERP.” The phrase hides three different identities, two approval boundaries and a failure state that can interrupt revenue.

Problem

Turn approved commercial intent into an orderable legal customer without duplicating identity or coupling users to ERP availability.

Key decision

Use an idempotent asynchronous command, with explicit pending and intervention states in CRM.

Governing principle

ERP controls legal creation. CRM owns the commercial lifecycle. The integration layer owns delivery state—not business truth.

The process side of this lifecycleCase 002 — Designing a global lead-to-customer operating model

02Premises & constraints

State what must be true before choosing.

The recommendation is valid only for this premise set. Change the premises and the answer should be allowed to change.

  1. 01
    Global operation

    Multiple subsidiaries share commercial accounts, but transact through distinct legal customer records.

  2. 02
    Financial control

    ERP validation is mandatory before an order; it may reject tax, credit or company-code data.

  3. 03
    Variable availability

    ERP has planned maintenance and non-deterministic response times across regions.

  4. 04
    Human accountability

    A commercial approver confirms readiness; operations owns unresolved integration exceptions.

Assumption to challenge
“ERP owns the customer.”

ERP owns legal and transactional customer identity. CRM can still own prospect identity, relationship context and commercial status. Authority is a matrix—not a trophy awarded to one system.

03Second-layer questions

What “create customer” leaves unsaid.

  1. Q01

    What exists before the ERP ID?

  2. Q02

    Can two subsidiaries share a party but not a customer number?

  3. Q03

    Does a timeout mean failure—or an unknown outcome?

  4. Q04

    Who may edit tax data after creation?

  5. Q05

    What blocks the first order while state is pending?

  6. Q06

    How does support replay without creating a duplicate?

  7. Q07

    What does the seller see when ERP is unavailable?

  8. Q08

    Which event makes analytics count an active customer?

04Identity & boundaries

One company. Three useful identities.

Commercial identity

Account

Relationship, pipeline and intent. Created early; CRM authority.

Legal identity

Party

Registered organization and tax identity. Validated before transacting.

Transactional identity

Customer

Company-code, sales-area and payment context. ERP authority.

Reference view / customer creation
Customer creation: commercial user approves in CRM; CRM sends a command to the integration layer, which creates the customer in ERP; outcome and status flow back; events reach the data platform.ApproveCommandCreateOutcomeStatusEventHUMANCommercial userCOMMERCIALCRMPLATFORMIntegration layerFINANCEERPDATAData platform

Hover or focus a system to see what it owns, what it does not, and which flows it takes part in.

Synchronous callManaged command or eventOwner label on every node

05Candidate architectures

Three designs can work. Only one fits these premises.

Candidate architecture comparison. Select an option to see its consequences.
Decision dimension
User waitBlocks on ERPApproval completesApproval completes
Failure recoveryUser retriesManaged replayNext batch
ConsistencyImmediateEventual + visibleDelayed
Operational loadLow initiallyExplicit queue ownershipReconciliation-heavy
Best fitStable, fast dependencyVariable global operationsLow urgency, bulk
If you chooseAsync command
It fits when

Variable latency across regions, and a process that can continue while legal creation completes.

Consequences
  • CRM must show Pending, Created and Intervention required as real states.
  • Support owns a replay queue with reason codes.
  • Order entry is gated on the canonical ERP number.

The asynchronous choice is not inherently “more modern.” It fits because business approval must remain responsive while legal creation is recoverable and independently observable.

06Recommended design

Acknowledge intent. Reconcile the outcome.

  1. 01Commercial approval
  2. 02Creation command
  3. 03ERP validation
  4. 04Outcome event
  5. 05Ready to order
  1. Freeze the creation payload.

    On approval, CRM creates an immutable request snapshot and an idempotency key scoped to the legal entity.

  2. Accept; do not pretend to finish.

    The integration boundary acknowledges durable receipt. CRM moves to Creation pending—no fake success.

  3. Resolve uncertain outcomes.

    Before retrying a timeout, query ERP by the external request key. A delayed success must never become a duplicate.

  4. Publish a business-readable outcome.

    Success carries canonical identifiers. Rejection carries stable reason codes and a repair owner—not a stack trace.

07Failure semantics

Design the recovery path before the happy path.

ScenarioSystem responseHuman experience
Validation rejectionRecord terminal reason; do not retryCorrect governed data and resubmit
Timeout / outcome unknownReconcile by request key before replayRemain pending; show last check
Transport unavailableBack off, retry, then dead-letterNo repeated action required
Duplicate candidatePause for deterministic match reviewOperations selects or rejects the match
CRM callback failureReplay the outcome idempotentlyERP ID appears after recovery
Non-negotiable

Never ask a user to resolve an uncertain distributed-system outcome by pressing “Create” again.

08Operating model

The support model is part of the design.

Commercial operations

Owns process readiness, approval policy and communication with sellers.

Master data / Finance

Owns legal validation rules, duplicate resolution and transactional attributes.

Platform operations

Owns transport health, replay controls, correlation and service-level telemetry.

Observe business state, not only infrastructure.

  • Requests pending beyond expected regional latency
  • Rejection rate by stable business reason
  • Unknown outcomes awaiting reconciliation
  • Manual intervention age and accountable team
  • Duplicate candidates and resolution time

09When I would choose differently

Architecture should move when the context moves.

Choose synchronous

If ERP provides deterministic, idempotent, highly available creation—and users cannot proceed meaningfully without its immediate result.

Choose batch

If creation has no same-day operational urgency, volumes are high, and the business already works in controlled master-data windows.

Move authority

If an enterprise master-data service becomes the governed issuer of party identity across CRM and ERP.

Transferable principleDo not model system availability as business truth. Model intent, progress and outcome separately.
Decision record · ADR 001Make ERP customer creation asynchronousDecision record · ADR 005Separate commercial identity from legal customer identitySystems & CRM Architecture · one of six casesControlled regional variation, multi-motion opportunities, customer identity, access and visibilityData & Integrations · five related casesGrain and commercial intelligence, KPI writeback, segmentation reconciliation, multi-currency evolution