ml-connector
IFS CloudAnaplan

IFS Cloud and Anaplan integration

IFS Cloud runs finance and supply chain for large enterprises. Anaplan runs planning, budgeting, and forecasting. Connecting the two keeps your planning models current with actual GL postings and invoice data from IFS Cloud. Suppliers, invoices, and GL vouchers imported into Anaplan on a schedule let finance teams forecast and analyze against current transactional reality rather than month-old snapshots. ml-connector handles the OData API on the IFS side, Anaplan's action-based import pattern, and the mapping between the two systems' very different data models.

How IFS Cloud works

IFS Cloud is a multi-tenant enterprise ERP with modules for manufacturing, asset management, procurement, supply chain, and finance. It exposes GL vouchers, posting proposals (supplier invoices), purchase orders, suppliers, customers, GL accounts, and accounting dimensions through OData v4 REST API endpoints. Authentication uses OAuth2 client credentials against a tenant-specific URL (https://<tenant>.ifs.cloud). Each customer runs on a separate subdomain with its own token endpoint. IFS offers server-side Event Actions to push notifications on business events, but they require manual per-customer configuration in the IFS admin UI and are not self-registerable via API. The recommended pattern is polling with OData filters on modified timestamps. IFS enforces optimistic concurrency with If-Match / ETag headers on mutations, a page size recommendation of under 5000 elements per request, and a rate limit of approximately 1000 requests per minute. Projection names (the OData entity set definitions) are version-specific and may change between major releases.

How Anaplan works

Anaplan is a cloud planning platform for financial planning, budgeting, workforce planning, and supply chain forecasting. It organizes data as workspaces containing models, which hold lists, modules, line items, and metadata. Anaplan has no native finance objects such as invoices, GL accounts, or vendors; instead, data is mapped into generic lists and module cells. It exposes a REST JSON API with two authentication methods: basic authentication (username and password, 35-minute token lifetime) and certificate-based authentication (client cert pair, 35-minute token lifetime). Anaplan uses a polling pattern for data synchronization. Imports and exports are triggered by POSTing to a named Action (which must be pre-created in the model), which returns a task ID; the client then polls the task status until complete, downloads the result file if exporting, and processes the data. Anaplan enforces a 600-request-per-minute tenant-wide rate limit shared across all integrations. Bulk import and export lock the model temporarily, preventing concurrent API reads. Workspace Admin role is required for transactional APIs.

What moves between them

The main flow is IFS Cloud into Anaplan. GL vouchers (journal entries) are read from IFS Cloud on a weekly or monthly schedule (typically aligned with month-end close) and imported into an Anaplan model as line items. Supplier invoices (posting proposals) and GL accounts flow the same direction. Reference data such as suppliers, customers, and accounting dimensions (code-part values in IFS) are synced bidirectionally to keep Anaplan lists aligned with the current IFS master data. GL postings are read-only in IFS, so ml-connector never writes financial entries back. The import pattern in Anaplan is action-driven: ml-connector transforms IFS data into CSV, posts it to a pre-created import action, polls the task status, and monitors the import result for errors.

How ml-connector handles it

ml-connector stores IFS OAuth2 credentials and Anaplan basic or certificate credentials encrypted, and refreshes IFS tokens automatically when approaching expiry. On the IFS side, it builds OData queries with $filter on modified-date or state fields, handles If-Match / ETag concurrency by reading the record first before any mutation, respects the 1000-request-per-minute rate limit with exponential backoff on 429 responses, and validates company code (a mandatory field on IFS financial entities) as part of the customer configuration. On the Anaplan side, it transforms IFS records (GL vouchers, invoices, suppliers) into CSV rows matching the target module structure, POSTs the file to a pre-created import action, polls the task ID until the import reaches COMPLETE or ERROR, and checks the import log for per-row failures. Because Anaplan locks the model during bulk import, ml-connector serializes imports and does not run concurrent exports during a large import. It maps IFS company codes to Anaplan list items and IFS cost centers / GL accounts to Anaplan line item dimensions. ETag handling prevents optimistic lock conflicts on IFS mutations. Anaplan's 600-request-per-minute rate limit is shared across all integrations on the workspace, so ml-connector backs off and retries, with monitoring to alert if the workspace is consistently hitting the limit (indicating other integrations or UI activity).

A real-world example

A global mid-cap manufacturing company runs IFS Cloud for ERP across three operating companies, each with its own company code and cost center structure. The corporate finance team uses Anaplan for quarterly rolling forecasts and annual budgets. Before the integration, the finance analyst exported GL balances and invoice summary reports from IFS at month-end, manually entered them into Anaplan, then ran variance reports against the budget. The analyst spent three days each month re-keying and reconciling. With IFS and Anaplan connected, GL vouchers and supplier invoices flow automatically into Anaplan on a weekly basis. The planning model always reflects current actuals, variance reports run on demand without manual entry, and the monthly consolidation starts with accurate figures already in place.

What you can do

  • Sync IFS Cloud GL vouchers (journal entries) and posting proposals (supplier invoices) into Anaplan models as line items on a configurable schedule.
  • Map IFS company codes and cost centers to Anaplan list items and line item dimensions so finance data lands on the correct forecast dimensions.
  • Read IFS GL accounts, suppliers, and accounting dimensions and keep Anaplan reference lists current with master data changes.
  • Handle IFS OAuth2 token refresh, ETag concurrency requirements, 1000-request-per-minute rate limits, and OData pagination transparently.
  • Monitor Anaplan import task status, detect per-row failures in the import log, and alert on workspace-wide rate limit saturation.

Questions

What data moves between IFS Cloud and Anaplan, and in which direction?
The main flow is IFS Cloud into Anaplan. GL vouchers (journal entries), supplier invoices (posting proposals), GL accounts, suppliers, and accounting dimensions are read from IFS and imported into Anaplan models as line items and list items. The import is read-only on IFS, so ml-connector never writes GL postings or invoices back to IFS.
How does ml-connector handle IFS's ETag concurrency requirement and OData pagination?
ml-connector reads the full record to capture the @odata.etag value before performing any PATCH or POST mutation, then includes that ETag in the If-Match header to enforce optimistic concurrency. For reads, it respects IFS's recommendation to keep result sets under 5000 elements per request and uses $skip and $top to paginate large datasets, filtering on modified timestamp to detect only changed records.
How does Anaplan's action-based import pattern work with ml-connector?
Anaplan imports are triggered by POSTing CSV data to a pre-created import Action, which returns a task ID. ml-connector polls the task status until it reaches COMPLETE or CANCELLED, then checks the import log for per-row errors. Large imports lock the model, so ml-connector serializes them to avoid blocking concurrent reads, and monitors workspace-wide rate limits to back off if other integrations are active.

Related integrations

Connect IFS Cloud and Anaplan

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

Get started