Deltek and Microsoft Power BI integration
Deltek Vantagepoint holds your project, accounting, and firm data. Microsoft Power BI is where your team builds reports and dashboards. This connection reads finance and project records from Deltek and pushes them into Power BI as dataset rows, so reports always reflect current ERP data without manual exports. ml-connector handles the very different authentication on each side and moves the data on a schedule you set. Because Power BI is a reporting destination and not a source of truth, the flow runs one way, from Deltek into Power BI.
What moves between them
Data moves one way, from Deltek into Microsoft Power BI. ml-connector polls Deltek Vantagepoint for AP invoices, AR invoices, journal entries, payments, projects, firms, and GL accounts, maps each entity to a Power BI push dataset table, and POSTs the rows. The cadence is a cron schedule you choose, commonly hourly or daily, so dashboards stay close to current without overrunning Power BI push limits. GL postings and project data are read from Deltek and never written back, since Power BI is a read-only analytics layer that owns no transactional records.
How ml-connector handles it
ml-connector stores both credential sets encrypted. On the Deltek side it accepts the full tenant URL per customer, requests an OAuth2 password-grant token, and refreshes it when a call returns 401. On the Power BI side it requests a service principal token with the powerbi/api/.default scope, since the Microsoft Graph scope returns 401, and resolves the workspace name to a GUID before any call. Each Deltek entity maps to a Power BI table whose columns match the Deltek key fields, for example invoice number, vendor, amount, GL account, and project. Because neither system offers a usable webhook for this flow, ml-connector polls Deltek pages on a schedule and pushes net-new rows tracked by a watermark, or deletes and re-posts a table for a full refresh, which avoids the duplicate rows that result from append-only pushes. It respects the Power BI push limits of 10,000 rows per request and 120 POST requests per minute per dataset, and honors HTTP 429 Retry-After with exponential backoff on both sides. Every record carries a full audit trail and can be replayed if a downstream call fails.
A real-world example
A 300-person architecture and engineering firm runs Deltek Vantagepoint for projects, billing, and accounting, and its leadership team lives in Microsoft Power BI dashboards. Before the integration, an analyst exported AR invoices, project budgets, and GL balances from Deltek into spreadsheets each week and refreshed the Power BI files by hand, so the dashboards were always a few days stale and broke whenever a column moved. With Deltek and Microsoft Power BI connected, invoice, project, and ledger rows push into Power BI tables on a daily schedule, allocated by project and GL account. Partners open project profitability and cash dashboards that match the ERP, and the weekly export step is gone.
What you can do
- Push Deltek AP invoices, AR invoices, journal entries, and payments into Microsoft Power BI dataset tables on a schedule.
- Feed Deltek project, firm, and GL account data into Power BI so dashboards reflect current ERP records.
- Map each Deltek entity and its key fields to a matching Power BI push dataset table and columns.
- Bridge the Deltek tenant OAuth2 token and the Microsoft Entra service principal credential on every run.
- Track a watermark to push only net-new rows, with full-refresh replace, audit trail, and error replay.
Questions
- Which direction does data move between Deltek and Microsoft Power BI?
- Data moves one way, from Deltek into Microsoft Power BI. Power BI is a reporting and analytics destination that owns no transactional finance records, so ml-connector reads invoices, journal entries, projects, and GL accounts from Deltek and pushes them into Power BI tables. Nothing is written back from Power BI into Deltek.
- Does this integration use webhooks or scheduled polling?
- It uses scheduled polling and push. Power BI sends no outbound webhooks to the connector, and Deltek Vantagepoint only offers workflow-triggered callbacks rather than a general event bus. ml-connector polls Deltek on a cron schedule you set, then POSTs the rows into Power BI push dataset tables, optionally triggering a dataset refresh.
- How does ml-connector avoid duplicate rows in Power BI?
- Power BI push dataset rows are append-only with no idempotency key, so repeated pushes would stack duplicates. ml-connector tracks a watermark and pushes only net-new Deltek records, or deletes all rows in a table and re-posts the full set for a clean replace. It also respects the Power BI limits of 10,000 rows per request and 120 POST requests per minute per dataset.
Related integrations
More Deltek integrations
Other systems that connect to Microsoft Power BI
Connect Deltek and Microsoft Power BI
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started