Treat Excel migration as a cutover project with a named go-live meeting. “We’ll see how Desktop looks” produces twin systems and conflicting totals indefinitely.
Before build
- Inventory linked workbooks (Edit Links), hidden sheets, and VBA that posts journals or emails — Power BI will not silently replace macros.
- Map each sheet’s system-of-record extract (ERP export, CSV drop, manual paste) and replace paste with a gateway-backed source where possible.
- Agree numeric tolerance for reconciliation (e.g. ±0.5% or absolute $) and who signs the variance log.
During dual-run
Run Excel and Power BI for at least two close cycles. Diff the key KPI cards against the Excel pack using the same filters. Document intentional gaps (timing of accruals, FX rate date). When Status = Completed on refresh history still disagrees with Excel, fix the model — do not paper over with manual cards. Confirm View Native Query on the main fact query still folds after gateway cutover; gray Native Query plus Status = Failed often means a Desktop-only path (C:\Users\…) survived.
After cutover
Set legacy files Read-only or move to Archive; revoke edit rights on the SharePoint folder. Assign measure owners. Bind Scheduled refresh to an On-premises Data Gateway (standard) data source — not a personal gateway. If risk committees demand a break-glass Excel, time-box it (e.g. 90 days) and disable parallel refreshes that hammer the same SQL login.