Epicor Kinetic and Tableau integration
Epicor Kinetic runs your finance and operations. Tableau turns your data into dashboards and reports. Connecting the two keeps your BI platform fed with the latest AP, PO, customer, and GL data from your ERP without manual extract or re-keying. Finance teams get real-time visibility into spend, aging, and compliance through Tableau without waiting for a batch job. ml-connector polls Epicor on a schedule you control and refreshes Tableau datasources so your dashboards always reflect the current state.
What moves between them
Data flows from Epicor Kinetic into Tableau on a polling schedule. Vendor master records, AP invoices, purchase orders, and GL accounts are queried from Epicor using OData filters on UpdatedOn timestamps, then mapped to Tableau datasources in designated projects. Tableau datasources are refreshed on completion of each sync cycle so dashboards and reports display current balances, aging, and spend data. Tableau views remain read-only and are not updated by the integration. The sync runs on a schedule you define (daily, weekly, or after batch runs in Epicor).
How ml-connector handles it
ml-connector stores both credential sets encrypted: Epicor's API Key and bearer token (refreshed hourly before expiry), and Tableau's Personal Access Token (exchanged for session token on each datasource refresh call). On the Epicor side, ml-connector accepts the full tenant URL and company segment, constructs OData queries with $filter (e.g., UpdatedOn gt 2026-06-10T14:30:00Z), and uses offset pagination ($top=100&$skip=0) to retrieve batches of records. For AP invoices and POs, which require two-step writes in Epicor, ml-connector follows the GetNewXxx/UpdateMaster pattern to ensure proper object state. On the Tableau side, ml-connector maps Epicor entities to datasources by project and initiates refresh requests via the extract refresh endpoints (Cloud) or schedule triggers (Server). Tableau session tokens expire after 240 minutes, so ml-connector refreshes the PAT and obtains a fresh session token before each datasource refresh. If a refresh fails due to token expiry or network timeout, ml-connector retries with exponential backoff. All records are logged with full audit trail including source record IDs, mapped dimensions, and refresh status.
A real-world example
A mid-sized manufacturing company runs Epicor Kinetic for procurement, AP, and GL. The finance team uses Tableau dashboards to monitor vendor spend, AP aging, and purchase order status. Before the integration, the BI team manually exported monthly AP snapshots from Epicor and loaded them into Tableau, causing dashboards to lag by days and requiring rework when invoices were posted or voided in Epicor after the export. With Epicor Kinetic and Tableau connected, vendor and invoice data flows automatically on a daily schedule. Tableau dashboards refresh overnight so finance has current AP aging and spend by vendor every morning, eliminating manual exports and keeping the BI layer in sync with the ERP.
What you can do
- Poll Epicor Kinetic vendors, AP invoices, purchase orders, and GL accounts on a schedule you define, using OData filters on UpdatedOn to capture only changed records.
- Map Epicor entities to Tableau datasources by project and refresh Tableau extracts on completion of each sync cycle.
- Authenticate Epicor with API Key plus bearer token (refreshed hourly to prevent expiry), and Tableau with Personal Access Token session flow (refreshed every 240 minutes).
- Handle the Epicor two-step write pattern for complex objects and avoid polling unchanged records by anchoring to the previous sync timestamp.
- Track the full audit trail of every vendor, invoice, and GL account record including source ID, mapped dimension, and Tableau refresh status.
Questions
- Which direction does data flow between Epicor Kinetic and Tableau?
- Data flows from Epicor Kinetic into Tableau. Vendors, AP invoices, purchase orders, customers, parts, and GL accounts are polled from Epicor and published to Tableau datasources where they are refreshed and made available for dashboards and reports. Tableau views are read-only and no data flows back to Epicor.
- How does ml-connector handle Epicor's lack of webhooks and the need to poll for changes?
- ml-connector queries Epicor using OData $filter on the UpdatedOn date field to retrieve only records changed since the last sync. Offset pagination ($top=100&$skip=0) retrieves records in batches. The sync runs on a schedule you control (daily, weekly, after batch runs), so dashboards refresh on a cadence aligned with your business cycle rather than waiting for a push from Epicor.
- What happens if the Epicor or Tableau authentication token expires during a sync?
- Epicor bearer tokens expire in approximately one hour, so ml-connector refreshes the token before expiry by exchanging the API Key. Tableau session tokens expire after 240 minutes (default), so ml-connector obtains a fresh session token by exchanging the Personal Access Token before each datasource refresh. If either call fails due to token expiry, ml-connector retries with exponential backoff and logs the event in the audit trail.
Related integrations
More Epicor Kinetic integrations
Other systems that connect to Tableau
Connect Epicor Kinetic and Tableau
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started