How an Icelandic investment bank went from scattered per-company reporting to a governed Azure lakehouse over roughly 33 months: a warehouse, then a lake, then the migration that retired the old one. It survived an audit. Numbers that hold up.
Kvika banki is an Icelandic investment bank and financial services group, operating across investment banking, asset management, commercial banking and insurance, and listed on Nasdaq Iceland since 2019. In 2022, Kvika acquired 40% of Moberg — so this is work we did for a client who then bought into the firm, which is one way to read a customer-satisfaction survey.
A group means many companies, each with its own systems and its own version of the numbers. The engagement was a three-stage data journey, each stage a project in its own right: first a data warehouse for consolidated financial reporting, then a governed data lake for everything, then the migration that switched the old on-prem SQL Server warehouse off for good.
Stage 1 — the warehouse. Nine months, five FTEs. Data from multiple group companies and systems combined into one model for consolidated financial reporting, built on Azure Synapse Analytics (Dedicated SQL Pool) with PySpark notebooks for transformation and Azure Data Lake Storage as the staging layer. The goal was unglamorous and valuable: one set of group figures instead of several competing ones.
Stage 2 — the lake. Twelve months, five FTEs. A Medallion-architecture data lake — Bronze, Silver, Gold — holding 10+ TB across all companies and systems, on ADLS with Synapse Spark pools for processing, Azure Data Factory for ingestion, and Microsoft Purview for governance. The layering is the point: raw events land in Bronze untouched, so every Gold figure can be walked back to the Bronze event that produced it. When the auditors came, that lineage did the talking.
Stage 3 — the migration. Twelve months, five FTEs. The on-prem SQL Server data warehouse retired in favour of the Azure data platform — a lakehouse architecture with Power BI on top for reporting, and Azure Data Factory handling ETL and the migration itself. Migrations are where data platforms go to stall; this one shipped because stages 1 and 2 had already built the destination.
Each group company kept its books in its own systems — reconciling them into one consolidated view was the core of stage 1, not a footnote.
A lake of that size is easy to fill and hard to govern; Purview and the Medallion layering had to be there from day one, not retrofitted.
The on-prem warehouse fed real financial reporting throughout the migration — the switch-over had to be provable, not hopeful.
Bank reporting gets audited. The bar wasn't "the numbers look right" — it was "show me where this number came from."
The business outcome is consolidated financial reporting the group can rely on: figures produced from one governed platform instead of stitched together per company, with every Gold-layer number traceable back to the Bronze event it came from. That traceability was tested the way it should be — the platform survived audit.
The economics held up too. Measured in year one, the stages returned 80%, 83% and 57% ROI respectively — the migration stage naturally lower, since its return is partly the ongoing cost of the on-prem estate that no longer exists. Retiring a legacy warehouse is not the exciting part of a data strategy, but it is the part that stops paying rent on the past. Launch day is the easiest day; the next ten years are the product — and this platform was built for the ten years.
Dedicated SQL Pool for the warehouse; Spark pools for lake processing.
Staging in stage 1; the Bronze/Silver/Gold layers of the lake from stage 2 on.
Ingestion into the lake, and the ETL that carried the migration.
Notebook-based transformations from raw events to reporting-ready tables.
Cataloguing and lineage across 10+ TB — the audit trail, literally.
Group financial reporting on top of the lakehouse.