ml-connector
SYSPROMicrosoft Power BI

SYSPRO and Microsoft Power BI integration

SYSPRO runs manufacturing and distribution finance, procurement, and inventory. Microsoft Power BI turns data into insights and dashboards for finance teams and management. Connecting them keeps your Power BI reports fed with fresh SYSPRO master files and transaction records without manual export-import. GL balances, aging schedules, and inventory metrics update automatically, and finance reporting starts with current data. ml-connector bridges the very different authentication and data push models on each side and moves the data on a schedule tied to your business cycle.

How SYSPRO works

SYSPRO 8 exposes GL accounts, GL balances, AP suppliers and invoices, AP postings, AR customers and invoices, PO headers and detail lines, and inventory masters and warehouse balances through OData GET endpoints with HTTP Basic Auth (operator code plus OData password generated in Operator Maintenance) and through e.net Business Objects REST/SOAP endpoints that require a session token from Utilities/Logon. SYSPRO publishes data per company code and optionally per warehouse, so the instance URL includes both the server address and the company scope. SYSPRO has no outbound webhooks, so data is read by polling the OData tables filtered on timestamp fields such as PostDate, InvoiceDate, and LastModified. SYSPRO Cloud prohibits direct database access and requires use of the documented API layers.

How Microsoft Power BI works

Microsoft Power BI accepts data through push datasets, which are REST API endpoints that receive JSON rows matching a pre-defined table schema (column names and data types). Power BI authentication uses OAuth 2.0 client credentials with a service principal identity that must be registered in your Azure AD and added as a Member or Admin on each Power BI workspace it needs to populate. The access token expires after roughly one hour and must be refreshed by re-requesting from the Azure token endpoint. Power BI also supports triggered dataset refreshes for imported or connected datasets, though push datasets are updated directly via row writes. Power BI has no outbound webhooks or event push to external systems. Developer settings in the Power BI Admin portal must explicitly allow service principals to use the API.

What moves between them

Data flows from SYSPRO into Microsoft Power BI. ml-connector polls SYSPRO's OData tables for GL postings, AP invoices, AP postings to AP expense accounts, AR invoices, AR postings, PO headers and detail, and inventory masters with warehouse balances on a schedule you set (typically 5 to 15 minutes for fresh financial reporting). Each record is transformed into the column schema of your Power BI push datasets and written via the Power BI REST API. Reference data such as GL accounts, cost centers, AP suppliers, and AR customers is read from SYSPRO and synced into Power BI lookup tables so that dimensions are aligned. SYSPRO is read-only via the integration, so ml-connector never writes back to SYSPRO; all writes stay within Power BI.

How ml-connector handles it

ml-connector stores the SYSPRO operator code and OData password encrypted, and retrieves a fresh session token from SYSPRO's Utilities/Logon endpoint before each polling run. It filters OData query results on the PostDate, InvoiceDate, and LastModified timestamp fields to pull only changed records since the last sync. The service principal client credentials for Power BI are also stored encrypted, and a fresh Bearer token is requested from the Azure token endpoint before each dataset write. ml-connector maps SYSPRO GL accounts, suppliers, customers, and warehouse codes to the column names in your Power BI dataset schema and posts rows in JSON format to the push dataset endpoint. If a row write fails due to schema mismatch, the error is logged and can be reviewed in the audit trail. If the Power BI token refresh returns an error, ml-connector backs off with exponential jitter and retries. Session tokens that expire mid-run are refreshed transparently. Every record includes the SYSPRO source ID, the timestamp it was read, and the timestamp it was posted to Power BI, so any row can be traced back through both systems.

A real-world example

A mid-sized discrete manufacturer uses SYSPRO for GL, AP, AR, and inventory, and Power BI for executive dashboards and weekly finance reports. Before the integration, the accounting team exported GL balances and AP aging reports from SYSPRO each Monday morning, transformed them in Excel, and uploaded them to Power BI datasets by hand, a process that took two hours and often introduced manual errors. With SYSPRO and Power BI connected, the GL and AP data flows automatically every 30 minutes, so the dashboards show current numbers. The weekly report is ready when the team arrives, and reconciliation between SYSPRO and Power BI is no longer a manual task.

What you can do

  • Sync GL accounts, GL balances, and GL postings from SYSPRO into Power BI tables updated on your schedule.
  • Push AP supplier invoices, invoice postings, and AP aging data into Power BI, mapped to GL expense accounts.
  • Sync AR invoices, customer records, and AR aging schedules into Power BI for cash flow and receivables reporting.
  • Authenticate SYSPRO with operator credentials and session tokens, and Power BI with OAuth service principal and Azure bearer tokens.
  • Poll SYSPRO OData on a schedule starting at 5 minutes, filtered on timestamp fields to pull only changed records, with automatic token refresh and a full audit trail on every row.

Questions

Which direction does data move between SYSPRO and Microsoft Power BI?
Data flows from SYSPRO into Power BI. ml-connector polls SYSPRO's GL postings, invoices, suppliers, customers, and inventory tables and pushes them into your Power BI push datasets as rows. Power BI is a read-only destination in this integration; ml-connector never writes back to SYSPRO.
How does ml-connector handle SYSPRO's session token and OData authentication?
ml-connector stores the SYSPRO operator code and OData password encrypted. Before each polling run, it calls SYSPRO's Utilities/Logon endpoint to retrieve a fresh session token, which it passes on all e.net Business Objects calls. OData calls use HTTP Basic Auth with the operator code and password. Session tokens are refreshed transparently if they expire during a run.
What happens if the Power BI dataset schema changes or a row write fails?
ml-connector validates each row against your Power BI dataset schema before posting. If a column is missing or a data type mismatch occurs, the error is logged with the row data and the source record ID, and the audit trail shows the exact timestamp and error message. You can replay the row once the schema issue is fixed.

Related integrations

Connect SYSPRO and Microsoft Power BI

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

Get started