Blog

Replacing Direct OData in Power BI: Architecting Enterprise Semantic Models & Fabric Direct Lake for Dynamics 365 Business Central

Enterprise VP of Data and Lead ERP Architect reviewing Power BI Direct Lake dashboards for Dynamics 365 Business Central

Executive Briefing: Modernizing Enterprise ERP Business Intelligence

  • The Operational Crisis: Connecting Microsoft Power BI directly to Microsoft Dynamics 365 Business Central via native OData V4 web services creates severe SQL table locks, 100-second query timeouts, and performance degradation across core ERP transactional operations.
  • The Architectural Flaw: OData V4 is designed as a lightweight entity-level integration protocol, not a high-throughput analytical query layer. Forcing Business Central’s operational database (OLTP) to perform complex multi-table joins over millions of ledger rows compromises core order processing and inventory posting.
  • The Modern Solution: Modern enterprise data architecture cleanly decouples transactional workloads from analytical reporting. By landing ERP tables into Microsoft Fabric OneLake as Delta Parquet files, organizations unlock Power BI Direct Lake mode—delivering sub-second query performance without data duplication or scheduled refresh bottlenecks.
  • Star-Schema Precision: Migrating from wide, denormalized flat tables to optimized star-schema semantic models reduces VertiPaq memory consumption by up to 75% and resolves Business Central’s complex multi-dimensional posting structures (Dimension Set IDs).
  • Enterprise Governance & RLS: Modern Fabric semantic models preserve ERP row-level security (RLS) and object-level security (OLS) through Microsoft Entra ID integration, ensuring branch managers, regional controllers, and executives access strictly authorized telemetry.

1. The Enterprise Reality: Why Direct OData Connectors Break at Scale

For growing mid-market and enterprise organizations running Microsoft Dynamics 365 Business Central, the promise of native cloud analytics often begins with a seductive simplicity: open Power BI Desktop, select the built-in Business Central connector, authenticate via Microsoft Entra ID (Azure AD), select published Web Services pages, and start building financial reports.

During proof-of-concept testing with a few thousand transactions, this approach feels seamless. However, as business transaction volume scales—as historical General Ledger entries exceed 250,000 records, Sales Shipment Lines surpass half a million rows, and Item Ledger Entries multiply across multiple warehouse locations—this direct-query integration pattern inevitably breaks down.

Enterprise IT directors and Chief Financial Officers begin witnessing acute operational friction:

  • The 100-Second Gateway Timeout: The Business Central SaaS runtime enforces strict HTTP request timeout thresholds. Complex analytical queries that scan high-volume ledger tables frequently exceed 100 seconds, resulting in aborted data refreshes and failed scheduled morning reports.
  • Severe SQL Lock Contention: Every time a scheduled Power BI dataset refresh executes against raw Business Central web services, the underlying SQL Server database must maintain read isolation. In high-velocity transaction environments, analytical reads clash with operational writes—causing deadlock errors and locking out users attempting to post sales orders, warehouse shipments, or cash receipts.
  • The 20,000-Row Pagination Overhead: OData feeds enforce client-side pagination limits (typically 20,000 entities per page). Ingesting 2,000,000 ledger rows requires hundreds of sequential HTTP round-trips over the public internet, consuming massive network bandwidth and taking hours to complete a single import cycle.
  • Business Central Server Service Tier (NST) Exhaustion: Translating OData JSON payloads into relational data strains the Business Central mid-tier server resources, causing CPU spikes and throttling API calls across all connected line-of-business applications.

The conclusion among senior cloud data architects is definitive: OData V4 is an operational data integration protocol, not an analytical data warehouse interface. To achieve enterprise-grade business intelligence, organizations must decouple transactional ERP operations from their analytical semantic layer.

2. Architectural Comparison: Direct OData vs. Import Mode vs. Direct Lake

To establish a resilient reporting strategy, technology leadership must evaluate the four primary paradigms for connecting Power BI to Dynamics 365 Business Central:

Architecture Dimension Direct OData (Native Web Services) Power BI Import Mode (Scheduled Cache) DirectQuery (Live SQL/Dataverse) Microsoft Fabric Direct Lake (Delta Parquet)
Query Execution Engine Business Central Server Tier & SQL OLTP Power BI VertiPaq In-Memory Cache Live translated SQL sent to source database VertiPaq directly reading Delta Parquet in OneLake
ERP Performance Impact Severe: High risk of SQL table deadlocks during posting Moderate: Heavy extraction spikes during scheduled refresh High: Every visual click sends live translated queries to ERP Zero: Queries hit OneLake storage, completely decoupled from ERP
Visual Interaction Latency Slow (5 – 30+ seconds per visual render) Sub-second (cached in memory) Slow to moderate (2 – 15 seconds) Sub-second (raw columnar memory mapping)
Data Freshness & Refresh Latency Real-time (subject to gateway timeouts) Periodic (8 to 48 scheduled batch refreshes/day) Live / Real-time Near real-time (continuous delta lake synchronization)
Data Scale Limit Crashes past ~100k rows Limited by Power BI Capacity memory (1GB – 400GB) Limited by underlying SQL data source throughput Practically unlimited (multi-terabyte lakehouse scale)
Data Duplication & Ingestion Overhead No duplication, but high network latency Full copy duplicated in proprietary Power BI dataset No duplication Single source of truth in open Delta Parquet format

Enterprise Power BI Data Engineer and Corporate Financial Controller analyzing star-schema semantic data models and Microsoft Fabric Direct Lake telemetry

3. The Microsoft Fabric & OneLake Architectural Paradigm Shift

Microsoft Fabric represents the most significant architectural evolution in Microsoft’s data platform in over a decade. For Business Central enterprises, Fabric eliminates the painful trade-off between the ultra-fast visual performance of Import Mode and the real-time access of DirectQuery.

At the center of this revolution is OneLake and Direct Lake mode:

How Direct Lake Eliminates the VertiPaq Refresh Tax

In traditional Power BI Import Mode, data must be extracted from the source, transferred across the network, transformed, and loaded into an in-memory VertiPaq columnar database. This process requires massive compute, consumes memory, and creates hours of scheduled refresh delays.

In Direct Lake mode, the Power BI query engine loads data directly from OneLake Delta Parquet files into memory without any data translation or duplication. Because Delta Parquet uses columnar compression identical to VertiPaq, Power BI simply maps the files straight into memory columns (a process called Framing). Reports query multi-million row ERP datasets with the sub-second speed of Import Mode, but with zero scheduled dataset refresh overhead.

When an executive clicks a slicer on an executive revenue dashboard, the query does not execute against Business Central’s operational database. Instead, it hits the decoupled Microsoft Fabric Lakehouse. Business Central users experience zero lockups or slow posting times, even while fifty analysts run intensive ad-hoc analytics simultaneously.

4. Designing the Enterprise Ingestion Pipeline: Business Central to OneLake

To feed Microsoft Fabric with clean, timely ERP data without putting strain on the Business Central runtime, enterprise architects implement one of three battle-tested data extraction pipelines:

Pattern A: Dataverse Synapse Link / Microsoft Fabric Link (Zero-ETL Replicas)

For organizations utilizing Business Central virtual tables synchronized with Microsoft Dataverse, Microsoft provides the Fabric Link. With zero custom ETL pipelines, designated Business Central entities are continuously mirrored into OneLake as Delta Lake tables.

Changes in customer records, sales transactions, or posted invoices are automatically captured via low-overhead transaction log change data capture (CDC) and written directly into OneLake in open Delta Parquet format within minutes.

Pattern B: Azure Data Factory (ADF) / Fabric Data Pipelines with API Queries

For high-volume transaction entities (such as Item Ledger Entry, G/L Entry, and Detailed Cust. Ledg. Entry), enterprise teams use compiled AL API Queries rather than standard OData pages:

  • PageType = API vs. QueryType = API: Standard OData pages run through Business Central’s full UI page validation logic and event triggers. In contrast, compiled QueryType = API objects execute direct, optimized SQL SELECT queries with compiled joins, executing up to 12x faster while consuming a fraction of the mid-tier memory.
  • Incremental Delta Loading: Instead of executing full table scans, Fabric Pipelines extract only delta records where SystemModifiedAt > @last_pipeline_watermark. This reduces extraction windows from 45 minutes to under 20 seconds.
  • Landing into Bronze Lakehouse: The extracted JSON or Parquet streams land in the Fabric Lakehouse “Bronze” raw zone, partitioned by year and month.

Pattern C: Medallion Architecture (Bronze → Silver → Gold)

Enterprise data maturity requires organizing ERP tables into a standardized Medallion architecture inside Microsoft Fabric:

  1. Bronze Layer (Raw Storage): 1:1 raw ingestion of Business Central tables with original technical schema names (e.g., G_L_Entry, Cust_Ledger_Entry, Sales_Invoice_Line) and transaction watermarks.
  2. Silver Layer (Cleansed & Conformed): Automated PySpark or SQL notebook routines clean dirty data, cast cryptic integer option fields into human-readable business strings (e.g., converting Document Type 2 into Invoice), standardize UTC timestamps into operational fiscal calendars, and deduplicate transaction lines.
  3. Gold Layer (Curated Dimensional Star-Schema): Tables are modeled into formal dimensional entities—distinguishing transactional facts from descriptive dimensions, pre-calculating currency conversions, and building enterprise semantic layers ready for Direct Lake consumption.

5. Mastering Enterprise Semantic Modeling: The Star-Schema Mandate

The single most destructive practice in enterprise ERP reporting is the generation of “flat, wide tables”—extracting twenty joined tables into a single monstrous 80-column view. While this feels intuitive in Microsoft Excel, it completely destroys the performance of Power BI’s VertiPaq and Direct Lake columnar compression engines.

A true enterprise reporting architecture requires a strictly governed Star-Schema design:

// Enterprise Star-Schema Architecture for Dynamics 365 Business Central

[Fact Tables] (Transactional Measures & Numeric Values)
  • Fact_GeneralLedger: Amount, Debit Amount, Credit Amount, Dimension Set ID, G/L Account No, DateKey
  • Fact_SalesTransactions: Quantity, Line Amount, Unit Cost, Margin, Posting DateKey, CustomerKey, ItemKey
  • Fact_InventoryValuation: Quantity On Hand, Unit Cost, Total Cost Value, LocationKey, ItemKey

[Dimension Tables] (Descriptive Filter & Slicing Context)
  • Dim_Date: DateKey, Fiscal Year, Fiscal Quarter, Fiscal Period, MonthName, WeekNumber, WorkingDayFlag
  • Dim_Customer: Customer No, Customer Name, Customer Posting Group, Credit Limit, Payment Terms, Territory
  • Dim_Item: Item No, Description, Inventory Posting Group, Item Category, Base Unit of Measure
  • Dim_GLAccount: Account No, Name, Income/Balance, Account Category, Account Subcategory, Reporting Level
  • Dim_DimensionSet: Dimension Set ID, Department Code, Cost Center Code, Project Code, Business Unit Code

Solving the Business Central Dimension Set Challenge

One of the greatest architectural complexities in Dynamics 365 Business Central reporting is the Dimension Set ID mechanism. In Business Central, transactions do not store individual dimension fields (Department, Project, Area, Customer Group) directly on the transaction line. Instead, every unique combination of dimensions is hashed into a single integer identifier called the Dimension Set ID and stored in Table 480 (Dimension Set Entry).

In direct OData reporting, joining Table 480 against every ledger entry causes catastrophic query slowdowns. In a modernized Fabric semantic model, architects solve this by pivoting Table 480 in the Silver Lakehouse transformation layer:

  • The continuous rows of Dimension Set Entries are flattened into a single, high-performance Dim_DimensionSet dimension table.
  • Each row in Dim_DimensionSet contains the unique Dimension Set ID as its primary key, with discrete columns for Department_Code, CustomerGroup_Code, Project_Code, and Salesperson_Code.
  • The Fact_GeneralLedger table joins directly to Dim_DimensionSet on a simple 1-to-many integer relationship. Slicing financial reports by multi-dimensional cost centers renders instantly in sub-second time.

6. Mitigating Direct Lake Fallback to DirectQuery

While Direct Lake mode delivers extraordinary performance, it possesses an essential operational safeguard called Fallback. If a query requests data that cannot be serviced via Direct Lake, the Power BI engine automatically drops back to DirectQuery mode—generating dynamic SQL queries against the Fabric SQL Endpoint.

While fallback ensures the user’s visual does not crash with a fatal error, it reintroduces visual latency and SQL computation overhead. Enterprise data engineers must architect their models to prevent accidental fallback:

Common Fallback Trigger Underlying Architectural Cause Production Remediation Strategy
Capacity Memory Guardrails Exceeded The size of the Delta Parquet columns loaded into memory exceeds the maximum RAM allocation for your Fabric Capacity SKU (e.g., F64 vs. F128). Apply columnar pruning in the Gold layer: remove unnecessary GUIDs, high-precision timestamps, and unused text fields from fact tables.
Unsupported DAX Calculations Using non-standard or deprecated DAX functions, complex calculated columns, or cross-island table references that require external evaluation. Pre-calculate complex transformation logic in the Fabric Lakehouse (via SQL or PySpark) rather than using calculated DAX columns. Keep DAX strictly for dynamic measure aggregations.
Complex Row-Level Security (RLS) Rules Applying dynamic RLS filtering on large fact tables that cannot be folded directly into the columnar memory framing. Implement RLS exclusively on dimension tables (e.g., filtering Dim_GLAccount or Dim_Customer) and allow standard 1-to-many relationship filtering to propagate down to the fact table.
Un-Framed Delta Lake Tables Newly ingested Parquet transactions have not yet been framed into memory by the Fabric semantic model. Configure automated semantic model refreshes via Fabric REST API immediately following pipeline write completion to force memory re-framing.

7. Enterprise Security & Governance: Synchronizing ERP Roles with Power BI

In enterprise ERP environments, data access control is paramount. A financial controller in the European subsidiary must not view North American payroll registers, and branch sales managers must only view accounts and margins within their assigned territories.

Modern Fabric semantic models achieve robust security without duplicating user management across systems:

Row-Level Security (RLS) via Microsoft Entra ID

Instead of manually maintaining user access lists in Power BI workspaces, architects establish dynamic Row-Level Security linked to Microsoft Entra ID security groups:

  • Responsibility Center & Dimension Security: Business Central native security filters (such as Global Dimension 1 restrictions) are replicated in the Dim_SecurityMapping table in Fabric.
  • Dynamic DAX Filtering: Power BI RLS filters evaluate the logged-in user via USERPRINCIPALNAME(), matching their Entra ID against their assigned dimension codes. The filtering occurs automatically in-memory without degrading report rendering times.

Object-Level Security (OLS) for Sensitive Financial Measures

While RLS restricts which rows a user can see, Object-Level Security (OLS) restricts which tables, columns, or measures exist for specific user personas. For example, operational staff reviewing inventory turnover reports can access quantities and turn ratios, but gross margin percentage, standard unit cost, and total landed cost columns are completely hidden from their metadata schema.

8. The 5-Phase Migration Playbook: From Legacy OData to Fabric Direct Lake

For organizations currently paralyzed by sluggish OData reports, legacy Jet Reports, or Management Reporter spreadsheets, transitioning to Microsoft Fabric Direct Lake requires a structured, zero-downtime implementation methodology:

Phase 1: Discovery & Performance Audit (Weeks 1 – 2)

Audit existing Power BI workspaces and Jet Reports models. Identify all published Business Central Web Services pages, query runtimes, refresh schedules, and error logs. Catalog business-critical financial KPIs, trial balance reports, and department-level P&L requirements.

Phase 2: Lakehouse Provisioning & Ingestion Pipelines (Weeks 3 – 5)

Provision Microsoft Fabric capacity. Deploy optimized AL API queries in Business Central for high-volume ledger tables. Configure Fabric Pipelines or Dataverse Fabric Link to orchestrate incremental delta extraction into the Bronze raw storage lakehouse.

Phase 3: Semantic Modeling & Star-Schema Transformation (Weeks 6 – 8)

Build Silver-to-Gold PySpark and SQL transformations. Deconstruct Dimension Set IDs into high-performance dimension tables. Author enterprise DAX measures adhering to standardized financial naming conventions (e.g., [Revenue YTD], [Gross Margin %], [Budget Variance]). Build Direct Lake semantic models.

Phase 4: Penny-Level Financial Reconciliation & Dual-Run Testing (Weeks 9 – 10)

Run parallel reporting cycles between legacy systems and the new Direct Lake model. Execute automated reconciliation scripts comparing Power BI financial statements against the official Business Central Trial Balance and Balance Sheet down to the exact cent across multiple fiscal periods and currencies.

Phase 5: Production Cutover, User Enablement & Decommissioning (Weeks 11 – 12)

Switch executive and operational reporting workspaces to the production Direct Lake model. Decommission redundant OData web service pages in Business Central to free up server tier capacity. Conduct executive enablement sessions on self-service exploratory analytics.

Modernize Your Enterprise ERP Analytics Architecture

Sluggish reports, failing OData refreshes, and ERP system slowdowns are not inevitable consequences of business growth—they are symptoms of an outdated integration architecture. As an independent enterprise technology consultancy, Allgrow Technologies specializes in architecting high-performance Microsoft Fabric and Power BI environments seamlessly decoupled from Dynamics 365 Business Central and Dynamics NAV.

Whether your organization is migrating away from legacy Jet Reports, resolving persistent SQL deadlocks, or engineering sub-second executive dashboards using Fabric Direct Lake, our enterprise architects deliver scalable, enterprise-grade data platforms designed for the next decade of operational growth.

Request an ERP Data Architecture Consultation →

Frequently Asked Questions (FAQ)

Why does Power BI time out when connecting directly to Business Central via OData?

Business Central SaaS enforces a strict 100-second request execution timeout on web service endpoints. When a Power BI report queries high-volume transactional tables (like General Ledger or Item Ledger entries) using OData, the mid-tier server must execute complex SQL joins, serialize the records into JSON, and paginate through tens of thousands of rows. If this end-to-end extraction exceeds 100 seconds, the connection is forcibly terminated by the cloud runtime.

What is the primary difference between Power BI Import Mode and Fabric Direct Lake?

In Import Mode, Power BI must ingest, compress, and duplicate all source records into its proprietary VertiPaq memory cache, requiring frequent scheduled refreshes that consume heavy compute. In Direct Lake mode, Power BI queries Delta Parquet files stored natively in Microsoft Fabric OneLake directly into memory without any data copying, translation, or scheduled dataset refresh downtime. It provides the sub-second speed of Import Mode with the near real-time freshness of DirectQuery.

Does connecting Power BI via Microsoft Fabric eliminate SQL table locks in Business Central?

Yes. By extracting ERP data into Microsoft Fabric OneLake via incremental delta pipelines or Dataverse Fabric Link, all subsequent analytical reporting, slicing, and dashboard rendering queries hit Fabric OneLake storage. The operational Business Central SQL database is never touched during report usage, completely eliminating analytical read locks and deadlocks during order processing.

How should we handle Business Central Dimension Set IDs in Power BI?

In Business Central, transactions link to Table 480 (Dimension Set Entry) via an integer Dimension Set ID. Instead of joining this high-cardinality table in Power BI, enterprise architects transform Table 480 in the Fabric Lakehouse Silver/Gold layer by pivoting the dimension rows into discrete columns (Department, Project, Cost Center) on a unified Dim_DimensionSet table. Fact tables join to this dimension table via a single 1-to-many relationship, delivering instantaneous DAX filtering.

Can we replace legacy Jet Reports with Power BI Direct Lake?

Yes. Most enterprise organizations replace legacy Jet Reports or Management Reporter add-ons with Power BI Direct Lake. Direct Lake provides identical penny-level financial accuracy for standard P&L and Balance Sheet reports while adding dynamic interactive slicing, mobile accessibility, automated executive alerting, and multi-system data fusion across CRM, warehouse, and e-commerce platforms.

Connect with Allgrow Technologies

100% Free · No Obligation

Need an Objective Architecture or Code Assessment?

Discuss your Dynamics 365, Business Central, or Power Platform environment in a free 30-minute session with our senior engineers.

Get a Free 30-Minute Review →
Chat on WhatsApp