Salesforce SAP Integration: Options, Data Flows and Pitfalls

In this article
- Most Salesforce SAP integrations follow one split: Salesforce owns the front office (leads, opportunities, quotes) and SAP owns the back office (customers, materials, prices, orders, invoices, credit). The integration moves data across that line in both directions.
- Four common ways to build it: SAP Integration Suite on SAP BTP (natural fit if you already run SAP’s cloud stack), MuleSoft with its SAP connector (natural fit for Salesforce-centric IT), Boomi, Workato or another iPaaS, or custom middleware over OData, BAPI/RFC and IDoc.
- Decide real time vs batch per flow, not for the whole project. Price and availability checks during quoting need real time; product catalogs and invoice history are fine in batches.
- A first phase (accounts, products, quote to order, order status) typically takes 3–6 months. If you are still on SAP ECC, design the integration so it survives the move to S/4HANA.
Jump to
- Who owns what: the front office and back office split
- What typically flows between Salesforce and SAP
- Integration options compared
- Real time vs batch: decide per flow
- How to set up a Salesforce SAP integration, step by step
- ECC end of maintenance and the move to S/4HANA
- Pitfalls and how to fix them
- Timeline and budget at a glance
- When a custom integration makes sense
- Go-live checklist
- Where Gilzor fits
Who owns what: the front office and back office split
In almost every company that runs both, Salesforce is where customers are won and SAP is where orders are fulfilled and paid. Reps live in Salesforce. Finance, supply chain and customer service live in SAP, whether that is SAP ECC or S/4HANA, on premise or in the cloud.
The integration exists so that reps stop asking the back office questions SAP already knows the answer to: "Is this customer on credit hold?", "What is the real price?", "Can we ship 400 units by the 15th?", "Did they pay the last invoice?". And so that back office staff stop retyping orders that reps already entered.
Before choosing any tool, write down the system of record for each kind of data. This table is the most common starting point:
| Data | Salesforce object | SAP object | Direction | System of record |
|---|---|---|---|---|
| Customers | Account | Customer master (ECC) or business partner with customer role (S/4HANA) | Both ways, with rules | SAP once the customer orders; Salesforce for prospects |
| Contacts | Contact | Contact person on the customer or business partner | Salesforce to SAP, often only those needed for orders | Salesforce |
| Ship-to and bill-to | Account (child accounts or custom object) | Partner functions (sold-to, ship-to, bill-to, payer) | SAP to Salesforce | SAP |
| Products | Product2 | Material or product master, by sales organization | SAP to Salesforce | SAP |
| Prices | Price book entries | Pricing conditions (list price, customer prices, discounts) | SAP to Salesforce, or live lookup | SAP |
| Quotes | Quote or CPQ quote | Quotation (optional) or order simulation | Salesforce to SAP for pricing | Salesforce |
| Orders | Order (or custom object) | Sales order | Salesforce to SAP to create, SAP to Salesforce for status | SAP after creation |
| Availability | Shown on quote or order, rarely stored | Available-to-promise (ATP) check | Live lookup | SAP |
| Deliveries | Custom object or fields on Order | Outbound delivery, shipment tracking | SAP to Salesforce | SAP |
| Invoices, open items | Custom object or external object | Billing documents, accounts receivable | SAP to Salesforce | SAP |
| Credit | Fields on Account | Credit limit, exposure, block status | SAP to Salesforce, or live lookup | SAP |
The rule of thumb: whatever SAP needs to ship, bill or collect, SAP owns. Salesforce may display it, but changes go back through SAP's own processes.
What typically flows between Salesforce and SAP
Most projects cover the same six flows, roughly in this order of value:
- Account to customer. When an opportunity is won (or a credit application approved), Salesforce asks SAP to create the customer or business partner. SAP returns its customer number, which is written back to the Account.
- Products and prices to Salesforce. Materials sold in each sales organization, with list prices, land in Salesforce products and price books on a schedule.
- Live price and availability. While a rep builds a quote, Salesforce calls SAP to simulate the order: net price after all conditions, tax, and an ATP date for each line.
- Quote to sales order. When the customer accepts, the order is created in SAP from the quote, and the SAP order number comes back.
- Order status, deliveries and invoices back to Salesforce. Reps and service agents see whether an order is open, partly delivered, shipped or billed without logging into SAP.
- Credit and payment visibility. Credit limit, current exposure, blocks and overdue invoices appear on the Account, so reps don't quote customers who can't be shipped to.
Integration options compared
There is no button in Salesforce Setup that connects it to SAP. Every real project uses a middleware layer, a custom service, or both. Salesforce Connect is the one exception for read-only views: it can show SAP data in Salesforce through OData without copying it. The main options:
| Option | How it connects to SAP | Best for | Cost level | Effort and limits |
|---|---|---|---|---|
| SAP Integration Suite (on SAP BTP) | SAP's own adapters (IDoc, RFC, OData, SOAP) plus a Salesforce adapter available in its catalog | Companies already on SAP BTP or moving to S/4HANA with RISE; SAP-led IT teams | Medium to high: BTP subscription plus build | Strong SAP content and API catalog. Salesforce side needs more custom mapping work than on Salesforce-centric tools. |
| MuleSoft Anypoint | SAP Connector (SAP-certified, uses SAP Java Connector for IDoc and BAPI/RFC), plus OData and SOAP options for S/4HANA | Salesforce-centric IT, API-led architecture, many systems beyond SAP | High: platform license, the SAP connector is licensed separately | Very capable for both sides. Needs MuleSoft skills; overkill for two systems and a few flows. |
| Boomi, Workato and other iPaaS | SAP connectors for RFC/BAPI and IDoc (Boomi for SAP adds a component inside SAP); S/4HANA OData connectors | Mid-size companies that want low-code flows and already use the platform | Medium: subscription by connectors or tasks | Fast for standard flows. Complex pricing or ATP calls still need careful design and SAP-side work. |
| Salesforce Connect (OData) | Reads SAP OData services (from SAP Gateway or S/4HANA) as external objects | Read-only views: order history, invoices, open items | Add-on license | No copies to sync, but data is fetched live, so slow SAP services mean slow pages. Limited for reporting and automation. |
| Custom middleware | Your own service calling OData, SOAP, BAPI/RFC, or receiving IDocs; Salesforce REST, Bulk and Pub/Sub APIs | Unusual logic, high volumes, or a strong in-house team; companies avoiding another platform license | Build cost up front, low run cost | Full control. You own monitoring, retries, upgrades and documentation. |
Third-party Salesforce adapters for SAP Integration Suite and SAP Process Orchestration also exist and are listed on SAP's partner pages. Many SAP shops still run SAP PI/PO; if yours does, factor its own end of maintenance into the decision rather than building new flows there. According to SAP, SAP Process Orchestration 7.5 follows the same timeline as SAP NetWeaver 7.5: mainstream maintenance ends at the end of 2027, with optional extended maintenance through 2030, and SAP points PI/PO customers to SAP Integration Suite as the successor.
Which option fits you
Six questions. The answer is a starting point for the conversation with your SAP and Salesforce teams, not a final architecture.
Which Salesforce SAP integration approach fits you?
Real time vs batch: decide per flow
"Real time everything" is the most expensive mistake on these projects. Real-time calls need SAP services that respond fast, under load, every time a rep clicks. Use them only where a rep or customer is waiting for the answer.
| Flow | Recommended timing | Why |
|---|---|---|
| Price and availability during quoting | Real time (synchronous call) | The rep needs the net price and a delivery date before sending the quote. A copy would be stale. |
| Credit status before an order | Real time, or near real time with a cached value | A blocked customer should be visible before the order is placed. |
| Quote to sales order | Near real time (event, seconds to minutes) | Fast enough for the rep, and an asynchronous queue survives SAP being briefly unavailable. |
| Customer creation | Near real time, often after an approval step | Master data teams often review new customers in SAP first. |
| Order status, deliveries | Near real time events, or every 15–60 minutes | Status changes matter, but nobody waits on a screen for them. |
| Products and list prices | Batch, daily or on change | They change rarely; full loads are easy to reconcile. |
| Invoices and payment history | Batch daily, or live view through Salesforce Connect | Mostly for reference; volumes can be large. |
How to set up a Salesforce SAP integration, step by step
The order below works for any of the platforms above. Steps 1–3 are where most of the real decisions happen.
- Map ownership and scopeFill in a table like the one at the top of this page with your SAP and Salesforce owners in the same room. For each flow, agree on the system of record, direction, timing and what happens on conflict. Cut phase one to the flows that remove the most retyping and phone calls.
- Clean and match master dataBefore anything syncs, match existing Salesforce Accounts to SAP customers and store the SAP number on the Account. Agree on which duplicates to merge, on which side. This step often takes longer than building the flows.
- Choose the SAP interfaces with your SAP teamFor each flow, pick the interface: standard OData or SOAP APIs where your release has them (S/4HANA), BAPIs over RFC (for example for order creation and order simulation), or IDocs for asynchronous messages such as order confirmations. On S/4HANA, prefer released APIs over custom ABAP to keep the core clean.
- Set up the integration user on each sideIn Salesforce, create a dedicated integration user. According to Salesforce's documentation, Enterprise, Performance and Unlimited editions include a small number of API-only Salesforce Integration user licenses; give that user a permission set with only the objects and fields it needs. In SAP, ask Basis for a technical user (system or communication user) with authorizations limited to the BAPIs and services in scope.
- Build the canonical model and mappingDefine one middle format for customer, product, order and status, and map each system to it. Map picklists and code lists explicitly: sales organization, distribution channel, division, plant, payment terms, Incoterms, units of measure, currencies.
- Build flows in value order, with logging from day oneStart with account to customer and products to Salesforce, then price and ATP simulation, then quote to order, then status back. Every message gets a correlation ID, a log entry and a place in an error queue if it fails.
- Test in a Salesforce sandbox against an SAP QA systemUse a full or partial copy sandbox connected to SAP QA, never production. Test the unhappy paths on purpose: customer on credit block, material not released for the sales org, SAP down during order creation, the same order sent twice.
- Load, reconcile, then go live in wavesRun initial loads, then reconcile counts and totals between systems (open orders, customer count by sales org). Go live with one region or business unit, watch the error queue daily for two to four weeks, then widen.
Built by Gilzor
Results we’ve shipped




Talk to the people who build it. Tell us about your project and get a free estimate of scope, timeline and cost.
ECC end of maintenance and the move to S/4HANA
If you are still on SAP ECC, the integration you build now will probably have to survive an ERP migration. According to SAP's published maintenance strategy, mainstream maintenance for SAP ERP 6.0 (enhancement packages 6–8) ends at the end of 2027, with optional extended maintenance through 2030 at an extra fee. SAP has also announced the SAP ERP, private edition, transition option: eligible RISE with SAP customers who move their ECC systems to SAP ERP, private edition, before the end of 2030 can keep running them from 2031 through 2033 while they finish the move to S/4HANA. Check your enhancement package and contract terms with SAP.
What changes for the integration when you move:
- Business partner replaces customer master. In S/4HANA, customers are business partners with a customer role. Account-to-customer flows built on ECC customer BAPIs or IDocs need rework.
- APIs change. S/4HANA offers released OData and SOAP APIs for many objects. S/4HANA Cloud, public edition, allows only released APIs, so integrations that depend on custom function modules or direct table reads will not carry over.
- Numbers may change. Migrations sometimes renumber customers or materials. Keep a cross-reference table in the middle layer so Salesforce does not depend on SAP's internal numbers alone.
- Both ERPs may run at once. During a phased migration, some regions sit on ECC and others on S/4HANA. A middleware layer can route each message to the right system; point-to-point code cannot.
Put a stable canonical model and a middleware layer between Salesforce and SAP. When SAP changes underneath, you rewrite the SAP-side adapters, and Salesforce, its flows and its reports stay as they are.
Pitfalls and how to fix them
- Two masters for customer data. Reps edit an address in Salesforce, the credit team edits it in SAP, and the sync overwrites one with the other. Fix: make SAP the owner of fields SAP needs to ship and bill; make those fields read-only in Salesforce once a customer number exists, and route change requests through a case or approval flow.
- Number range clashes. Teams try to create SAP customers with Salesforce IDs, or Salesforce reuses an SAP number from another sales org. Fix: let SAP assign its own numbers (internal number range), store them in an external ID field on the Account, and keep a cross-reference table for every object.
- Pricing logic copied into Salesforce. SAP pricing often combines many condition types, customer agreements, rebates and freight. A copy in Salesforce CPQ drifts within weeks, and quotes stop matching invoices. Fix: sync list prices for speed, and call SAP order simulation for the final net price before a quote is sent.
- Slow SAP calls freezing Salesforce pages. A live ATP or pricing call that takes several seconds feels broken to reps, and Salesforce limits how long callouts can run. Fix: call SAP only on an explicit button such as "Check price and availability", tune the SAP service with your Basis team, and cache results for a short time.
- Sync loops. An update from SAP changes the Account in Salesforce, which triggers an update back to SAP, and so on. Fix: ignore changes made by the integration user in outbound triggers, and send only fields that actually changed.
- Code list mismatches. Salesforce picklists say "Net 30", SAP says "Z030". New values are added on one side and orders start failing. Fix: keep the mapping table in the middleware, owned by one person, and alert on unmapped values instead of failing silently.
- Salesforce API limits. Bulk loads of products, prices and invoices can eat the org's daily API allocation and break other integrations. Fix: use the Bulk API for large loads, send changes instead of full loads, and monitor API usage.
- No error queue, no reconciliation. Failed messages vanish into logs and someone finds out from an angry customer. Fix: every failed message goes to a queue that a named person reviews daily, with a retry button. Run a weekly reconciliation report: open orders, customers and invoice totals compared across both systems.
- Data that should not sync. Full payment history, bank details, employee data from SAP HR, and every SAP customer ever created rarely belong in Salesforce. Fix: sync only what reps and service agents use, and show the rest live on demand.
Timeline and budget at a glance
These ranges are typical for mid-market and enterprise projects, not guarantees; SAP-side changes and data quality move them most. Platform licenses (BTP, MuleSoft, iPaaS) come on top of build cost. For how integration budgets break down, see our guides on API integration cost and data integration cost.
When a custom integration makes sense
A custom service between Salesforce and SAP is reasonable when you have only these two systems to connect, your logic does not fit a connector (for example complex configurable products or multi-plant ATP rules), or platform licenses would cost more over five years than building and running the service.
A solid custom build typically includes: a small service or set of functions hosted in your cloud, connections to SAP through OData, SOAP or the SAP Java Connector for BAPIs, Salesforce REST, Bulk and Pub/Sub APIs, a message queue for asynchronous flows, a cross-reference store, an error queue with a simple admin screen, alerts and runbooks. If you go this way, treat it as a product with an owner, not a one-off script. Our API development and custom software development pages describe how such builds are usually scoped.
For other Salesforce connections, from email and phone systems to other ERPs, start with the Salesforce integration guide. If you are comparing ERPs, the Salesforce NetSuite integration guide covers the mid-market alternative.
Go-live checklist
Tick what is already true for your project before the first real order flows through.
Salesforce SAP integration go-live
FAQ
How do I integrate Salesforce with SAP?
Does Salesforce have a native SAP connector?
Should I use MuleSoft or SAP Integration Suite for Salesforce and SAP?
How long does a Salesforce SAP integration take?
What happens to my Salesforce SAP integration when we move from ECC to S/4HANA?
Can Salesforce CPQ calculate SAP prices?
Where Gilzor fits
Gilzor builds and maintains Salesforce integrations. Our engineers can map the data flow between Salesforce and SAP, build the integration on your chosen platform or as a custom service, add the error queues and reconciliation reports, and support it after launch (see Salesforce integration services). Gilzor works from Poland and Cyprus, with a few shared hours a day with the US East Coast.
Tell us which SAP release you run, which platform you already license and which flows hurt the most. We'll help you map ownership, compare the integration options and scope a realistic first phase.
No sales pitch
Get a straight answer for your project
Tell us what you’re building. We’ll reply with options, a rough cost and timeline. If we’re not the right fit, we’ll say so.

Co-Founder of Gilzor. Works with founders and product companies on how to staff and run engineering: team extension, dedicated teams, and getting stalled projects moving again.
Gilzor · Web Development partner
Need a team for your web product?
Services
Web DevelopmentCustom websites and web apps — front-end, back-end, launch and support.→By company type
Selected projects






The team behind them





