Case study

A CFO cockpit over a group that closed its books separately

Hospitality and real estate

A hospitality and real estate group whose entities each closed their own books. The group close now runs from one validated cockpit that refreshes overnight.

Read the engagement brief(opens in a new tab)
Period
10 months
Capacity
F2 in production
A schematic: the separate reports this engagement started from, the one consolidated reporting layer that replaced them, and the technologies underneath.

A week of Excel, replaced by one overnight run

Each division closed its own books, so group controlling spent the first week after month-end merging workbooks by hand. The CFO now signs the group close from one cockpit, validated cell by cell and refreshed overnight.

BI consumers across controlling, accounting and the board
50+
domain semantic models: Finance, Operational, Executive
3
production capacity, held through modelling discipline
F2
front-ends on one model: Power BI and Excel
2

Anonymised by sector and size. Sector and outcomes are real; identifying detail is not. What the engagement moved in hours and headcount is not published here, because nothing we could point to would let you check it.

Before and after

Before and after the engagement

A week of Excel

  • 3 divisions send workbooksEach on its own rhythm, with its own reading of margin, EBITDA and forecast
  • Group controlling merges by handReconciling rather than analysing
  • The CFO sees the group P&LOnce the month is already history

Overnight

  • Division systems load overnightFabric pipelines, with no workbooks passed around
  • One validated Finance modelEvery cell reconciled to source before close
  • The CFO cockpitYesterday’s numbers first thing in the morning
From a week of manual Excel consolidation to one cockpit that refreshes overnight.

The engagement in full

Client
A family-owned Central European group of 250 to 500 people in 3 divisions, Corporate, Real Estate and Hospitality, with several operating companies, multiple currencies and management and statutory ledgers side by side.
Situation
The review found reporting fragmented across systems that had grown up separately, so consolidation happened in spreadsheets, by hand, by people who were good at it and could not be replaced. Nobody owned the definitions that were meant to tie the entities together.
Mandate
Introduce Microsoft Fabric from scratch and build one performance cockpit as the group’s single source of truth for month-end close.
What we built
  • FoundationA review of the group’s reporting that showed where each entity’s figures parted ways and ended in a fix-first list.
  • ActivationA ten-month rollout that replaced the spreadsheets with a governed platform, and a CFO cockpit on top of it that consolidates every entity on shared definitions.

The capacity tier that was not bought

In the first rollout, the most common filter combinations pushed the model against the memory limit of the entry-level capacity. The usual answer is a larger tier, and each step up doubles the capacity bill. We measured where the load came from instead, rebuilt the one calculation causing it, and the cockpit stayed on F2. This is written into the client agreement: capacity is scaled only once the optimisation paths are exhausted and the data volume genuinely outgrows the tier.

The cockpit the close is signed from

Group P&L down to EBT with the 3 divisions side by side, KPI cards across actual, budget, forecast and prior year, a ledger switch between management and statutory, and a drivers panel on every page.

Three models, not one monolith

Finance carries P&L to EBT, contribution margin, actual against budget, forecast and prior year, the ledger switch and consolidation. Operational carries occupancy, RevPAR and the operating metrics of the hospitality arm, with property KPIs on the real estate side. Executive is a condensed board view that references both rather than restating them. Each model carries its own KPI definitions, time intelligence with a cut-off for closed periods, scenario logic and security, so a defect in one domain does not take down the reporting layer and teams deliver in parallel.

How the model stayed on F2

The cause was located and fixed before any tier was bought.

  1. Filters hit the limitOn entry-level capacity, in the first rollout
  2. Cause measuredOne calculation, not the data volume
  3. Calculation rebuiltOne path per cell instead of every branch
  4. F2 staysUnder a second, across 4 scenarios

How the work was run

Validation first: Finance signs the reconciliation of every cell, not the report.

  1. Overnight refreshSources into the Finance model
  2. Cells reconciledEvery cockpit cell against source
  3. Finance signsThe validation file, not the report
  4. Close on the cockpitNo Excel cross-checks

One model, two front-ends

The same model reaches the CFO in Power BI and the controllers in Excel.

  1. Power BI cockpitThe group view for the CFO and the board
  2. Finance semantic modelMargin, EBITDA and variance, defined once
  3. Excel pivotsAnalyze in Excel, for the controllers

Target architecture

Sources: Accounting systems · Supporting systems · Databricks catalog. Ingestion: Fabric Data Factory · Mirrored catalog. OneLake medallion: Bronze · Silver · Gold L1 · Gold L2 · Platinum. Semantic layer: Finance · Operational · Executive. Front-ends: Power BI · Excel
Sources into Fabric ingestion, a medallion lakehouse in OneLake, 3 semantic models read over Direct Lake, and the 2 front-ends on them. Finance is the model the close is signed from.

What the client has today

  • Month-end close signed from the cockpit, on a cell-level validation file rather than a set of linked workbooks.
  • A group close that takes one validated overnight run rather than a week of Excel work after month-end.
  • A group model across 4 scenarios that renders in under a second on F2, held there by modelling discipline rather than a capacity upgrade.
  • Direct Lake on a mirrored catalog, with no copies and no nightly import refresh.
  • Self-service across Corporate, Real Estate and Hospitality at division and entity level, without central controlling in between.
  • One model behind both the Power BI cockpit and the controllers’ Excel pivots.
  • A foundation that forecasting, Copilot questions and AI commentary on variances attach to without re-architecting.
For your IT team

The decisions behind the cockpit, for the people who would run something like it. Every major decision was agreed in a workshop with the head of data and analytics and the data engineering lead before it was built.

  • Three domain tiers and one reporting workspace, each in DEV, TEST and PROD, with production reached only through an approval gate. There is deliberately no workspace per division: the separation between Corporate, Real Estate and Hospitality runs through row-level security inside the model rather than through parallel workspaces, which keeps the topology small, the CI/CD chain traceable and the lineage readable.
  • Power BI project files under Git from day one, promoted through a Fabric deployment pipeline from DEV to TEST, with a manual sign-off before production.
  • Bronze holds raw extracts versioned per source system and Silver the typed, deduplicated layer with conformed account, entity and time dimensions and the ledger flag carried separately. Gold L1 is the finance data product and is owned by group controlling rather than the data team; Gold L2 holds cross-divisional aggregates and Platinum the report-ready long facts, so KPI dispatch resolves through calculation groups.
  • The F2 limit was solved by replacing one SWITCH measure for KPI dispatch with a calculation group over a bridge table. Before, every branch was evaluated for every cell and common slicer combinations hit the query memory limit; after, the engine resolves one path per cell and the model renders sub-second across 4 scenarios on F2.
  • Row-level security roles run against the 3 divisions, with members as Entra security groups, so onboarding a divisional controller is a group assignment rather than a model change. A ledger role sits across all of them, separating management from statutory, and the time-boxed break-the-glass roles for month-end are audited on a regular cadence rather than left open.
  • Purview sensitivity labels on the finance assets, with the operating companies’ P&L data at the highest level in use. Dynamic data masking on salary-adjacent HR columns in the controlling warehouse, unmasked for a narrow finance circle only and always on top of column-level security. Workspace identity, a service principal and Azure Key Vault for the platform’s credentials.
Where it left them
One number per metric, arrived at the same way in every entity, and a group close that takes one validated overnight run rather than a week of manual work.
Stack
  • Microsoft Fabric
  • OneLake
  • Direct Lake
  • Databricks Mirrored Catalog
  • Fabric Data Factory
  • Power BI
  • DAX
  • Calculation groups
  • Row-level security
  • Azure DevOps
  • Azure Key Vault
  • Purview
All case studies

The other engagements

  • Retail

    Foundation then Activation then Acceleration alongside Stewardship

    Store revenue, executive questions and forecasting on one set of definitions

    A retailer with Microsoft Fabric already in production, semantic models over Direct Lake and store revenue streaming in, who wanted forecasting, Copilot questions and anomaly detection on top of it.

    • Microsoft Fabric
    • Power BI semantic models
    • Direct Lake
    • Copilot in Power BI
    • Fabric AI Functions
    • Activator
  • Industrial manufacturing

    Foundation then Activation then Acceleration

    Governed reporting across a production network

    An industrial manufacturer reporting across a production network of sites, each with its own view of what was running.

    • Microsoft Fabric
    • OneLake
    • OneLake Security
    • Direct Lake
    • Spark
    • MES
    • OPC UA
    • Power BI
    • DAX
    • Azure Key Vault
    • Purview
    • Azure DevOps
  • Multi-brand retail

    Foundation then Activation

    One governed model across a multi-brand retail group

    A retail group running several brands, each with its own systems, its own reporting habits and its own answer to what a margin is.

    • Microsoft Fabric
    • Direct Lake
    • Databricks
    • Eventstream
    • KQL Database
    • Power BI
    • DAX
    • SAP
    • Salesforce
    • Azure DevOps
  • Omnichannel e-commerce

    Foundation then Activation

    Finance reporting that keeps up with the day

    An omnichannel retailer whose finance leadership was steering on yesterday’s numbers in a business that changes within the day.

    • Microsoft Fabric
    • OneLake
    • Direct Lake
    • Fabric Data Factory
    • Eventstream
    • Power BI
    • DAX
    • REST APIs
    • ERP integration
All case studies

Free consultation

Know where your data stands in an hour.

A free 60-minute consultation. No pitch, no invoice. You’ll leave knowing whether your data is ready for AI, and whether we’re a good fit.

Book your free consultation(opens in a new tab)