GUIDE INTEGRATION

Salesforce integration with ERP

Connecting Salesforce to an ERP requires more than synchronizing records. This guide explains how to choose integration patterns, assign data ownership, protect financial workflows, and operate reliable interfaces.

What Salesforce–ERP integration should accomplish

For organizations managing customer relationships in Salesforce and financial operations in an enterprise resource planning platform, salesforce integration with erp connects commercial intent with operational execution. Sales teams need reliable pricing, inventory, credit, and invoice visibility; finance and fulfillment teams need clean customer and order data without rekeying information.

The challenge is not simply moving records. Salesforce and ERP systems represent customers, products, transactions, and approvals differently. An integration must preserve those differences while making cross-system workflows predictable.

This guide focuses on Salesforce Sales Cloud and common ERP environments, including SAP S/4HANA, Oracle Fusion Cloud ERP, Microsoft Dynamics 365 Finance and Supply Chain Management, and NetSuite. The same principles apply elsewhere, but connector capabilities and business-object models vary.

Success means a business transaction completes correctly, remains auditable, and can recover from failure—not merely that an API request returns HTTP 200.

Define scope around business workflows

Start with outcomes rather than a requirement to “sync Salesforce and ERP.” That wording hides decisions about financial authority, timing, and exception handling.

Common integration workflows include:

  • Customer onboarding: Convert an approved Salesforce account into an ERP customer, including billing details, tax information, and payment terms.
  • Quote-to-order: Submit an accepted commercial agreement for ERP validation, order creation, and fulfillment.
  • Product and pricing visibility: Expose sellable products and applicable prices to Salesforce users.
  • Inventory availability: Retrieve availability for a product, location, quantity, and requested date.
  • Invoice and payment visibility: Show finance-controlled balances and payment status without allowing sales users to alter accounting records.
  • Order tracking: Return acceptance, shipment, cancellation, and fulfillment information to Salesforce.

For each workflow, specify an owner, triggering condition, completion criterion, and maximum acceptable delay.

For example, “Closed Won creates an ERP order” is usually incomplete. The real trigger may require an approved quote, signed contract, valid bill-to customer, confirmed currency, and successful credit check.

Measure outcomes such as order acceptance time, rejected transactions, reconciliation discrepancies, and manual interventions. Establish baselines from your own operations rather than relying on unsupported industry benchmarks.

Assign data ownership before choosing tools

A Salesforce Account is not necessarily equivalent to one ERP customer. A corporate group might have multiple legal entities, sold-to accounts, bill-to accounts, and ship-to locations.

Ownership should therefore be defined at both entity and field level.

Data domainCommon authoritySalesforce treatmentCritical design decision
Prospects and sales activitySalesforceCreate and update locallyWhen does a prospect become an ERP customer?
Legal customer and credit termsERP or master data platformDisplay controlled attributesWhich legal entity owns the relationship?
Products and units of measureERP or product information systemReplicate sellable subsetHow are variants and conversions represented?
Prices and discountsDepends on pricing architectureStore snapshots or request calculationsDoes Salesforce pricing match ERP validation?
Orders and fulfillmentERP after acceptanceSubmit requests and mirror statusWhen do amendments require approval?
Invoices and paymentsERPRead-only summaries or referencesWhat detail may each Salesforce user see?

Document transformations explicitly: currency codes, tax classifications, country values, units of measure, decimal precision, and status mappings.

Use stable identifiers. Store the ERP customer or order identifier in Salesforce, often in an External ID field, and retain Salesforce identifiers in the integration mapping or ERP reference fields.

Where identifiers are unique only within a company or tenant, use a composite key such as ERP tenant + legal entity + customer number.

Never match financial records primarily on company name or email address. Those attributes change and are not reliably unique.

Choose an architecture that matches the workflow

Direct API integration

Custom services can connect Salesforce APIs directly to ERP APIs.

This approach suits a narrow scope with a small number of stable interfaces and an engineering team prepared to own deployment, monitoring, and recovery.

Its apparent simplicity disappears when the implementation accumulates scheduling, transformation, credential management, retry handling, and reconciliation logic. Avoid embedding a large integration engine inside Salesforce Apex triggers.

Integration platform or middleware

MuleSoft Anypoint Platform, Boomi, Informatica Intelligent Data Management Cloud, SAP Integration Suite, and Azure Logic Apps are common options.

Evaluate them against concrete requirements:

  • Supported ERP version and required business objects.
  • Private-network or on-premises connectivity.
  • Durable queuing, replay, and dead-letter handling.
  • Deployment automation and environment isolation.
  • Transformation testing and schema versioning.
  • Connector, runtime, throughput, and support costs.
  • Availability of operational skills within your organization.

MuleSoft may fit a broader API-management strategy. SAP Integration Suite merits evaluation in SAP-centered estates. Azure Logic Apps can fit Microsoft-centric operations, while Boomi or Informatica may align with existing integration and data-management investments.

A connector reduces plumbing; it does not resolve business semantics. Verify support for the exact operation—such as posting an order with multiple lines—not merely connectivity to the vendor’s platform.

Event-driven, synchronous, or batch

Most production designs combine all three patterns.

PatternAppropriate useMain trade-off
Synchronous request–responsePricing, credit, or availability checksUser experience depends on downstream latency and uptime
Event-driven processingOrder submission and status propagationRequires duplicate handling and eventual-consistency design
Scheduled batchCatalog refreshes, initial loads, reconciliationData can remain stale between runs
On-demand retrievalInvoice detail or large historical datasetsAvoids replication but requires responsive, authorized access

Use synchronous calls when a user genuinely needs an immediate answer. Otherwise, accept the request durably and expose states such as Pending ERP validation, Accepted, and Action required.

Do not present a Salesforce save confirmation as proof that the ERP accepted the transaction.

Select the right Salesforce and ERP interfaces

Salesforce REST API supports record operations and queries. Composite resources can reduce network round trips, although their dependency and rollback behavior varies by resource.

Bulk API 2.0 is appropriate for large asynchronous loads and extracts. Change Data Capture can publish record changes for supported objects, while Platform Events can communicate explicitly designed business events.

Salesforce Pub/Sub API provides access to supported event streams. Consult the official Salesforce Pub/Sub API documentation for subscription behavior, replay considerations, and supported capabilities.

A key distinction is that a record change is not automatically a business command. An Account update does not necessarily authorize ERP customer creation. A purpose-built event such as CustomerProvisioningRequested can express intent more clearly.

On the ERP side:

  • SAP S/4HANA: Evaluate released OData or SOAP APIs, business events, and supported integration content. Available interfaces vary by edition and deployment.
  • Oracle Fusion Cloud ERP: Assess REST resources, supported bulk-import mechanisms, and Oracle Integration capabilities for the relevant module.
  • Dynamics 365: Distinguish Finance and Supply Chain Management from Business Central; their interfaces and entity models differ.
  • NetSuite: Compare SuiteTalk REST or SOAP services with RESTlets where supported standard interfaces do not meet the requirement.

For SAP, the SAP Business Accelerator Hub helps identify released APIs and integration packages.

Validate API entitlements, concurrency, payload limits, pagination, and throttling in the actual environments. Salesforce publishes API request limits and allocations, but capacity planning must also account for other applications sharing the org.

Implement the integration step by step

1. Map one complete transaction

Choose a bounded first workflow, such as submitting an approved Salesforce order and returning the ERP order number.

Map happy paths and exceptions: missing customer, inactive product, credit hold, invalid tax code, duplicate submission, cancellation, and partial fulfillment.

Identify which errors users can fix and which require integration or finance support.

2. Define contracts and acceptance rules

Specify required fields, data types, allowed values, ownership, and versioning.

An order request might contain:

  • Source system and unique request identifier.
  • Salesforce order reference.
  • ERP customer and legal-entity identifiers.
  • Currency, requested delivery date, and ship-to reference.
  • Product identifiers, quantities, units, and commercial terms.
  • Correlation identifier for end-to-end tracing.

Keep the contract focused on business meaning rather than copying every field from either application.

3. Build secure connectivity

Use dedicated integration identities with least-privilege permissions. Select an OAuth flow appropriate to unattended or user-delegated access and the capabilities of each endpoint.

Use Salesforce Named Credentials and External Credentials where applicable for outbound callouts. Keep secrets in an approved secrets manager, rotate them, and separate credentials across environments.

Confirm firewall rules, private connectivity requirements, certificate ownership, and data-residency constraints before implementation.

4. Establish reference data and initial mappings

Load prerequisite data before transactions. Customers, products, currencies, and units may need to exist before an order can be accepted.

Clean duplicates and establish cross-system identifiers. For migration or initial synchronization, define a cutover boundary so changes made during the load are subsequently captured rather than lost.

5. Implement durable delivery and idempotency

Assume messages can arrive more than once and acknowledgments can be lost.

Use a stable idempotency key for each business operation. Repeating CreateOrder with the same key should return or identify the existing result rather than create another order.

Where the ERP lacks native idempotency, combine an integration-side operation ledger with destination-side uniqueness or lookup controls. Address the crash window between successful ERP creation and recording that success.

Retry transient network failures and throttling with bounded exponential backoff. Route permanent validation errors for correction instead of retrying indefinitely.

6. Test business invariants and failures

Test more than field mappings:

  • Duplicate and out-of-order events.
  • Timeouts after the ERP has committed an order.
  • Multi-currency rounding and unit conversion.
  • Partial line rejection and fulfillment.
  • Expired credentials and rate limits.
  • Downtime exceeding available event retention.
  • Concurrent changes to shared attributes.

A useful invariant is: one accepted source order produces no more than one active ERP order, unless the design explicitly supports splitting.

7. Pilot, reconcile, and expand

Roll out by legal entity, region, or product line. Start with a controlled population and an agreed fallback procedure.

Compare source requests, integration outcomes, and destination records. Expand only after ownership, recovery procedures, and business acceptance are proven.

Operate for recovery, security, and cost

Monitoring should connect technical symptoms to business impact. Track queue age, failed orders, duplicate suppression, reconciliation gaps, and transactions awaiting human action.

Maintain a searchable operation record containing correlation IDs, source and destination identifiers, timestamps, status, and sanitized error details. Avoid logging full customer payloads or secrets.

Financial visibility also requires authorization design. Salesforce sharing rules do not automatically apply to external ERP responses; on-demand queries must enforce the requesting user’s permitted customers and legal entities.

For recovery, retain enough durable state to reprocess beyond a platform’s event-replay window. Schedule reconciliation even when event delivery appears healthy.

Budget for more than licenses:

  • ERP customization and connector extensions.
  • Salesforce storage and API consumption.
  • Middleware environments and message volume.
  • Automated tests and release coordination.
  • Support coverage and exception resolution.

Agree who handles a failed order after hours and who can authorize replay. An integration without operational ownership becomes a manual process disguised as automation.

Common mistakes to avoid

  • Bidirectional synchronization without ownership: Creates update loops and conflicting values. Assign field-level authority and suppress unnecessary echoes.
  • Replicating every ERP record: Increases storage, permissions, and synchronization burden. Copy only what workflows need.
  • Trusting connector coverage: Demonstrate required operations against your ERP edition and customizations.
  • Treating transport success as business acceptance: Capture ERP validation and posting outcomes separately.
  • Using Closed Won as an unconditional trigger: Enforce contractual and financial prerequisites.
  • Ignoring amendments: Define behavior for changed quantities, cancellations, returns, and credit notes.
  • Launching without reconciliation: Successful requests alone cannot prove end-to-end completeness.

For adjacent architecture and implementation guides, browse more Integration topics.

Frequently asked questions

Should Salesforce or the ERP be the system of record?

Assign authority by data domain and field. Salesforce commonly owns prospects and sales activity; ERP owns accounting, credit, and fulfillment. A master data platform may own customer identity. Avoid declaring either application authoritative for everything.

Can Salesforce integrate with an on-premises ERP?

Yes, provided supported interfaces and secure connectivity exist. Middleware may use an on-premises agent or controlled network connection. Avoid exposing broad ERP access publicly, and account for maintenance windows, firewall approvals, and certificate rotation.

Is real-time integration always better than batch?

No. Interactive pricing may require synchronous access, while a catalog can often tolerate scheduled refreshes. Event-driven order processing supports timely execution without holding the user interface open. Choose freshness targets based on business consequences, not architectural fashion.

How long does a Salesforce–ERP integration take?

A narrow, standard-connector pilot may take weeks; a multi-entity implementation with custom pricing, legacy interfaces, and financial controls can take months or longer. Estimate by workflow complexity, data readiness, testing obligations, and operational requirements—not simply the number of connected systems.

Have a question about this topic?

Ask the community and get answers from practitioners.

Start a discussion