Tuesday, December 16, 2025

Your Ultimate Business Central Migration Checklist

Hi All!


Phase 1: C/AL to Business Central On-Premise (AL Platform)

This phase converts the legacy C/AL database and code to the modern AL architecture on a self-hosted (on-premise) server.

StepAction / FocusPowerShell Cmdlet (or Tool)Notes
P1.1Code Migration (AL Development)Txt2Al.exe & VS CodeConvert all C/AL objects to AL, refactor code to conform to the extension model, and create your custom .app files.
P1.2DB ConversionInvoke-NAVApplicationDatabaseConversionConvert the database schema to the new platform format using the new BC setup media.
P1.3Server ConfigurationSet-NAVServerConfigurationPoint the new BC Server instance to the converted database.
P1.4Uninstall Legacy CodeUninstall-NAVApp / Unpublish-NAVAppEnsure all old extensions (and symbols) are removed from the tenant.
P1.5Publish Core AppsPublish-NAVAppPublish Microsoft's System Application and Base Application to the server.
P1.6Sync SchemaSync-NAVTenant -Mode SyncSynchronize the tenant schema against the new base application tables.
P1.7Application Data UpgradeStart-NAVAppDataUpgradeRun the upgrade code for the Core Apps (System, Base Application).
P1.8Platform Data UpgradeStart-NavDataUpgradeRun the main platform and toolkit upgrade scripts.
P1.9Install Custom AppsPublish-NAVApp / Install-NAVAppPublish and install all your newly created custom AL extensions.

Phase 2: On-Premise BC to Business Central Online (SaaS) Migration

This phase uses Microsoft's Cloud Migration Tool to replicate data from your now-modernized on-premise system to the SaaS environment.

StepAction / FocusTool / InterfaceNotes
P2.1Prepare On-PremiseBC On-Premise UI / PowerShellEnsure your on-premise version is supported for migration (BC v14 or newer) and all custom code is running as extensions.
P2.2Set Up SaaSAppSource & VS CodeEnsure the target SaaS environment has the same custom extensions installed (published and synchronized) as the on-premise system.
P2.3Install GatewaySelf-Hosted Integration Runtime (SHIR)Install the SHIR on a machine that can access the SQL Server database. This creates a secure data pipe.
P2.4Configure MigrationBC SaaS Assisted Setup WizardRun the Set up Cloud Migration wizard, entering the SQL Server connection string and the SHIR key.
P2.5Initial ReplicationCloud Migration Management Page (SaaS)Start the initial full replication of all selected tables. This copies the data to the SaaS tenant's database.
P2.6Check and FinalizeCloud Migration Management Page (SaaS)Monitor the replication status. Once complete, run the final data upgrade in SaaS if needed, and confirm the final cutover.

Phase 3: SaaS to Newer Version (Continuous Upgrade)

The benefit of SaaS is that Microsoft handles the platform upgrades. You only need to manage your extensions.

StepAction / FocusTool / InterfaceNotes
P3.1Target TestingSandboxes & Extension TestingMicrosoft creates a sandbox with the next major version. Test all your custom extensions against this new version.
P3.2Update ExtensionsVS Code & AL LanguageUpdate your custom extensions to the new target version, implementing any required upgrade codeunits (OnUpgrade) to handle schema changes.
P3.3Publish New VersionVS Code / PowerShell (for upload)Publish the new version of your custom extensions to your Production Environment (if Microsoft allows it, or wait for the automatic upgrade).
P3.4Microsoft UpgradeAutomaticMicrosoft automatically handles the platform upgrade. Your extensions' upgrade codeunits run automatically during this process to ensure data consistency.
P3.5Post-Upgrade TestBC Production UIOnce the upgrade is complete (usually outside business hours), perform final smoke testing.

Reach out to me if you have any questions or suggestions. 

Check out other blogs, if you haven't already. 

Kindly suggest what else you want me to blog about. Keep following and supporting!

You can also email me at jyotsnaoberainav@gmail.com

Also, visit my website JONAV if you are looking for NAV/D365BC Training and/or Services!

Thank you!