ml-connector
IFS CloudAdobe Commerce

IFS Cloud and Adobe Commerce integration

IFS Cloud runs your manufacturing, procurement, and finance operations. Adobe Commerce powers your e-commerce sales. Connecting them keeps your GL synchronized with every order and invoice, eliminating manual journal entries. Sales orders and invoices from Adobe Commerce flow into IFS Cloud on a schedule you control, mapped to the right GL accounts and customer dimensions. Revenue recognition happens automatically after every commerce transaction.

How IFS Cloud works

IFS Cloud exposes sales orders, invoices, customers, payments, GL accounts, and accounting dimensions through an OData v4 REST API at a tenant-specific base URL. Every request requires OAuth2 client credentials (client_id, client_secret) and a company code, since IFS Cloud segregates financial data by company. The platform does not expose webhooks through a self-registerable API; instead, it offers Event Actions that require manual configuration in the IFS admin UI per customer. Because webhooks are not readily available, integrations poll the OData API using filters on modified timestamps to detect new and changed records. IFS Cloud enforces an ETag header on mutations (PATCH operations), rate-limits at approximately 1000 requests per minute per tenant, and recommends keeping result sets under 5000 elements per request.

How Adobe Commerce works

Adobe Commerce exposes orders, invoices, customers, products, and B2B purchase orders through REST and GraphQL APIs. In PaaS deployments, authentication uses OAuth 1.0a integration credentials (consumer_key, consumer_secret, access_token, access_token_secret). In SaaS deployments, authentication uses IMS OAuth 2.0 client credentials with 24-hour token expiry. Webhooks are available in Adobe Commerce 2.4.4 and later, allowing Commerce to push order and invoice events via HMAC-SHA256 signed callbacks. The platform does not expose general ledger accounts as an API resource; the connector must apply its own GL rules based on order and invoice type.

What moves between them

Sales orders and customer records flow from Adobe Commerce to IFS Cloud. On every new order placed or invoice generated in Commerce, ml-connector reads the order or invoice, captures customer and line-item details, and posts a journal entry to IFS Cloud's general ledger for revenue recognition, mapped to the correct GL account and cost dimension based on your IFS company code. Customer master records sync bidirectionally so customer name and address changes in Commerce are reflected in IFS Cloud and vice versa. Sync cadence is configurable: webhook-driven (real-time push from Commerce when an order is placed or invoiced) or polling-based (check Commerce on a schedule you set).

How ml-connector handles it

ml-connector stores both credential sets encrypted: IFS Cloud OAuth2 credentials (client_id, client_secret, company code) and Adobe Commerce auth (OAuth 1.0a credentials for PaaS or OAuth2 for SaaS). On the IFS side, it polls the OData API using modified timestamp filters to detect new orders and invoices, and it reads the ETag on each record before attempting a PATCH mutation to comply with IFS's optimistic concurrency model. On the Adobe Commerce side, it accepts either webhook events (if 2.4.4 or later with webhooks enabled) for real-time notification or polling as a fallback. When a new order arrives, ml-connector maps the customer to an existing IFS Cloud customer record (by name or external ID), looks up the GL account and cost center based on your configuration, and posts a journal entry to IFS Cloud's VoucherSet. If an order is modified, ml-connector creates an offsetting entry rather than updating, since journal entries are immutable. Rate limiting is handled with exponential backoff: on HTTP 429 from IFS, ml-connector pauses and retries. Token expiry is monitored: IFS tokens are refreshed 5 minutes before expiry, and Adobe tokens are refreshed on any 401 response. Every record carries a full audit trail.

A real-world example

A mid-sized e-commerce and manufacturing company runs Adobe Commerce for direct-to-consumer sales across multiple product lines and runs IFS Cloud for manufacturing, procurement, and financial consolidation. Before the integration, the finance team received daily e-mails with order and invoice reports from Adobe Commerce and manually entered the revenue transactions into IFS Cloud's general ledger, a process that took two hours per day and was error-prone. With the integration, every order placed in Adobe Commerce triggers a journal entry in IFS Cloud in real time, allocated to the correct revenue and cost accounts. Month-end close is faster because revenue posting is complete, and reconciliation is straightforward because every order has a trace back to its commerce origin.

What you can do

  • Post sales orders and invoices from Adobe Commerce to IFS Cloud's general ledger, mapped to customer and GL dimensions.
  • Sync customer master data bidirectionally between Adobe Commerce and IFS Cloud so contact and billing information stays consistent.
  • Authenticate IFS Cloud via OAuth2 client credentials and Adobe Commerce via OAuth 1.0a (PaaS) or OAuth2 (SaaS), with automatic token refresh.
  • Accept webhook push events from Adobe Commerce 2.4.4+ for real-time order notification, or poll on a schedule if webhooks are unavailable.
  • Track every record in a full audit trail, including order origin, GL posting status, and any transformation or error.

Questions

How does ml-connector handle the difference between OAuth 1.0a (Adobe Commerce PaaS) and OAuth2 (SaaS)?
ml-connector stores both credential sets separately and routes to the right authentication path based on your deployment type. You configure PaaS credentials (consumer_key, consumer_secret, access_token, access_token_secret) or SaaS credentials (client_id, client_secret) during setup. Token refresh is automatic: PaaS credentials are refreshed on demand, and SaaS tokens are refreshed before their 24-hour expiry window closes.
IFS Cloud has no self-registerable webhooks. Does that block real-time sync?
No. ml-connector falls back to polling the IFS Cloud OData API on a schedule, using modified timestamp filters to detect new orders and invoices efficiently. If you can enable Adobe Commerce webhooks (2.4.4+), ml-connector can listen on your configured endpoint and pull matching records from IFS Cloud on demand, reducing latency. Either way, audit logging is complete.
Adobe Commerce does not expose GL accounts in its API. How does ml-connector know which GL account to post to?
You provide a mapping during setup: order type, product category, or invoice line type maps to an IFS Cloud GL account code. ml-connector applies that mapping when building the journal entry, then posts to IFS Cloud's VoucherSet with the GL account and cost dimension you specified. If a mapping is missing, the record enters the error queue with full context for resolution.

Related integrations

Connect IFS Cloud and Adobe Commerce

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

Get started