Simon Chia Data Engineer / Architect
← Back to profile
Flagship case study · in delivery

Migrating a Fortune 500 SAP BW estate to a Databricks lakehouse

A multi-year, $2.8M program. What made it fundable, how the target architecture was designed, and how 25 data models, 250 master data tables and around 200 Power BI reports move onto Delta Lake without the business losing a day of history.

Role
Analytics Delivery Lead & Program Manager
Client
Global industrial manufacturer
Timeline
2025 → 2029 target
Team
Up to 12 data engineers
The client is anonymized by sector, as on my résumé. Figures are the program figures I report against. The architecture described is the design I own. The diagrams and code on this page are my own illustrations of it, not client artifacts.
01 · The mandate

Nobody funds "move to Databricks"

The client runs its enterprise reporting on SAP BW. Two decades of modeled history sit in it, along with the business logic of a manufacturer that has grown by acquisition. In many cases that logic exists nowhere else in written form.

Nobody phrased the mandate as a platform migration. They phrased it as a problem. The analytics estate has to keep serving finance, supply chain and operations for the next decade, and the current foundation cannot get there. Not on cost, not on the skills market, and not on the analytical workloads the business now wants to run.

So the work came in three parts, in this order. Establish what the target state should be. Get it to something the business could commit budget to. Then deliver it. I own the architecture and the delivery. The funding case was a team effort that I built the technical roadmap for.

The distinction that matters

A technology migration reads as a cost line. A capability roadmap reads as an investment. It is the same program either way, but only the second description gets a signature.

02 · What was really there

Scope set from an inventory, not a diagram

The most common way a migration of this size goes wrong is that scope gets set from an architecture diagram, then discovered from the source system eighteen months later. Before committing to anything we inventoried the estate object by object.

25
BW data models
250
master data tables
~200
Power BI reports
20y
of history to carry

That inventory is the program. Every object got profiled for row counts, change rate, key stability and downstream consumers. Then it got a decision. Migrate it, re-derive it, or retire it. A good share of a twenty-year-old estate is dead, and finding that out early is worth more than any tooling choice made later.

What the profiling changes

  • Scope becomes defensible. You can hold a schedule and a budget against "250 tables". You cannot hold either against "the master data".
  • Sequencing gets obvious. Counting consumers per object tells you which models have to move together and which can wait.
  • Dead weight gets left behind. Every retired object is scope that never needs testing, reconciling or cutting over.
03 · The platform decision

Where the estate should land

Three credible target states, each with a real case for it. The decision had to survive a steering committee, so we made it on the criteria the business cares about. Total cost over the horizon, skills availability, workload fit, and how much of the existing reporting estate survives the move.

Stay in SAP
Not selected
Modernize onto BW/4HANA. Lowest disruption, and the team already knows it. The problem is that it re-buys the same constraints for another decade, keeps the estate off the analytical workloads the business is asking for, and competes for a skills pool that keeps narrowing.
SAP Datasphere as destination
Partially adopted
Strong on SAP semantics, and the path of least resistance out of BW. We rejected it as the destination but kept it in the chain as the semantic bridge out of the SAP estate. That is where it earns its place.
Databricks lakehouse
✓ Selected
Delta Lake as the storage and transaction foundation, Unity Catalog for governance, and one platform for BI, engineering and data science instead of three. It carries the history forward, opens up the workloads, and puts the estate on a skills market that is growing instead of shrinking.

The second option deserves a note. I have run the BW-versus-Datasphere evaluation as a contested decision on another program, where the platform choice was wide open and the wrong answer would have cost a year. You de-risk that with a structured feasibility evaluation that produces evidence without exposing scope, timeline or budget while it runs.

04 · Making it fundable

What made a multi-year migration fundable

A multi-year platform migration is one of the hardest things to fund in an enterprise. The value is real but arrives late, while the cost is immediate and exact. The program was approved at approximately $2.8M through 2029. That was a team outcome and a partner-led conversation with the CFO. My part was the layer underneath it, the analytics roadmap and the technical case it rests on, built so the money was never being asked for in the abstract.

In practice that meant four things, and they are the things I hold a roadmap to.

  1. Tie every workstream to a capability the business already wants. Not "migrate the finance models" but "make month-end close reportable on day two", because someone senior already owns that outcome.
  2. Sequence so value lands before the end. A roadmap that pays nothing until 2029 will not survive its second budget cycle. Each wave has to deliver something the business can point at.
  3. Quantify the cost of doing nothing. Run-cost trajectory, the skills market, the reporting backlog that never clears. The counterfactual belongs in the case, not in the appendix.
  4. Show the risk position honestly. A case with no risks in it reads as naïve. A steering committee that finds the risks on its own stops trusting the numbers.
A technical argument will get you a pilot. A roadmap tied to outcomes gets you 2029.
05 · Target architecture

Medallion on Delta Lake, governed by Unity Catalog

The target is deliberately conventional. On a program with this many moving parts and this long a horizon, architectural novelty is a liability. The design has to be legible to engineers who join in 2027 and auditable by people who were not in the room.

Target platform architecturemedallion / delta / unity catalog
SOURCES INGESTION BRONZE SILVER GOLD CONSUMPTION SAP S/4HANA SAP BW Operational systems SAP Datasphere Azure Data Factory ADLS Gen2 landing Raw Delta tables Audit columns Full history Conformed entities SCD2 dimensions Quality expectations Star-schema marts Conformed dimensions Declared grain Power BI (~200) Databricks SQL Data science UNITY CATALOG · lineage, access control, classification and audit across every layer
Governance is drawn as a band rather than a box because it is not a stage in the flow. Every table in every layer is registered, owned, classified and traceable from the moment it exists.

The rules the design is held to

  • Bronze is replayable. Silver and gold can be rebuilt from bronze without going back to SAP. That one property is what makes a five-year program survivable.
  • Business logic lives in the model. Not in a report measure, and not in a notebook someone ran once.
  • Grain is declared before build. Every fact table, in writing.
  • No layer is skipped for speed. The shortcut from bronze straight to a report is the first thing that gets built under pressure. It is also the first thing that becomes unmaintainable.
06 · The ingestion chain

Four hops, each one earning its place

Getting data out of SAP is the part of an SAP migration that plans consistently underestimate. The chain below is deliberately not the shortest possible path. Each hop is there because removing it costs more than keeping it.

Ingestion chains/4hana → bw → datasphere → adls gen2 → databricks
SAP S/4HANA SAP BW SAP Datasphere ADLS Gen2 Databricks bronze operational system of record 20 years of modeled history semantic bridge out of SAP immutable landing partitioned by load delta tables + audit spine
Why not extract straight from S/4HANA

Twenty years of modeled history does not live in S/4HANA. It lives in BW, along with the transformations that made it meaningful. Bypassing BW means re-deriving two decades of business logic from an operational system that no longer holds the source rows. That is not a shortcut. That is a second program.

Non-negotiables on the chain

  • Idempotent loads. A re-run reproduces bronze exactly. Nothing about recovery should need judgement at 3am.
  • Watermarked and audited. Every run writes a control row, so "did last night load?" is a query rather than a conversation.
  • Extraction windows agreed with SAP basis. The source system's load profile is a design constraint. Negotiate it early instead of discovering it in production.
  • Immutable landing. Files land once, partitioned by source and load date, and never get edited in place.
07 · Moving 25 models

Preserving history instead of rebuilding it

There is always pressure to treat a migration as a clean-slate rebuild. It is a tempting idea, because the old models carry compromises and building fresh feels faster. This program committed to the opposite. Historical enterprise data gets carried across rather than rebuilt, and that one decision shapes everything downstream.

Why carrying it is the cheaper answer

  • Reconciliation is the real cost of a rebuild. New numbers have to be proven equal to old numbers, report by report and year by year. Rebuilding multiplies that work. Migrating the history contains it.
  • Regulated reporting will not accept a restatement just because a platform changed. The comparatives have to tie.
  • The old logic encodes decisions nobody remembers making. Re-deriving it from scratch means re-litigating twenty years of business rules with people who have long since moved on.

Models move in waves rather than all at once, grouped by the consumers they share so a wave can be cut over as one unit. Each wave carries its own reconciliation pack of old versus new, at the grain the business reads.

The rule teams are held to

A model is not migrated when the pipeline runs. It is migrated when its numbers tie to the old platform, its consumers are re-pointed, and the old object is switched off. Anything short of that leaves two platforms to maintain, which is the worst state a migration can stall in.

08 · Governance as guardrail

Unity Catalog, designed in at the start

Governance introduced late becomes a bottleneck, and by the time it arrives everyone has built their way around it. Designed in from the first table it does the opposite. It removes questions that would otherwise get argued per project for five years.

  • One catalog topology across dev, test and prod, so promotion is a path rather than a rewrite.
  • A named owner per schema. A person rather than a team inbox, someone who answers for what is in it.
  • Access through groups mapped to business roles, never to individuals. Grant to individuals and the model rots within two quarters.
  • PII and confidential data classified at column level and enforced by the platform rather than by a policy document nobody opens.
  • Lineage as the impact-analysis tool. When a source column changes in SAP, "what breaks?" has an answer in minutes.

I took the same posture on a multi-region agriscience program, where data governance and protection ran across the enterprise data warehouse. Compliance works as a delivery guardrail rather than a bottleneck. It is faster that way, not slower, and it is the only version that survives an audit.

09 · 200 reports, no relearning

The success condition is that nothing looks different

Around 200 Power BI reports sit on top of this estate. A migration looks like the natural moment to redesign them. It is also how a platform program picks up a change-management program it was never funded for.

The target is that reports re-point rather than get rebuilt. Gold keeps semantics stable enough that the model changes underneath a report and the person reading it on Monday morning notices nothing at all.

  1. Reconcile before cutover, report by report. Old against new, at the grain the business reads, with any variance explained rather than waved at.
  2. Show the reconciliation to the report owner. You do not ask for trust here. You evidence it.
  3. Cut over by wave, with the old object switched off. Give parallel-run a defined end date or it becomes permanent.
  4. Separate SQL warehouses by workload so BI queries and engineering jobs stop competing for compute. That competition is the most common cause of "the new platform feels slower".
10 · How delivery runs

Two concurrent programs, one delivery machine

I lead two concurrent programs for the same client, this migration and an S/4HANA analytics delivery, directing up to 12 data engineers and reporting to the client VP. Running them as one delivery machine rather than two is what stops them competing for the same people and the same source-system windows.

12
data engineers
2
concurrent programs
VP
client reporting line
Scrum
delivery cadence
  • Azure DevOps on scrum cadences. User stories and RICEFWs get tracked where the work happens, not in a status deck assembled the night before.
  • An active RAID log, worked weekly. Risks come up early and get closed instead of being discovered at cutover.
  • Scope shaped and committed deliberately. I shape proposals and SOWs with the firm’s pursuit teams, then own delivery against exactly what was committed. Having the same person on both sides of that line is the only way estimates stay honest.
  • Executive and steering-committee reporting that ties every project back to the business case that funded it.
11 · Risk

The five that can break it

A RAID log with forty entries is a filing system. These five get worked personally, because each one can take the program down rather than just slow it.

RiskSeverityHow it is being closed
Source estate changes mid-migration High Migration waves sequenced against the S/4HANA roadmap. Extraction contracts versioned so a source change is a known event rather than a surprise break.
History does not tie after migration High Reconciliation packs per wave at the business's reading grain, signed off by the report owner before the old object gets retired.
Funding continuity across budget cycles High Value sequenced so each wave lands a capability the business can point at. That keeps the case alive at every re-approval rather than only at the start.
Newly positioned SAP product limitations Medium Structured feasibility evaluation before commitment. This is the approach I used to resolve a contested BW-versus-Datasphere decision without exposing scope, timeline or budget.
Two platforms running in parallel indefinitely Medium Parallel-run gets a defined end date per wave, and no model counts as migrated until the legacy object is switched off.
12 · Where it stands

In delivery, funded through 2029

2024–2025
Feasibility, target state and roadmap
Estate inventory and profiling, platform evaluation, target architecture and the multi-year sequencing plan.
Complete
2025
Business case and approval
Approval at approximately $2.8M against the analytics roadmap, with the program committed through to 2029.
Complete
2025 →
Foundation and ingestion chain
Medallion Delta Lake foundation, Unity Catalog topology and the S/4HANA → BW → Datasphere → Databricks ingestion chain, all in build.
In delivery
Next
Model migration in waves
25 data models and 250 master data tables moving by consumer-grouped wave, each one with its own reconciliation pack.
Planned
Next
Reporting cutover
~200 Power BI reports re-pointed to gold, reconciled one by one, legacy objects retired on a defined date.
Planned
2029
Program completion target
Legacy BW estate retired, with the lakehouse carrying enterprise reporting, engineering and data science on one governed platform.
Target

Want to see the mechanics rather than read about them?

I built a working medallion lakehouse you can run in the browser. It covers pipeline execution, a data quality expectation failing and quarantining rows, table lineage, and a gold dashboard refreshing from the results.