Make ERP customer creation asynchronous
Protect the commercial workflow from ERP latency while making pending state and recovery explicit.
Independently created. Contains no employer or client implementation detail, internal names or figures.
01Context
A global B2B organization requires financial validation in ERP before the first order, but customer approval in CRM must remain usable during ERP maintenance or regional latency.
02Decision drivers
- D01
No false duplicate creation after timeout
- D02
Commercial users need a legible status
- D03
ERP remains authority for legal customer ID
- D04
Operations need replay and auditability
03Options considered
Synchronous API
Immediate, low-volume workflows
Cost: Couples UX to ERP availabilityManaged asynchronous command
Variable latency and recoverable operations
Cost: Requires explicit pending stateNightly batch
Non-urgent bulk onboarding
Cost: Poor process feedback04Decision
Publish an idempotent CustomerCreationRequested command after approval. The integration layer validates, submits to ERP, persists correlation state and returns outcome events to CRM.
05Consequences
- The CRM exposes Pending, Created and Intervention required states.
- Support owns a replay queue with reason codes; users never re-click creation blindly.
- Downstream order entry is gated on the canonical ERP identifier.
06Revisit when
ERP offers a highly available idempotent endpoint with deterministic response times.
The business accepts that approval and legal creation become one atomic user action.
07Where this decision is applied
Cases that take this decision, and why it matters there.
- Architecture case / 001Designing a CRM–ERP customer lifecycleA premise-led architecture for a fictional global B2B company: from commercial intent to legally valid, operationally recoverable customer.
- Systems case / 05Designing customer identity across CRM and ERPSeparating commercial, legal and transactional identity—and governing how they map, merge and retire across CRM and ERP.