ml-connector
Epicor KineticAnaplan

Epicor Kinetic and Anaplan integration

Epicor Kinetic runs your finance and operations. Anaplan runs your budgeting and forecasting. Connecting the two means the actuals in your general ledger feed your plans, and the numbers you approve in Anaplan flow back to the ledger without re-keying. ml-connector reads GL account balances, cost centers, and AP spend from Epicor Kinetic and loads them into your Anaplan planning models, then exports approved budget and forecast values back into Epicor. It moves the data on a schedule you control and handles the very different APIs on each side.

How Epicor Kinetic works

Epicor Kinetic exposes vendors, AP invoices, purchase orders, GL accounts, and chart-of-accounts segments through its Open REST API, built on OData v4 and documented in the interactive API help inside each instance. Every v2 call runs against a tenant-specific URL that includes the company segment, so there is no shared hostname. Authentication is HTTP Basic, an Epicor API key, or OAuth2 client credentials through the Epicor identity provider, and most configurations require the API key in addition to the identity method. Epicor Kinetic has no native outbound webhooks, so finance records are read by polling with an OData filter on a modified-date field, and large pulls use Business Activity Queries for speed.

How Anaplan works

Anaplan exposes no invoice, vendor, or GL objects of its own. All data lives inside a workspace and model as lists, modules, and line items, and finance data reaches it by importing into those structures. The Integration API v2.0 moves bulk data through named import and export actions that a model builder defines in advance: you upload a CSV in chunks, run the action, then poll the returned task until it completes. Authentication is an Anaplan auth token from username and password or a certificate, valid for 35 minutes, or OAuth2 authorization-code or device grant, since client credentials is not supported. Anaplan has no webhooks, enforces 600 requests per minute tenant-wide, and locks the model while any action runs.

What moves between them

Two directions run on a schedule you set. Inbound, ml-connector reads Epicor Kinetic GL account balances, cost centers, and AP spend, formats them as the CSV each Anaplan import action expects, uploads the chunks, and runs the import into the planning model so actuals sit beside the budget. Outbound, it runs an Anaplan export action to pull approved budget and forecast values, downloads the file, and posts them into the Epicor general ledger against the matching accounts and cost centers. Chart-of-accounts and cost-center reference data is aligned first so every figure lands on a code that exists on both sides. Cadence usually follows the close calendar: actuals after each period, plan figures after each budget approval.

How ml-connector handles it

ml-connector stores both credential sets encrypted. On the Epicor Kinetic side it accepts the full tenant URL, company, and instance per customer, sends the API key alongside Basic or IdP bearer auth on every call, and refreshes the bearer token before its one-hour expiry. On the Anaplan side it requests a fresh auth token before the 35-minute window closes and discovers the workspace, model, and action IDs at runtime, keeping the lowercase workspace ID and uppercase model ID exactly as Anaplan requires. Because neither system pushes events, both flows poll: Epicor reads use an OData modified-date filter with top and skip paging, and Anaplan bulk jobs follow the upload, run, then poll-the-task pattern rather than trusting the initial response. Since Anaplan locks the model during any import or export, ml-connector serializes its actions against a model so they never collide with each other or with a CloudWorks job the customer already schedules. Epicor account and cost-center codes are mapped to Anaplan list members up front, so an inbound actual or an outbound plan value always references a member that exists. Anaplan returns HTTP 429 above its rate limit, so the connector backs off with jitter and retries, and every record carries a full audit trail and can be replayed if a downstream call fails.

A real-world example

A mid-sized industrial manufacturer with about 600 staff runs Epicor Kinetic for production, procurement, and finance, and uses Anaplan for its annual budget and rolling forecast. Before the integration, an analyst exported trial balances and cost-center spend from Epicor each month, reshaped them in spreadsheets, and uploaded them into Anaplan by hand, then re-keyed the approved budget back into Epicor at the start of the year. The manual handoffs were slow and a frequent source of mismatched account codes. With Epicor Kinetic and Anaplan connected, period actuals load into the planning model automatically, approved budget lines post back to the ledger, and the reference codes stay aligned, so planners compare plan to actual on current data instead of waiting on the next manual export.

What you can do

  • Load Epicor Kinetic GL balances, cost centers, and AP spend into Anaplan planning models after each period close.
  • Export approved Anaplan budget and forecast values back into the Epicor Kinetic general ledger.
  • Map Epicor account and cost-center codes to Anaplan list members so every figure lands on a valid code.
  • Bridge Epicor Basic or OAuth2 IdP auth and its API key to Anaplan's 35-minute auth token.
  • Poll both pull-only systems on your close calendar, serialized around Anaplan model locks, with retries and a full audit trail.

Questions

Which direction does data move between Epicor Kinetic and Anaplan?
Both directions. Actuals such as GL balances, cost centers, and AP spend move from Epicor Kinetic into Anaplan planning models, and approved budget and forecast values move from Anaplan back into the Epicor general ledger. Chart-of-accounts and cost-center reference data is aligned on both sides first so every figure references a code that exists in each system.
How does data get into Anaplan if it has no invoice or GL objects?
Anaplan stores everything as lists, modules, and line items rather than ERP objects, so ml-connector formats Epicor data as the CSV that a named Anaplan import action expects. It uploads the file in chunks, runs the import action, and polls the returned task until it completes. A model builder must have created the import and export actions in advance, since the API runs existing actions but cannot create them.
How does the integration handle the lack of webhooks on both systems?
Neither Epicor Kinetic nor Anaplan pushes events, so ml-connector polls both on the schedule you set, usually tied to your close calendar. Epicor reads use an OData filter on a modified-date field, and Anaplan jobs follow its asynchronous upload-run-poll pattern. Because Anaplan locks the model during any action, the connector serializes its work against a model and backs off on HTTP 429 to stay within the 600-requests-per-minute limit.

Related integrations

Connect Epicor Kinetic and Anaplan

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

Get started