Deltek and Google BigQuery integration
Deltek runs project accounting, billing, and the general ledger. Google BigQuery is the serverless warehouse where finance and project data is modeled and queried at scale. Connecting the two lets the records Deltek holds, such as project actuals, GL balances, AP and AR invoices, and employees, land in BigQuery tables for reporting without manual exports. ml-connector reads the agreed entities from Deltek Vantagepoint, maps them onto your BigQuery table schema, and loads them on a schedule you control. Because neither system pushes events for this flow, the connector drives every step by reading on a schedule and polling each BigQuery job to completion.
What moves between them
The main flow runs from Deltek into Google BigQuery. On each scheduled run, ml-connector reads the agreed Vantagepoint entities, such as project actuals, GL account balances, AP and AR invoices, journal entries, and employees, paging through with page and pagesize and tracking the last run so only new and changed records are pulled. It writes those records into the customer-defined BigQuery tables that match each entity, using a streaming insert for incremental rows or a batch load job for larger pulls. Deltek is the system of record, so the connector does not write financial entries back from BigQuery into Vantagepoint; where a flow needs a warehouse figure, it can run a BigQuery query and read the result. Cadence follows your reporting needs, from a nightly load to a refresh after month-end close.
How ml-connector handles it
ml-connector stores both credential sets encrypted. For Deltek it accepts the full tenant URL per customer, since Vantagepoint publishes no shared base address, completes the OAuth2 password-grant login, and refreshes the bearer token before it expires; the API user is configured with full field visibility so fee and cost values do not return as zero. For BigQuery it signs a JWT with the service account private key and exchanges it for an access token that it refreshes before the 3600 second expiry, preserving the literal newlines in the PEM key so JWT signing does not break. Each Deltek entity is mapped onto a configurable dataset and table, and Deltek fields are typed to BigQuery columns, with new optional columns added safely while renames require a new table. Writes carry an insertId for best-effort streaming dedup and load and query jobs use a caller-supplied jobId so a retry returns the existing job rather than duplicating it. Because BigQuery jobs are asynchronous and send no events, the connector polls each job until its state is DONE and checks for an error result, with exponential backoff. It reads Deltek by polling on a schedule, since the workflow webhooks are record-save callbacks rather than a full feed. Time-partitioned tables keep query and load costs low, and every record carries a full audit trail and can be replayed if a step fails.
A real-world example
A mid-sized engineering and architecture firm with around 300 staff runs Deltek Vantagepoint for project accounting, billing, and the general ledger, and reports across the business in Google BigQuery alongside CRM and timesheet data. Before the integration, an analyst exported project profit and loss, GL balances, and AR aging from Vantagepoint into spreadsheets each week and loaded them into BigQuery by hand, so the dashboards always trailed the books and reconciling the extracts ate hours. With Deltek and Google BigQuery connected, project actuals, GL balances, and invoices load into the warehouse tables automatically on a schedule, typed to the agreed columns. The dashboards refresh against current Deltek figures and the manual export-and-load step is gone.
What you can do
- Load Deltek project actuals, GL balances, AP and AR invoices, journal entries, and employees into customer-defined Google BigQuery tables.
- Map each Deltek entity onto a configurable BigQuery dataset and table, typing Deltek fields to warehouse columns.
- Bridge the Deltek tenant OAuth2 password-grant token and the Google BigQuery service account JWT, refreshing each before it expires.
- Write with an insertId for streaming dedup and a stable jobId on load and query jobs, then poll each BigQuery job to DONE.
- Read Deltek incrementally on a schedule and keep a full audit trail on every record, since neither system pushes events for this flow.
Questions
- Which direction does data move between Deltek and Google BigQuery?
- The main flow is Deltek into Google BigQuery. Project actuals, GL balances, AP and AR invoices, journal entries, and employees are read from Vantagepoint and loaded into customer-defined BigQuery tables for reporting. Deltek is the system of record, so ml-connector does not write financial entries back from BigQuery into Vantagepoint; where a flow needs a warehouse figure, the connector can run a BigQuery query and read the result.
- Does Google BigQuery hold the invoice or GL tables, or does ml-connector create them?
- BigQuery is a schema-flexible warehouse, not an ERP, so it has no native invoice or GL account objects. The customer defines the tables, such as invoices, gl_entries, and projects, inside a dataset, and ml-connector accepts a configurable dataset and table per Deltek entity and maps Deltek fields onto those columns. Adding new optional columns is safe, but renaming or removing a column requires a new table.
- How does the integration handle that neither system pushes events for this sync?
- Deltek Vantagepoint webhooks are workflow-triggered record-save callbacks rather than a full accounting feed, and Google BigQuery sends no webhooks at all, so ml-connector polls. It reads Deltek on a schedule, paging with page and pagesize and tracking the last run for incremental pulls, then writes to BigQuery and polls each load or query job until its state is DONE. Load and query jobs carry a caller-supplied jobId so a retry returns the existing job instead of duplicating it.
Related integrations
More Deltek integrations
Other systems that connect to Google BigQuery
Connect Deltek and Google BigQuery
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started