Walking an on-premises BC14 database up to BC25 without losing dimensions
A healthcare distributor moved from BC14 through BC18 to BC25 on-premises, ahead of a cloud migration. Most of the time went into data problems, not code.
Challenge
The upgrade stopped partway because default dimension records pointed at parents that no longer existed. SQL Express hit its 10 GB limit, memory pressure caused lock timeouts, and client sessions dropped with WebSocket errors.
Solution and implementation
Cleaned the dimension data before each hop instead of patching the upgrade codeunit afterwards. Moved the database off SQL Express for the upgrade window, tuned SQL memory and lock settings, and wrote the whole sequence into an upgrade manual so each hop could be repeated and rehearsed.
What to watch for
Run a dimension integrity check before the first hop, not after the first failure. Size the SQL edition for the upgrade, not for the steady state.
Results
We publish measured results only where the client has confirmed them and they cannot identify the client. None are published for this project yet.