ml-connector
Infor CloudSuiteSalesforce

Infor CloudSuite and Salesforce integration

Infor CloudSuite runs procurement, finance, and supply chain. Salesforce runs sales, service, and customer relationships. Connecting them keeps your customer records and supplier data in one place so sales and procurement teams see the same accounts and can track invoices end-to-end. New suppliers and customers in CloudSuite sync to Salesforce accounts, and invoices flow through to activities and records so deal teams always know outstanding obligations.

How Infor CloudSuite works

Infor CloudSuite exposes suppliers, customers, purchase orders, invoices, GL accounts, and items through REST APIs via the ION API Gateway, authenticated with OAuth 2.0 Resource Owner Password Credentials using service account credentials and a registered app client ID and secret. Each customer has a unique base URL per region, and the token endpoint and tenant ID are provided in a .ionapi credentials file. CloudSuite has no native webhooks for external integrations, so records are read by polling the list and get endpoints on a schedule, filtering by modified date or status.

How Salesforce works

Salesforce exposes accounts, contacts, opportunities, orders, invoices, and other objects through REST APIs authenticated with OAuth 2.0 client credentials. Every account and contact record can be created or updated via a standard SObject upsert endpoint, and Salesforce also supports Change Data Capture pub-sub for real-time push notifications of account and contact updates with a 72-hour event retention window. Session tokens expire after a configurable default of 2 hours, so refresh must be handled between calls.

What moves between them

The primary flow is CloudSuite into Salesforce. Suppliers in CloudSuite map to Salesforce accounts, and customers in CloudSuite also map to accounts or contacts depending on their role. When a new supplier or customer is added in CloudSuite, ml-connector polls for it and creates or updates the matching account record in Salesforce. Invoices and purchase orders from CloudSuite can be logged as activities, notes, or custom objects linked to the account, keeping a visible transaction history in CRM. Updates in Salesforce do not flow back to CloudSuite, keeping procurement truth in CloudSuite and CRM truth in Salesforce.

How ml-connector handles it

ml-connector polls CloudSuite on a schedule because ION BOD push requires manual ION Desk configuration and is not programmatic. It stores CloudSuite OAuth credentials encrypted, extracts the per-customer base URL and tenant ID from the .ionapi file, and refreshes the bearer token before it expires. On the Salesforce side, it uses OAuth client credentials and the configured My Domain URL to obtain tokens and upsert accounts and contacts by external ID so duplicates are avoided on repeated runs. CloudSuite does not natively support idempotent writes, so ml-connector tracks which records have been synced and re-polls on a configurable cadence. When CloudSuite returns a 429 rate limit, ml-connector backs off exponentially and retries. Every record carries a full audit trail and can be replayed if a downstream upsert fails.

A real-world example

A mid-sized distributor runs Infor CloudSuite for procurement and finance across three regional hubs, and uses Salesforce for sales operations. Before the integration, the procurement team managed a separate supplier list in a spreadsheet that sales never saw, and sales reps could not tell if a customer was also a supplier or view open invoices in the deal. Now suppliers and customers sync from CloudSuite to Salesforce daily, and sales can see the full relationship history including invoices, payments, and procurement activity on each account. Procurement and sales speak the same language around the customer base.

What you can do

  • Sync suppliers from Infor CloudSuite to Salesforce accounts, creating and updating records automatically with no duplicate handling.
  • Map Infor CloudSuite customers to Salesforce accounts and contacts, keeping CRM data fresh and aligned with ERP.
  • Log CloudSuite invoices and purchase orders as Salesforce activities linked to the matching accounts for visibility.
  • Poll CloudSuite on a custom schedule and refresh OAuth tokens on both sides to keep data flowing without manual intervention.
  • Track sync state and replay failed records to Salesforce with a full audit trail of every sync attempt.

Questions

How does the integration handle Infor CloudSuite's per-tenant OAuth endpoints and base URLs?
Each CloudSuite customer has a unique base URL per region, and OAuth token endpoint details are provided in the .ionapi credentials file. ml-connector extracts these per-customer and constructs the correct OAuth and API calls for each tenant, so there is no shared hostname or central OAuth gateway. Tokens are cached and refreshed before expiry.
Why does ml-connector poll CloudSuite instead of using ION BOD push?
ION BOD push via ION Desk requires manual configuration by a CloudSuite admin for each event, and is not available programmatically via API. Polling gives you a consistent, automated sync on a schedule you control without administrative overhead, and works the same way for all customers.
Does the integration handle Salesforce's 2-hour token expiry and rate limits?
Yes. ml-connector refreshes Salesforce OAuth tokens before they expire on every call, and respects Salesforce rate limits by backing off when a call returns a 429. CloudSuite rate limits are also respected, with exponential backoff and retry logic to handle both systems' constraints gracefully.

Related integrations

Connect Infor CloudSuite and Salesforce

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

Get started