Plex and Microsoft Power BI integration
Plex runs manufacturing and finance for discrete manufacturers, capturing production schedules, inventory movements, supplier performance, and cost allocations. Microsoft Power BI turns data into dashboards and reports your operations team lives in. Connecting the two lets you build live Power BI reports on Plex production and procurement data without exporting flat files or re-keying numbers. Orders, inventory, suppliers, and GL transactions flow from Plex into Power BI on a schedule you control, and the Power BI service principal handles the OAuth2 handshake so no credentials live in reports.
What moves between them
The main flow runs from Plex into Power BI. ml-connector polls Plex for updated sales orders, purchase orders, inventory, suppliers, and GL transactions on a schedule you set (5 to 15 minutes typical). Each record is transformed to match a Power BI push dataset table schema and posted to Power BI via REST API. The connector does not write back to Plex - all flows are read from Plex and write to Power BI. Reporting is read-only in Power BI, so analysts can visualize the latest Plex data without touching source records.
How ml-connector handles it
ml-connector stores both sets of credentials encrypted and requests an OAuth2 token from Plex (https://accounts.plex.com/oauth2/token) with client credentials before each poll cycle. Tokens expire and are refreshed on demand. For Power BI, the service principal (also OAuth2 client credentials) is authenticated against Microsoft Entra ID once at setup, and the access token is passed as a Bearer header on every POST to the Power BI REST API. You define Power BI push dataset schemas in advance (table name, columns, datatypes), and ml-connector maps Plex entities to those schemas - for example, Plex sales orders map to a Power BI SalesOrders table with OrderID, CustomerName, OrderDate, and Amount columns. Role-based permissions in Plex are respected - if the integration user lacks access to a Plex role, the API returns 403 and ml-connector surfaces the error. Power BI tokens expire every hour and are automatically refreshed. Because Plex offers no idempotency key support on the REST API, ml-connector uses unique external reference fields (such as Plex's internal entity IDs) to detect duplicate pushes and avoid re-posting the same record to Power BI.
A real-world example
A mid-sized discrete manufacturer (500+ employees, 3 plants) runs Plex for production scheduling, procurement, and job costing, and uses Power BI for daily operations dashboards. Before the integration, the operations team exported Plex sales orders and inventory reports by hand once per shift and loaded them into Excel pivot tables, then refreshed Power BI manually at day-end. Supply chain managers had no visibility into supplier invoice aging or open purchase orders without logging into Plex. With Plex and Power BI connected, sales order and inventory data refresh every 10 minutes in Power BI, and supplier performance (invoice aging, order-to-receipt cycle time) is a live dashboard that the procurement team watches throughout the day. Manual exports are gone, and the operations team spots bottlenecks in real time instead of in a daily report.
What you can do
- Push Plex sales orders, purchase orders, and open inventory into Power BI datasets on a polling schedule you set.
- Sync Plex suppliers, parts, and GL accounts as reference data so Power BI reports can join transaction data to master data.
- Transform Plex records to match Power BI table schemas (columns, datatypes) before posting, so reports and dashboards consume clean, structured data.
- Authenticate Plex with OAuth2 client credentials and Power BI with a service principal, with automatic token refresh when credentials expire.
- Detect duplicate records using Plex entity IDs so the same sales order never appears twice in Power BI, even if polling retries.
Questions
- Which direction does data move between Plex and Power BI?
- Data flows one direction: from Plex into Power BI. ml-connector polls Plex sales orders, purchase orders, inventory, suppliers, and GL transactions, transforms them to match your Power BI dataset schemas, and posts the rows to Power BI. Power BI is a reporting destination, not a source system, so ml-connector does not write back to Plex.
- Does Plex require any special setup for polling if we use SOAP or SFTP instead of REST?
- Plex SOAP Web Services require Basic auth with username, password, and a company code (PCN). Stored procedures available in SOAP vary by customer configuration, and their idempotency is not guaranteed - you must test each datasource for duplicate behavior. For bulk historical loads, Plex DataSources can export to scheduled SFTP flat files that ml-connector can import separately.
- How does ml-connector handle Power BI's hourly token expiry and Plex role-based permissions?
- ml-connector requests a fresh OAuth2 token from both Plex and Power BI (Microsoft Entra ID) at the start of each poll cycle and caches it until it expires. If Plex returns 403 because the integration user lacks a required role, ml-connector surfaces the error so you can grant the role in Plex. For Power BI, the service principal must be a Member or Admin on each workspace, and developer settings must be enabled in the Power BI Admin portal before the integration can post datasets.
Related integrations
More Plex integrations
Other systems that connect to Microsoft Power BI
Connect Plex and Microsoft Power BI
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started