Salesforce + ERP is the most common enterprise integration. ERP holds the source of truth for accounts, products, orders, invoices; Salesforce drives sales and service.
Common data flows:
Inbound to Salesforce (from ERP):
- Account master data — Customer name, billing address, credit status.
- Product catalogue — SKUs, pricing.
- Inventory — stock levels (real-time or near-real-time).
- Order/Invoice history — for reps to see customer history.
Outbound from Salesforce (to ERP):
- Quote -> Order — when quote becomes order, push to ERP.
- New Account creation — Salesforce as system-of-engagement; ERP as system-of-record.
- Customer master updates — Salesforce changes flow back.
Architecture options:
1. Mulesoft as middleware. Salesforce <-> Mulesoft <-> SAP/Oracle. Mulesoft handles transformation, retry, error logging, schema differences. Most enterprise pattern.
2. Native ERP connectors. Salesforce ships connectors for some ERPs (older, less flexible).
3. iPaaS (Boomi, Informatica, MuleSoft). Cloud-based integration platforms. Less code than custom; more flexible than connectors.
4. Custom REST APIs on both sides. Salesforce calls SAP; SAP calls Salesforce. More work; full control.
5. Heroku Connect. For Salesforce <-> Postgres-based systems. Bidirectional sync. Specialised but powerful.
Pattern selection:
- Real-time inventory check during quote -> synchronous request-reply via Mulesoft.
- Daily catalogue sync -> batch via ETL or Mulesoft batch.
- Order push on Quote -> Order -> event-driven (Platform Event publishes; Mulesoft subscribes; pushes to ERP).
- Customer master sync -> CDC + bidirectional via middleware.
Key design decisions:
- System of record for each object. "Account name owned by ERP; Account industry owned by Salesforce" — explicit, no ambiguity.
- External Id field on Salesforce Account (
SAP_Customer_Id__c) for deterministic matching. - Conflict resolution — what wins when same field changes in both systems?
- Failure handling — retry policy, dead-letter queue, alerting.
- Performance — synchronous calls add latency; batch calls add staleness; pick deliberately.
Common pitfalls:
- Two-way sync without clear ownership — data ping-pongs.
- Synchronous calls for non-critical sync — slows UI for no benefit.
- No monitoring — failures go unnoticed for weeks.
- Underestimating data quality — ERP data has its own messiness; "garbage in, garbage out".
Senior consultants document the integration architecture as a separate diagram, with every flow's direction, frequency, transformation, and ownership marked.
