ml-connector
IFS CloudCoupa

IFS Cloud and Coupa integration

IFS Cloud handles manufacturing, procurement, and finance. Coupa manages cloud procurement and spend. Connecting the two keeps supplier master data synchronized and moves purchase orders and supplier invoices from IFS into Coupa without manual re-entry. New suppliers created in IFS can flow to Coupa, and invoice lines are posted with the correct supplier and PO reference, preventing data silos between ERP and procurement.

How IFS Cloud works

IFS Cloud exposes suppliers, purchase orders, supplier invoices, GL accounts, and vouchers through OData v4 REST API via the IFS OData Provider. Each IFS customer has a tenant-specific subdomain (https://<tenant>.ifs.cloud) and authenticates with OAuth2 client credentials. The token endpoint is tenant-specific and tokens last approximately 60 minutes. IFS offers Event Actions for server-side business triggers, but these require manual per-customer configuration in the IFS admin UI and are not self-registerable via API. The recommended integration pattern is pull-based polling of OData queries with filters on modified timestamps, since Event Actions are not automatically available.

How Coupa works

Coupa exposes suppliers, purchase orders, invoices, and payments through a REST API. Customers authenticate with OAuth2 client credentials and must include the X-Coupa-API-Version header on all calls. Coupa supports incoming webhooks for six event types: requisition, purchase order, invoice, supplier, expense report, and payment events. Webhook signatures are verified via HMAC-SHA256 and the integration can receive events when configured. API calls have a 30-second default timeout, rate limits return HTTP 429, and webhook bodies are capped at 256KB.

What moves between them

The main flow is from IFS into Coupa. ml-connector polls IFS on a schedule you set, reading newly created or modified suppliers, purchase orders, and supplier invoices using OData filters. Suppliers are mapped to Coupa vendors, and purchase documents are created or updated in Coupa with references to their source IFS purchase orders. The flow is directional and one-way; Coupa data does not flow back into IFS.

How ml-connector handles it

ml-connector stores both credential sets encrypted and manages the tenant-specific IFS URLs per customer. Since IFS has no standard webhook API, polling is driven by OData query filters on creation and modification timestamps. Each IFS OAuth2 token lasts 60 minutes, so ml-connector refreshes the token before expiry to prevent mid-flow failures. IFS requires ETag headers on mutation operations and handles concurrency with If-Match semantics, so ml-connector reads records first to capture the ETag before updating. On the Coupa side, ml-connector verifies incoming webhook signatures using the HMAC-SHA256 algorithm and the webhook secret. Supplier creation follows a deduplication rule to prevent duplicates: ml-connector queries Coupa by external reference before creating a new vendor. Rate limit responses (429) trigger exponential backoff with jitter, and every record move is logged for audit and replay.

A real-world example

A mid-sized manufacturing company runs IFS Cloud ERP for production, procurement, and finance across three plants. They use Coupa for spend management and supplier collaboration. Before the integration, the procurement team manually entered new suppliers into Coupa after IFS created them, causing 2-3 day lags and frequent entry errors. Purchase orders created in IFS for production materials required re-entry or spreadsheet exports to get into Coupa for supplier visibility. With IFS and Coupa connected, suppliers sync automatically, purchase orders flow into Coupa the same day they are created in IFS, and the procurement team no longer spends time re-keying supplier master data or PO details.

What you can do

  • Sync suppliers created in IFS Cloud into Coupa as vendors, with automatic deduplication by external reference.
  • Pull purchase orders from IFS and create or update matching Coupa purchase orders on a polling schedule tied to your procurement calendar.
  • Move supplier invoices from IFS into Coupa with correct vendor and purchase order references, eliminating manual invoice data entry.
  • Handle IFS tenant-specific URLs, OAuth2 client credentials with 60-minute token expiry, ETag-based concurrency, and OData query filtering.
  • Receive and verify Coupa webhook events with HMAC-SHA256 signature validation, with full retry and audit trail on every record.

Questions

Which direction does data move between IFS Cloud and Coupa?
The main flow is from IFS Cloud into Coupa. Suppliers, purchase orders, and supplier invoices move from IFS into Coupa. Coupa data does not flow back into IFS, keeping the ERP as the source of truth for procurement master data.
Does IFS Cloud support webhooks for real-time data sync?
IFS Cloud offers Event Actions for business triggers, but they require manual per-customer setup in the IFS admin UI and are not self-registerable via API. ml-connector uses pull-based OData polling with timestamp filters instead, on a schedule synchronized with your procurement cycles.
How does ml-connector handle IFS OAuth2 token expiry and ETag concurrency?
ml-connector refreshes the IFS OAuth2 token before its 60-minute expiry to avoid mid-flow failures. For mutations, it reads the record first to capture the ETag value, then includes that ETag in the If-Match header as required by IFS OData semantics for optimistic concurrency control.

Related integrations

Connect IFS Cloud and Coupa

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

Get started