ml-connector
IFS CloudSalesforce

IFS Cloud and Salesforce integration

IFS Cloud handles your manufacturing, procurement, and finance. Salesforce manages your sales pipeline and customer relationships. Connecting the two keeps your supplier and customer data aligned across both systems. New vendors entered in IFS automatically appear in Salesforce, and changes to customer records flow in both directions. ml-connector handles the different APIs and authentication models on each side, keeps everything in sync on a schedule you set, and provides a complete audit trail for every record.

How IFS Cloud works

IFS Cloud exposes suppliers, customers, purchase orders, supplier invoices, GL accounts, and journal entries through an OData v4 REST API published by the IFS OData Provider. The API is tenant-specific, with each customer accessing https://<tenant>.ifs.cloud. Authentication uses OAuth 2.0 Client Credentials, with token lifetime of approximately 60 minutes. IFS Cloud has no standard webhook API for cloud connectors, so records are read by polling the OData API, with filters on modified timestamps. The API enforces a page size limit of 5000 elements per request and a rate limit of approximately 1000 requests per minute per tenant.

How Salesforce works

Salesforce exposes Accounts, Contacts, Opportunities, Orders, and other standard objects through a REST API, with a base URL of https://<MyDomain>.my.salesforce.com/services/data/. Authentication uses OAuth 2.0 Client Credentials (server-to-server), with tokens expiring after a configurable session timeout, typically 2 hours. Salesforce supports Change Data Capture for real-time push notifications on Account, Contact, Opportunity, and Order objects with 72-hour event retention, or polling via the standard REST API with a datetime range filter. Session tokens are bound to the My Domain URL and cannot be refreshed in client credentials flow.

What moves between them

The primary flow is IFS Cloud into Salesforce. Supplier records from IFS SupplierSet map to Salesforce Accounts, while customer records from IFS CustomerSet map to Salesforce Accounts or Contacts. Purchase orders from IFS PurchaseOrderSet create Order records in Salesforce, and supplier invoices from IFS PostingProposalHeadSet can populate custom fields on those Orders for visibility. The flow is unidirectional because Salesforce is the connected system, but customer master data can be synchronized back to IFS to keep both systems aligned. Synchronization runs on a polling schedule tied to your procurement calendar, checking for modified records since the last sync.

How ml-connector handles it

ml-connector obtains an OAuth 2.0 token from each system at the start of each polling cycle. For IFS Cloud, it constructs the tenant-specific token endpoint and requests credentials for the configured client_id and client_secret. For Salesforce, it uses the provided My Domain URL to fetch a token with the same client credentials flow. ml-connector then polls IFS OData endpoints with filters on modified timestamps, respecting the 5000-element page size limit and backing off exponentially when it hits the 1000-requests-per-minute rate limit. Records from IFS are transformed into Salesforce SObject format: supplier names become Account names, customer data maps to Account or Contact objects with the external identifier retained for deduplication. Before any write to Salesforce, ml-connector checks for existing records by external ID to avoid duplicates. Salesforce session tokens are cached until they expire after 2 hours, at which point a fresh token is obtained. Every record transformation and API call is logged with full request and response detail for audit and replay.

A real-world example

A mid-market manufacturing company runs IFS Cloud for production, procurement, and finance. The sales team uses Salesforce to manage customers and opportunities. Before the integration, the procurement team maintained a manual spreadsheet of approved suppliers that the sales team consulted when placing customer orders, and it went out of sync frequently. When IFS showed a new vendor with special terms, the sales team did not know it, and sometimes quoted terms that did not match. With IFS Cloud and Salesforce connected, new suppliers in IFS automatically appear as Accounts in Salesforce within the polling window, the sales team sees current supplier details and terms when planning customer orders, and customer master data is synchronized back to IFS so finance can validate customer attributes against the procurement system. The manual sync step vanishes.

What you can do

  • Map IFS Cloud supplier records to Salesforce Accounts with automatic deduplication by external ID.
  • Sync customer master data from IFS Cloud into Salesforce Accounts or Contacts, keeping both systems aligned.
  • Create Salesforce Order records from IFS Cloud purchase orders, with purchase order details and line items.
  • Handle OAuth 2.0 authentication for both IFS Cloud (tenant-specific token endpoint) and Salesforce (My Domain URL).
  • Poll on a configurable schedule, respect IFS rate limits and page size constraints, and maintain a full audit trail on every record.

Questions

Which direction does data move between IFS Cloud and Salesforce?
The primary flow is IFS Cloud into Salesforce. Suppliers map to Salesforce Accounts, customers map to Accounts or Contacts, and purchase orders create Order records. Customer master data can be synchronized back to IFS to keep both systems aligned. Because Salesforce is the connected system in this pair, ml-connector does not write financial entries or GL accounts back to IFS.
How does the integration handle IFS Cloud's tenant-specific URL and OAuth 2.0 authentication?
Each IFS Cloud customer has a unique subdomain, e.g., https://<tenant>.ifs.cloud, and the OAuth token endpoint is also tenant-specific. ml-connector accepts the tenant subdomain as part of the connector configuration, constructs the correct token endpoint, and requests credentials using the provided client_id and client_secret. Tokens are cached and refreshed when they approach expiry.
What happens when ml-connector hits IFS Cloud's rate limit or page size constraint?
IFS Cloud enforces approximately 1000 requests per minute per tenant and a maximum page size of 5000 elements per request. When ml-connector hits the rate limit and receives a 429 response, it backs off with exponential jitter and retries. For large result sets, ml-connector pages through results respecting the 5000-element limit, making multiple API calls to retrieve all matching records. Salesforce session tokens expire after 2 hours, so ml-connector refreshes the token before each polling cycle.

Related integrations

Connect IFS Cloud and Salesforce

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

Get started