Microsoft Dynamics NAV and Looker integration
Dynamics NAV holds your company's financial core: vendors, customers, purchase and sales invoices, and general ledger entries. Looker turns that data into business intelligence and operational reporting. Connecting the two keeps your dashboards fed with fresh ERP data so finance teams can monitor cash flow, analyze spending patterns, and close books faster. ml-connector handles the OAuth credentials on both sides and the mechanics of Dynamics NAV's webhook subscription renewal, moving the records you care about on a schedule you control.
What moves between them
The main flow runs from Dynamics NAV into Looker. Purchase invoices, sales invoices, GL entries, vendors, items, and dimensions flow from Dynamics NAV on a schedule aligned to your monthly close cycle or daily for high-frequency changes. Looker consumes these records and models them as dimensions and fact tables in the connected warehouse, making them available in Looks, dashboards, and scheduled reports. Looker is read-only on the ERP side, so ml-connector does not write updates back to Dynamics NAV.
How ml-connector handles it
ml-connector stores Dynamics NAV's OAuth2 client credentials and Looker's OAuth2 client credentials encrypted, refreshing Looker's bearer token every 55 minutes before expiry. On the Dynamics NAV side, it manages webhook subscriptions on a 2-day cycle (renewing before the 3-day expiry) to catch GL entries, invoices, and vendor changes in near-real-time, and also polls for records outside the webhook notification window. For Looker, it either pushes records directly via Scheduled Plan webhooks or stages data for Looker's scheduled extracts to pull from a cloud storage bucket. Because Looker's query API is limited to 5000 rows per call, large datasets are paginated. Mapping is enforced through Looker's semantic layer: vendors and GL accounts in Dynamics NAV are dimensioned by department and cost center, and invoices are measured by amount and date. If a subscription expires before renewal, ml-connector will backfill missed records on the next poll. Every record carries an audit trail and can be replayed if a downstream load fails.
A real-world example
A mid-market discrete manufacturer runs Dynamics NAV for finance and operations, with regional purchasing teams entering invoices daily. Before the integration, the CFO exported NAV data to CSV and loaded it weekly into Looker dashboards, so reporting lagged actual spending by 5-7 days and dashboards were often stale by Monday morning. With Dynamics NAV and Looker connected, GL entries and invoices land in Looker within minutes of posting in NAV (either via webhook or hourly polling), so regional spend and variance-to-budget are live. The CFO's cash flow and procurement dashboards are now current, month-end close queries run against data that is already reconciled, and the manual extract-and-load step is gone.
What you can do
- Load GL entries, invoices, vendors, and items from Dynamics NAV into Looker for real-time financial analytics and operational reporting.
- Manage Dynamics NAV webhook subscriptions (renewing before 3-day expiry) and poll for records outside the webhook window.
- Authenticate Dynamics NAV via OAuth2 client credentials and Looker via OAuth2, managing token refresh on both sides.
- Map Dynamics NAV dimensions (departments, cost centers) and GL accounts into Looker explores for multi-dimensional spend and profitability analysis.
- Deliver data on a schedule tied to your close cycle or daily cadence, with full audit trail and record replay on downstream failures.
Questions
- Which direction does data move between Dynamics NAV and Looker?
- The main flow is Dynamics NAV into Looker. GL entries, invoices, vendors, items, and dimensions move from Dynamics NAV into Looker's connected warehouse for analysis and reporting. Looker is read-only on the financial data side, so ml-connector does not write records back to Dynamics NAV.
- How does ml-connector handle Dynamics NAV's 3-day webhook subscription expiry?
- ml-connector renews webhook subscriptions on a 2-day cycle, before they expire. If a subscription lapses, it also polls for missed records on the next sync cycle so no data is lost. The combination of webhooks (near-real-time) and polling (catchup) ensures reliable delivery.
- What happens when Looker's API token expires?
- Looker tokens expire after 1 hour with no refresh endpoint, so ml-connector re-authenticates every 55 minutes by calling the login endpoint with its stored OAuth2 credentials. This ensures every Looker API call carries a valid bearer token without interruption.
Related integrations
More Microsoft Dynamics NAV integrations
Other systems that connect to Looker
Connect Microsoft Dynamics NAV and Looker
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started