Data Flow Architecture Between SAP and Salesforce for Enterprise Programs

Data Flow Architecture Between SAP and Salesforce for Enterprise Programs

Home > Blog > Salesforce
Thiago Terzi March 24, 2026

Share Now |

“Integrate SAP and Salesforce” usually fails as a single requirement because it bundles several different problems: user-facing lookups, operational synchronization, process handoffs, and enterprise reporting. Salesforce’s Integration Patterns guidance separates process integration, data integration, and virtual integration, and it defines timing as either synchronous request/response or asynchronous, message-driven patterns.

Salesforce’s data integration decision guide makes the same point from a tool-selection angle. It says there are many ways to access, synchronize, and share data between Salesforce and external systems, but “not every tool is right” for every use case. It also lists the decision dimensions you need early: directionality, timing, and user experience, required replication, data volume, maintainability, and exception handling expectations such as retry, notify, or fail.

One useful guardrail is separating Integrating Salesforce With ERP Systems from analytical unification. Operational integration is what keeps a service agent’s screen consistent enough to do work: current order status, invoice visibility, eligibility checks, and the ability to create or amend a back-office transaction. Analytical unification is the pipeline that connects and harmonizes data so it can be segmented or analyzed, then activated back into downstream systems. Salesforce’s Data 360 learning unit describes this as staged work: connect data, harmonize and unify it, then analyze and act on it.

A second guardrail is responsible. Trailhead’s SAP utilities integration unit describes three core roles: SAP as the billing and technical data system, Salesforce as the customer engagement layer, and an integration layer that serves as the translator, enabling data sync. That framing matches what most enterprise architects learn the hard way: once you embed SAP semantics directly into Apex or declarative automation, you have reduced your future options for change.

A good early deliverable is a data-flow inventory that names the core objects and their movement rules. Trailhead’s SAP utilities unit shows this in a concrete way: it asks you to map SAP objects to Salesforce objects, then to visualize how the mapped data travels between systems, calling out real-time lookups for dynamic data and two-way sync for core records. Even outside of utilities, that approach generalizes well: master data needs a stable identity and controlled bidirectional updates, while volatile transactional data often should be read from SAP at the moment of use instead of being copied.

SAP Data Flow Strategies for Salesforce Architects who define data ownership

When you design SAP Data Flow Strategies, start by assigning a system of record per data domain and documenting who resolves conflicts. Salesforce’s decision guide is direct on the biggest trap: avoid unnecessary data replication. If the data does not need to reside in Salesforce, the guide recommends considering data virtualization with Salesforce Connect instead of copying records into the org.

This is also the point where some programs engage a Salesforce SAP integration company. That is often a delivery decision rather than an architecture decision, but it should not change the fundamentals. Regardless of who builds it, the architecture still needs explicit ownership rules for customer master, product master, pricing, orders, deliveries, invoices, and credit. Trailhead’s unit emphasizes mapping SAP and Salesforce objects, then describing how data moves between them, which is the same work you need for any domain-driven ownership model.

The ownership conversation is difficult because “the same thing” is modeled differently. SAP commonly exposes business data through OData services in SAP Gateway. SAP’s learning material describes SAP Gateway as a bridge between SAP systems and external applications, and it highlights the tooling to model entities and CRUD operations. It also notes that SAP Gateway supports OData V2 broadly and supports OData V4 in newer ABAP platform levels, while OData V3 is not supported in SAP Gateway.

Those technical exposure choices become design constraints in SAP to SALESFORCE integration. If the SAP team can expose a stable OData contract for a given domain, Salesforce can use that contract for virtualization and keep SAP authoritative without replication. If the SAP team cannot expose a stable contract, the integration layer often needs to wrap legacy interfaces such as IDocs behind a service facade, then present a normalized, versioned contract to Salesforce. The intent is consistent: Salesforce consumes contracts that are stable, versioned, and observable, while SAP remains the source of truth for domains it owns.

Align the ownership model to integration categories early. Salesforce’s integration patterns define virtual integration as a real-time callout to external systems without replication, triggered by user actions or record updates. They define synchronous patterns as blocking request/response and asynchronous patterns as nonblocking, message-based requests where results and faults are returned separately. These definitions are the vocabulary you will use repeatedly when stakeholders ask for “real time” without specifying whether they mean “real time UI lookups,” “near real time replication,” or “immediate transaction completion.”

A practical way to close the ownership loop is to make the integration layer a first-class product. Trailhead’s unit calls the integration layer a translator, and Salesforce’s decision guide recommends MuleSoft or an equivalent ESB/ETL tool in your landscape when available because these tools support reuse, governance, and centralized management. Even if you do not use MuleSoft, the architectural point stands: if orchestration and transformation live in the integration layer, your Salesforce org stays focused on engagement and workflow, with fewer brittle cross-system assumptions.

Integration patterns and tool choices for SAP to Salesforce landscapes

The core implementation choice is usually “virtualize, synchronize, or orchestrate,” then build each domain with the least fragile plumbing. Trailhead’s SAP utilities example explicitly uses two different flows: real-time lookups for dynamic data such as invoices, and two-way synchronization for core records such as customer accounts. Salesforce’s integration patterns describe these as different categories (virtual integration versus data integration) because the failure modes and scaling characteristics differ.

When virtualization is appropriate, Salesforce Connect is often the cleanest mechanism because it minimizes replication. Salesforce Help states that external data sources for Salesforce Connect must expose data using OData (version 2.0 or 4.0). This single requirement is a strong filter for SAP architects: it pushes you toward SAP Gateway OData services (or an integration layer that publishes OData) when you want external data surfaced as External Objects.

Virtualization is not a full replacement for operational records that must be acted on inside Salesforce. If you need Salesforce automation, reporting, or offline workflows to run reliably, you will usually bring the record “local” and then synchronize it. Salesforce’s pattern selection guide includes “asynchronous batch data synchronization” as a key inbound pattern for another system integrating into Salesforce, and it treats “remote call-in” patterns as the synchronous counterparts. In other words, Salesforce’s own pattern library expects you to use a mix: sync patterns for records that must exist in Salesforce, and virtual patterns for records that should remain external. 

This is the middle of most programs: teams want one pattern for everything, then discover it does not fit. The middle of effective delivery is accepting that SAP Data Flow Strategies are portfolio decisions, not single-pattern decisions. You can use Salesforce Connect for invoice lookups, event streams for order status changes, and batch for initial loads or reference data, as long as each data domain has a rationale, latency target, and clear exception handling expectations.

In that mixed model, the question is not whether you have integration, but whether the integration is intentional. Good SAP SALESFORCE integration strategies document, per domain, the expected latency, whether the flow is user-triggered or system-triggered, and whether Salesforce needs a local copy or can virtualize the data. Salesforce’s decision guide explicitly lists data flow timing, directionality, and exception handling (retry, notify, fail) as core selection criteria, and its patterns documentation provides the vocabulary to make those choices clear. 

When you hear “data sync,” make sure the discussion includes what happens on failure. Salesforce’s decision guide explicitly calls out exception handling as a tool-selection dimension, and Salesforce’s event bus documentation describes retention and replay mechanics that exist for recovery. A neutral way to describe a Salesforce ERP integration service is “a mediated layer that makes those recovery mechanics predictable,” meaning retries, backoff, and reconciliation are built as normal paths, not as emergency fixes.

Teams also scope Salesforce CRM integration services to stabilize the integration layer rather than to “own Salesforce.” That scope is reasonable because Salesforce’s integration patterns documentation is clear that complex operations such as aggregation, orchestration, and transformation are not performed in Salesforce for event-driven patterns. If you leave transformation inside triggers and flows, you typically increase coupling and make operational recovery harder.

SAP Data Flow Strategies in event-driven architectures

SAP Data Flow Strategies in event-driven designs depend on a publish/subscribe backbone, not on periodic polling. On the Salesforce side, Pub/Sub API is described as a single interface for publishing and subscribing to platform events and change data capture events. Salesforce states that Pub/Sub API is based on gRPC and HTTP/2 and delivers binary event messages in Apache Avro format, which is aligned with event-stream integration rather than request/response integration.

Salesforce also documents the expanded event bus as a time-ordered event log. It states that platform events and change data capture events are stored for 72 hours, that each event includes a Replay ID, and that consumers can retrieve and replay stored messages using the Pub/Sub API. This is the recovery contract for external consumers. A reasonable inference is that consumers should expect replays and design for safe reprocessing or deduplication, because replays exist to recover from interruptions and missed consumption windows.

Event-driven designs work better when you separate “business events” from “data replication signals.” Salesforce describes platform events as a way to exchange real-time event data to connect business processes, and its Change Data Capture documentation positions CDC as updating external systems instead of periodic exports and imports. Salesforce’s integration patterns guidance treats both as part of the event-bus foundation but also emphasizes that event schemas are static and that orchestration must happen outside Salesforce.

On the SAP side, you typically have two families of asynchronous integration. One is traditional IDoc-based processing. SAP documentation defines an IDoc as an “Intermediate Document” and describes IDocs as a standard means to exchange data between systems, with tooling that helps external systems interpret IDoc structure. In practice, IDocs can represent business documents and change messages, but they still require an integration layer to route, transform, and correlate them with Salesforce objects and workflows.

The other family is brokered events. SAP’s documentation for SAP Integration Suite, advanced event mesh, describes it as an event streaming, event management, and monitoring platform that provides event broker services. SAP tutorials show topic-based subscriptions and wildcard patterns, which are the operational capabilities you need if multiple consumers must subscribe to the same family of business changes without changing the producer each time.

A good event-driven integration does not claim that “events replace APIs.” Instead, it uses events where multiple systems need to react to a change, while keeping OData or request/response APIs for user-driven reads and writes. Salesforce’s integration patterns explicitly call out both synchronous request/response patterns and asynchronous fire-and-forget patterns, and it positions both as valid depending on timing, transactionality, and failure handling requirements.

SAP Data Flow Strategies that prevent sync drift and duplicates

The long-term cost of the Salesforce SAP data sync is usually not the connector. It is sync drift: duplicated customer records, mismatched statuses, and unexplained overwrites caused by unclear ownership and unstable record identity. Trailhead’s SAP integration unit explicitly recommends setting up External IDs to link records and avoid duplication, and it positions two-way synchronization as a deliberate choice for core records. 

In Salesforce, External IDs are the practical mechanism for stable matching and upsert boundaries. They are frequently paired with an integration layer rule: “the integration owns mapping between SAP keys and Salesforce IDs.” That rule aligns with Trailhead’s recommendation to link records by External ID and to its broader advice to avoid duplication and sync errors. It is also consistent with Salesforce’s tool-selection guidance that emphasizes maintainability and error handling as first-class decision points across data integrations.

On the SAP side, stable keys exist, but their meaning can vary by process. SAP’s Gateway material highlights that you model entity types, associations, and navigation properties, which is where you decide what the “business object identity” is for consumers. If SAP delivers a Business Partner model via OData, that becomes a natural identity boundary for Salesforce Account synchronization. If SAP identity is fragmented, the integration layer should normalize it before Salesforce consumes it.

A second duplicate control is to be selective about what you replicate into Salesforce. Salesforce’s decision guide warns that more replicated data increases data volume pressure and can degrade performance, and it recommends virtualization with Salesforce Connect unless the data must reside in Salesforce. Trailhead reinforces the same principle with invoice visibility: for dynamic data, access SAP directly rather than copying it.

A third control is explicitly choosing synchronization models by domain and writing those choices into the SAP data flow management plan. Salesforce’s integration patterns define virtual integration, synchronous remote call-in patterns, and asynchronous batch synchronization. Using that vocabulary, a common mixed model is to keep customer and product master data in controlled two-way sync with strict field ownership and stable matching keys, to distribute order and delivery updates as events (with replay-aware recovery) while doing transformations in the integration layer, and to handle invoices and credit with virtualization or tightly scoped caching because SAP remains authoritative and the values can legitimately change after first view.

For enterprise reporting and segmentation, it is often cleaner to ingest SAP data into a unified data layer rather than forcing operational objects into Salesforce. Salesforce’s SAP integration documentation for Data 360 lists connectors such as SAP HANA, SAP Concur, and SAP ASE, and it describes them as “Data In” integrations with structured data inbound using batch ingest and, depending on the connector, a “zero copy” connection method. This is a different pattern than keeping Accounts and Orders synchronized for transactional work. 

Finally, treat reconciliation as part of the architecture rather than as a go-live task. Salesforce’s event bus documentation exists because interruptions and missed deliveries are expected. If your integration can replay from a Replay ID and can backfill missed changes within the retention window, you can recover predictably. If it cannot, the team will fall back to manual fixes and ad hoc exports, which often reintroduce duplicates and drift. 

To make this concrete, “Enterprise data integration SAP SALESFORCE” should be defined as a lifecycle: initial load, continuous change capture, periodic reconciliation, and controlled failure recovery. Salesforce’s Change Data Capture guidance positions CDC as keeping external systems updated instead of periodic exports and imports, while Salesforce’s patterns guidance establishes CDC, platform events, and Pub/Sub API as core building blocks for event-driven integration styles. 

Governance, security, and operational guardrails

Security and governance are where “it worked in dev” breaks down in production. Salesforce’s decision guide recommends using an integration user license with an “API Only” profile for integrations, and it recommends External Client Applications as the preferred authentication and authorization pattern for integrations. These are operational guardrails: isolate privileges, reduce credential sprawl, and make audits realistic. 

On the Salesforce eventing side, the documentation states that the event bus is a time-ordered log, retains events for 72 hours, and supports replay via Replay ID. Those details determine what you must monitor: consumer lag, publish failures, and replay volume. They also determine what you can automate: catch-up routines after outages and alerting when consumers are outside the replay window. 

Salesforce’s integration patterns documentation also makes an important boundary explicit: for event-driven patterns, Salesforce does not perform complex orchestration and transformation. That work must live in middleware or the remote system. This boundary is one reason mediated integration scales: it centralizes mapping logic, supports versioned contracts, and reduces the temptation to implement business integration logic inside Salesforce triggers. 

On the SAP side, SAP Gateway material describes enterprise security services for OData exposure, including authentication approaches such as OAuth 2.0, SAML, and X.509 certificates, plus secure communication via TLS. For Salesforce architects, this matters because the integration must align SAP’s security stance with Salesforce’s connectivity patterns. If you do not align them early, teams often adopt brittle workarounds (shared users, long-lived passwords) that are hard to rotate and hard to audit. 

If SAP Integration Suite is part of the landscape, treat it as an integration platform, not as an implicit “answer.” SAP’s public product documentation describes SAP Integration Suite as an iPaaS and lists capabilities such as application integration, API lifecycle management, and event-driven architecture, including “ready-to-use connectors” that connect SAP and third-party systems such as Salesforce. These capabilities are useful, but the same architectural questions still apply: ownership, contract versioning, failure handling, and observability. 

For event distribution, SAP’s advanced event mesh documentation emphasizes creating and monitoring event broker services and managing the event mesh, while SAP tutorials show the topic-based subscription model (including wildcard subscriptions). These sources are useful reminders that “events” are operational assets. Without monitoring, access control, and lifecycle management, event-driven designs fail in the same ways as queue-based integrations: backlogs, loss of visibility, and unowned schemas. 

If your scope includes identity and consent as first-class domains, treat it as separate from ERP transactional integration. SAP’s integration guide for SAP Customer Data Cloud states that it supports bidirectional synchronization of customer profiles, preferences, subscriptions, and activities. Those flows have different privacy and consent expectations than order processing, and they should not be bundled into the same sync pipeline as invoices and deliveries. 

Summary

SAP Data Flow Strategies are durable when you treat them as architecture work rather than connector selection: define data ownership by domain, pick virtual, batch, or event-driven patterns based on timing and user needs, and then enforce identity, replay-aware recovery, and observability as baseline requirements. Salesforce’s integration patterns and decision guides provide the vocabulary and constraints for pattern selection, while SAP’s documented exposure models through SAP Gateway OData, IDocs, and event broker platforms define the integration contracts you can rely on from the back-office side. The integration layer is where these contracts should be mediated, versioned, and operated.

Recent Posts

Salesforce Integration Tools: Middleware, iPaaS, and Connector Guide
August 28, 2026
8 Best Tips for Efficient Account Management in Salesforce
August 28, 2026
Salesforce Data Integration: Strategy, Mapping, and Synchronization Guide
August 25, 2026
Jira Salesforce Integration: Complete Planning and Setup Guide
August 18, 2026

Request a Free 30-Minute Salesforce Consultation

Whether it’s implementation, integration, or custom development—let’s discuss the right solution for your organization.

    Thiago T

    Senior Salesforce Consultant - Co-Founder @ dgt27

    Thiago is a highly skilled full-stack Salesforce developer with over 10 years of experience. He has successfully implemented Salesforce solutions for clients from various walks of life. His expertise extends across different sectors, including government, non-profit organizations, large and small companies, as well as universities. Thiago's diverse experience allows him to tailor Salesforce solutions to meet the unique needs and challenges of clients in different industries. Currently, he leads a team of 10x certified Salesforce developers across the US, Europe, and South Asia.

    Leave Comment

    Leave a Reply

    Your email address will not be published. Required fields are marked *

    Was this blog helpful?

    Was this blog helpful?