Nobody puts “three months of duplicate licence cost” in the business case, so the overlap gets compressed until it is too short to do the one thing it exists for. Then a number disagrees in public in month five and the programme spends its credibility.
Budget the overlap. It is the cheapest insurance in the project.
What the overlap is for
Exactly one thing: proving the new numbers match the old ones, on content people actually use, with the old system still available to check against. Everything else about it is incidental.
| Activity | Needs both estates? | Why |
|---|---|---|
| Reconciling numbers | Yes — this is the reason | You cannot compare against a system you have switched off. |
| Working the review list | Yes | “Is this difference expected?” needs the original to inspect. |
| Training | No | Readers need none, and authors learn on the new estate. |
| Building new dashboards | No | Build them once, in the new place. Anything else doubles the work permanently. |
| Keeping people comfortable | Not a reason | This is how an overlap becomes indefinite. Comfort is addressed by a date, not by an option. |
An overlap with a reconciliation plan is insurance. An overlap without one is just two bills.
Reconcile properly, on a short list
The instinct is to compare everything and the result is that nothing gets compared carefully. Pick the dashboards people actually open — which, once you have counted, is a minority of what you own.
flowchart LR
A["Everything you own"] -->|"opened in 90 days"| B["The real estate"]
B -->|"opened by 3+ people"| C["Reconcile these,
cell for cell"]
B -->|"one or two readers"| D["Spot-check"]
A -->|"never opened"| E["Archive — do not
migrate or reconcile"]
style C fill:#e6f7f2,stroke:#9fd8c9
style E fill:#f7f8fb,stroke:#d8dbe8
For each dashboard on the short list: export a crosstab from the original, run the migrated one with the same filters, compare cell for cell. Not eyeballing the charts — the numbers.
| When they differ | Most likely cause | Frequency |
|---|---|---|
| Totals differ, breakdowns match | A filter that did not carry, or one that carried and should not have. | Most common by far |
| One measure differs everywhere | A calculation in the verify tier that needed the glance it asked for. | Common |
| Differs only at period boundaries | A date-interval semantic — DATEDIFF counting boundaries rather than elapsed time. | Common, and always at quarter ends |
| Differs for some people only | Row-level security that used to live in a calculated field and is now a policy — often the policy is more correct. | Investigate; do not assume the old one was right |
| Row counts differ | A join grain. Rare, and the one worth escalating immediately. | Rare and serious |
The finding nobody expects
A meaningful share of differences turn out to be the old dashboard being wrong — a filter someone added for a one-off review in 2021 and never removed, a row-security rule that only applied to four of nine sheets. Budget time to investigate rather than to reproduce, because “make the new one match the old one” sometimes means reproducing a bug.

Nine of ten resolved inside a day. The tenth took half a day and was the most valuable finding of the whole migration: two people had been seeing data they were not entitled to, for an unknown length of time, because the old row-security rule lived in a calculated field that three sheets did not use.
Budget time to investigate, not to reproduce
“Make the new one match the old one” would have reproduced that bug faithfully. A meaningful share of reconciliation differences turn out to be the old dashboard being wrong — a filter added for a one-off review in 2021, a rule that only half applied. Those are findings, not defects.
Four rules that stop the overlap becoming permanent
- Set the end date before you start, and write it down. Not a target — a date on which the old estate goes read-only. Everything else negotiates against it.
- Freeze building in the old estate on day one. The single most effective rule here. If people keep building there, you are not migrating, you are maintaining two products. Exceptions need a name attached.
- Move readers first, in a block. They are the largest group, need no training, and carry most of the licence cost. Moving them is where the saving actually starts. Why they dominate the bill →
- Make the old estate read-only before you delete it. A month of read-only catches the quarterly report nobody remembered, at almost no cost, and it converts “can we keep it a bit longer” into a much smaller question.
Both estates run. People build in the old one because it is familiar. Six months later the migration is stalled, both bills are live, and nobody can say what is authoritative.
The old estate is frozen on day one and read-only from a known date. Reconciliation happens against a short list. The licence saving starts in month one rather than month nine.
A realistic shape
| Phase | Old estate | New estate | Cost |
|---|---|---|---|
| Weeks 1–2 | Live, frozen for new builds | Deployed; real workbooks imported | Both |
| Weeks 3–6 | Live, reference only | Definitions agreed and published | Both |
| Weeks 6–10 | Live, reference only | Reconciling the short list; policies set | Both |
| Weeks 10–13 | Read-only | Readers moved; authors following | Both, last time |
| After | Archived | Authoritative | One |
Talking about it honestly
The version of this in a business case should say: we will pay for both for one quarter, and that quarter is what buys us the confidence that the numbers match. That sentence survives scrutiny. “Migration completes in six weeks” does not, and when it slips it takes the rest of the case with it.
If the duplicate cost is genuinely unaffordable, the answer is a smaller first tranche — one department, a dozen dashboards — not a shorter overlap. Reconciliation time is the last thing to cut.
What we would not promise
- That a quarter is enough for a large estate. It is enough for a first meaningful tranche. A thousand-workbook estate is several of these in sequence.
- That reconciliation can be automated today. Comparing against exported crosstabs is currently manual. It should not be, and it is the thing we would build next in this area.
- That every difference will be explainable quickly. Some take a day. Those are the valuable ones, and they are almost always a filter.