ml-connector
SAP ECCAdobe Commerce

SAP ECC and Adobe Commerce integration

SAP ECC manages your enterprise financials, vendors, and materials. Adobe Commerce runs your e-commerce storefront and customer orders. Connecting them keeps your order ledger and your customer master synchronized without re-entry. New orders placed in Adobe Commerce flow into SAP ECC as sales documents, customer records sync bidirectionally so your ERP master stays current, and invoices posted in SAP push back to Adobe Commerce to close the order loop.

How SAP ECC works

SAP ECC exposes vendors, customers, materials, GL accounts, cost centers, purchase orders, sales orders, and invoices through RFC/BAPI function modules, OData v2 via SAP Gateway, SOAP web services, or IDoc XML HTTP. Authentication uses HTTP Basic Auth for OData and IDoc, or RFC Basic Auth via the SAP .NET Connector or Java Connector when using BAPI calls. On-premises SAP systems require a customer-hosted integration agent on the network to bridge RFC calls to the cloud, and SAP Basis teams must manually activate OData services via transaction SICF. SAP ECC has no native webhook registry, so connectors poll on demand or on a scheduled interval, though IDoc XML can be pushed if the customer configures outbound delivery in WE21/WE20.

How Adobe Commerce works

Adobe Commerce exposes orders, invoices, customers, products, shipments, and B2B purchase orders through REST and GraphQL APIs. The PaaS model uses OAuth 1.0a integration credentials or Admin bearer tokens, while the SaaS model uses IMS OAuth 2.0 with 24-hour token expiry. Adobe Commerce webhooks are synchronous and sign payloads with x-adobe-commerce-webhook-signature HMAC SHA256; available events include order placement, invoice generation, and product updates, though the exact event types depend on installed modules and version. GL accounts are not exposed as an API resource, so the ERP must apply its own GL rules.

What moves between them

Orders and customer records flow from Adobe Commerce into SAP ECC on a schedule you define, typically daily or after key commerce events. Customer creation and modification in Adobe Commerce creates or updates the customer master record in SAP ECC, and new orders in Adobe Commerce generate sales document headers and line items in SAP via BAPI_SALES_ORDER_CREATE or RFC_READ_TABLE insertion. Invoices post from Adobe Commerce back into SAP ECC as accounting documents, allocated to the customer and the order line. GL postings and inter-company transfers are authored only in SAP, so Adobe Commerce does not receive financial entries; Adobe Commerce is read-only for GL accounts.

How ml-connector handles it

ml-connector stores both credential sets encrypted and negotiates HTTP Basic Auth on each OData or IDoc call to SAP ECC, while managing OAuth 1.0a or IMS OAuth 2.0 token lifecycle on the Adobe Commerce side. Because SAP ECC is pull-only without native webhooks, ml-connector polls Adobe Commerce for new orders and customer changes on your chosen interval, transforms each order into SAP sales order BAPI parameters, and invokes the RFC bridge or OData insert service in SAP. Customer number assignment follows SAP number ranges, so ml-connector maps Adobe Commerce customer IDs to SAP account numbers and caches that mapping. Invoices created in Adobe Commerce are read via the REST endpoint, normalized to SAP GL posting structure, and inserted as accounting documents with cost center and GL account validation. The SAP on-premises agent must be running and reachable; ml-connector retries failed RFC calls up to three times with exponential backoff, and tracks each record in the audit log so failed orders can be replayed once the agent comes back.

A real-world example

A mid-market B2B manufacturer runs SAP ECC for finance and supply chain and Adobe Commerce as their customer portal for order placement and invoicing. Before the integration, the order entry team exported orders from Adobe Commerce each morning and re-entered them into SAP by hand, and the finance team had to manually post customer invoices created in Adobe Commerce back into the sales ledger. With SAP ECC and Adobe Commerce connected, each order placed in Adobe Commerce posts to SAP automatically as a sales order, invoices flow from Adobe Commerce into the SAP GL the same day, and customer creation or name changes in Adobe Commerce automatically update the SAP customer master, removing the manual re-entry step and eliminating the daily reconciliation of outstanding orders.

What you can do

  • Post Adobe Commerce orders into SAP ECC as sales documents, mapped to the correct customers and GL accounts.
  • Synchronize customer creation and modification between Adobe Commerce and SAP ECC so both systems share the same master record.
  • Post Adobe Commerce invoices into the SAP ECC GL after customer approval, linked to the corresponding order.
  • Authenticate SAP ECC with HTTP Basic Auth and OData or RFC, and Adobe Commerce with OAuth 1.0a or IMS OAuth 2.0.
  • Poll Adobe Commerce for new orders and invoices on a schedule you control, with retries and a full audit trail on every record.

Questions

Which direction does data move between SAP ECC and Adobe Commerce?
Orders and customers flow primarily from Adobe Commerce into SAP ECC. Invoices created in Adobe Commerce post into the SAP ECC GL. GL entries are authored only in SAP, so the ERP does not receive accounting entries back from Adobe Commerce. Master data such as materials and pricing can be synchronized in both directions.
Does the integration require an on-premises SAP agent, or can ml-connector call SAP directly from the cloud?
Yes, SAP ECC is on-premises and RFC/BAPI calls cannot originate directly from the cloud. ml-connector requires an integration agent running on the customer's network with the SAP .NET Connector or Java Connector installed. The agent bridges HTTP calls from ml-connector to RFC function modules in SAP. Alternatively, if OData is activated on the SAP Gateway, ml-connector can use REST calls instead of RFC, though SAP Basis must manually enable OData services via transaction SICF.
How does the integration handle the polling model since SAP ECC has no native webhooks?
ml-connector polls Adobe Commerce for new orders and customer changes on a schedule you define, typically daily or hourly. Because SAP ECC is on-premises, it cannot easily push data to the cloud, so polling is the standard pattern. Once records are posted into SAP via RFC or OData, the audit log captures the timestamp and status, so you can see exactly when each order was synced and can replay failed records if needed.

Related integrations

Connect SAP ECC and Adobe Commerce

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started