Introduction to Business Central Cloud Migration (2023)
Business Central cloud migration from on-premises SQL to SaaS, using Azure Data Factory SQL to SQL copy: setup, table mappings for custom fields, replication, upgrade, go-live, and troubleshooting. Includes upgrade path limits (version 14 minimum, direct path from 14 ending April 2025 with version 26) and a full demo.
- Introduction and Overview
- Why Use Cloud Migration Tooling
- Community and Documentation
- End-to-End Cloud Migration Demo - Setup and Company Creation
- Data Replication and Data Upgrade
- Completing Cloud Migration
- Cloud Migration Paths and Upgrade Strategy
- Preparation Step: Aligning SQL Definitions
- Data Cleanup and Compression
- Cloud Migration Infrastructure and Setup Phase
- Setup Considerations and Environment Recommendations
- Table Mappings: Migrating Custom Fields to Extensions
- Table Mappings UI, Export, Import, and Delegated Admin
- Data Replication Mechanism and Azure SQL Improvements
- Replication Status UI and Migration Completion Options
- Cloud Migration Limitations and Upgrade Process
- Upgrade Process and Performance Optimizations
- Post-Upgrade Configuration and Multiple Company Migration
- Troubleshooting and Telemetry Monitoring
- Power BI Reporting and Testing Recommendations
Overview
The session from November 2023 walks through the Business Central cloud migration tooling end to end. It covers the setup wizard, the self-hosted integration runtime, automatic company creation, data replication, data upgrade and completing the migration to go live.
It also covers preparation (aligning SQL definitions, data cleanup), table mappings that move custom fields into table extensions, delegated admin consent, how replication works, limits such as 300 companies per SaaS environment, post-upgrade steps like user mapping, and troubleshooting with telemetry and a Power BI app.
Key points
- Cloud migration uses Azure Data Factory SQL to SQL copy. On-premises sources need a self-hosted integration runtime installed in the private network. Migrating from Azure SQL is faster and more stable, and skips the blob storage staging step.
- Version 14 is the lowest supported version for direct migration or upgrade. The direct path from version 14 stops in April 2025 with version 26. A jump version is planned every five versions, and the next one would be 30.
- Setup applies changes to the on-premises database through stored procedures. Try the first migration on a backup of production, and a sandbox test is also recommended.
- Table and field definitions must match exactly in name and type, and primary keys must be aligned. Table mappings move custom fields into table extensions. They can be exported and imported as JSON, or generated by subscribing to an event in codeunit 401.
- Run the data upgrade as the very last step. No more replication or company additions are possible afterward. Do not change data in the SaaS database during replication.
- Postpone environment updates in the admin center during migration, because running them forcefully stops the migration.
- SaaS has a hard limit of 300 companies, and 250 is recommended. User mapping can run only once per environment, as the last step. Moving more companies into a live tenant is not officially supported.
Features
| Feature | Status | At | Evidence |
|---|---|---|---|
| Cloud Migration Tooling | status not stated, demoed | 1:44 | |
| Azure Data Factory Pipeline | status not stated, demoed | 5:31 | |
| Integration Runtime | status not stated, demoed | 5:51 | |
| Self-hosted integration runtime | status not stated | 23:09 | |
| Automatic Company Creation | status not stated, demoed | 8:05 | |
| Data Replication | status not stated, demoed | 8:45 | |
| Data Upgrade | status not stated, demoed | 9:54 | |
| Cloud Migration Management Page | status not stated, demoed | 4:51 | |
| Direct upgrade path discontinuation from version 14 | status not stated | 13:49 | |
| Jump versions and five-version upgrade cycles | announced | 15:11 | “we are planning to introduce these jump versions or to delete the objects every five versions so the next jump version would be 30” (15:52) |
| SQL table definition alignment | status not stated | 16:23 | |
| Table extension support for customizations | status not stated | 17:43 | |
| Three-character prefix/suffix field naming | status not stated | 18:24 | |
| Invoke NV sanitized field commandlet | status not stated | 19:50 | |
| Data Administration page | status not stated | 21:02 | |
| Cloud migration setup phase with preparation pipeline | status not stated | 24:42 | |
| Replication pipeline preparation | status not stated | 26:23 | |
| Backup recommendation for on-premises migration | status not stated | 27:01 | |
| Azure SQL database migration preference | status not stated | 27:39 | |
| Postpone environment updates during cloud migration | status not stated | 28:38 | |
| Application Insights telemetry for cloud migration | status not stated | 29:09 | |
| Table mappings for custom fields migration | status not stated, demoed | 29:29 | |
| Managed custom tables page for table mappings | status not stated, demoed | 31:48 | |
| Table mappings export and import | status not stated, demoed | 34:53 | |
| Programmatic table mappings via codeunit 401 | status not stated | 35:05 | |
| Keep user permissions during cloud migration setup | status not stated | 36:27 | |
| Delegated admin consent for cloud migration | status not stated, demoed | 37:06 | |
| Azure Data Factory pipelines for replication | status not stated | 38:27 | |
| Large table vs bulk copy replication strategy | status not stated | 39:47 | |
| Incremental replication with SQL change tracking | status not stated | 40:28 | |
| Azure blob storage removal for Azure SQL | status not stated | 41:09 | |
| Cloud migration UI with status dashboard | status not stated, demoed | 42:00 | |
| Replication action log with run history | status not stated, demoed | 42:20 | |
| Company replication filtering and selection | status not stated, demoed | 43:57 | |
| Per-database table data review | status not stated, demoed | 44:17 | |
| Replication data filtering by table name | status not stated, demoed | 45:18 | |
| Table inclusion-exclusion for replication | status not stated | 45:38 | |
| Cloud migration completion and pause-abandon options | status not stated, demoed | 45:57 | |
| 300 company limit in SaaS | status not stated | 46:38 | |
| Data storage capacity constraints | status not stated | 46:58 | |
| Upgrade as final step in migration | status not stated | 48:09 | |
| Per-database table upgrade constraints | status not stated | 48:30 | |
| Single-location data modification rule | status not stated | 49:11 | |
| Upgrade process with versioning ignored | status not stated | 49:51 | |
| AppSource and custom app upgrade handling | status not stated | 50:32 | |
| Sandbox testing before upgrade | status not stated | 50:52 | |
| Upgrade performance optimizations | status not stated | 51:23 | |
| API upgrade background jobs | status not stated | 52:03 | |
| User mapping functionality | status not stated, demoed | 53:20 | |
| One-time user mapping execution | status not stated | 53:40 | |
| Dataverse integration configuration | status not stated | 54:06 | |
| Multiple company migration in live tenants | status not stated | 54:23 | |
| Cloud migration troubleshooting documentation | status not stated, demoed | 55:23 | |
| Cloud migration telemetry events | status not stated, demoed | 56:03 | |
| Power BI cloud migration app | status not stated, demoed | 56:45 | |
| Telemetry-based alerts and notifications | status not stated | 57:39 |
AL objects mentioned
As heard in the captions. A name that matches one object page by exact type and name links to it; the others stay as named.
- page 40063 “Cloud Migration Management” at 4:51
- page “Data Administration page” at 21:02
- codeunit “401 hybrid cloud management” at 35:05
- page “add table mappings” at 32:08
- page “managed custom tables” at 31:48
- page “delegated admin consent for cloud migration” at 37:46
- table “tenant media table” at 44:37
- table 9999 “Upgrade Tags” at 44:57
- table “change log” at 45:18
- table 405 “Change Log Entry” at 45:18
- page “cloud migration page” at 53:20
- page “defined user mappings page” at 53:20
- page “users list” at 53:00
Not found in BC28-30: page “Data Administration page”, codeunit “401 hybrid cloud management”, page “add table mappings”, page “managed custom tables”, page “delegated admin consent for cloud migration”, table “tenant media table”, table “change log”, page “cloud migration page”, page “defined user mappings page”, page “users list”.
Quotes
- 1:44 “it is the fastest and safest way to migrate the on Prem data into sauce the reason why it is the fastest way is”
- 2:25 “it has been used by the thousands of Partners unfortunately I cannot tell you how many migrations exactly we had but it is counted”
- 3:06 “looked into which data should be replicated and which should be left on prem for all of the microsoft on tables so”
- 10:14 “we will move the tenant into the maintenance mode and the only session that is going to be running on the tenant is is”
- 12:13 “14 is the lowest version that we support for direct on prem upgrade or for the direct cloud migration”
- 13:49 “we are stopping the direct upgrade and Cloud migration path from Dynamics business Central 14 in approximately year and a half from now so”
- 14:10 “in April 2025 together with version 26 it will not be possible to Cloud migrate or directly upgrade from version 4 14”
- 14:30 “we need to remove obsolet fields and tables we have not been cleaning up objects in a very long time actually from version 12”
- 15:52 “we are planning to introduce these jump versions or to delete the objects every five versions so the next jump version would be 30”
- 16:41 “you only need to take care of two things the first thing that you must do is that you need to align the primary”
- 17:02 “if there is a difference in the name and type we are going to throw an error it’s possible to move the data with”
- 19:50 “run invoke NV sanitized field commandlet to eliminate non-printing characters from code Fields”
- 22:37 “the main technology we rely on is the Azure data Factory which is an Azure cloudbased data integration uh service”
- 27:01 “since the stored procedures will actually apply some changes to the on Prem database uh we highly recommend to try the cloud migration for”
- 27:39 “based on some very recent improvements that we have applied throughout the last year we can safly claim that the migrations from aure SQL”
- 28:38 “when we’re working with Cloud migration is that if there’s any available updates for the environment in the admin Center we strongly recommend to”
- 28:58 “we would forcefully stop Cloud migration and then you would be forced to start over again deleting the environment”
- 29:29 “the aim of table mapping is to move custom fields to table extensions in SAS and this is specifically because on Prem you’re allowed”
- 35:05 “you able to provide these table mappings programmatically if you subscribe to the on insert default table mappings event from code unit 401 hybrid”
- 37:06 “it will always be a licensed super user that is able to perform the cloud migration setup and all the actions that follow but”
- 39:47 “for the large tables for such tables that we identify as large meaning that the size exceeds 250 mbytes or there’s more than 100,000”
- 40:48 “we rely on SQL change tracking mechanism to keep track of the changes and then perform additional replication runs only on the Deltas”
- 41:09 “the removal of of the need for the Azure blob storage uh staging step for Azure SQL”
- 46:38 “when you have an environment in SAS we enforce a strong limit of 300 companies”
- 48:09 “upgr step needs to be invoked as an absolutely last step in the cloud migration”
- 49:11 “do not change the data in SAS database because you’re risking that your changes are going to be overwritten”
- 51:23 “in the last two versions we have optimized over 30 long running upgrade methods”
- 52:03 “we have introduced the functionality so you can run it after the cloud migration”
- 53:20 “we are going to go through all of the tables which are using username and it is important for business Logic for example my”
- 53:55 “you can do it only once per environment so you should do it as the last step because you will not be able to”
- 54:23 “are can we move additional companies in live tenants and the answer is we do not officially support it and we strongly advise against”
- 54:43 “you’re doing it on your own risk it is the same as running rapid start or using any kind of ptes to to fix”
- 55:43 “we do collect some of the most common issues that can occur either during the setup or the replication phase”
- 57:59 “there is no need to wait you can just take a database and test the cloud migration to a Sandbox”
Disclaimers in the video
- 13:49 coming-later: we are stopping the direct upgrade and Cloud migration path from Dynamics business Central 14 in approximately year and a half from now so in April 2025 together with version 26
- 27:01 other: we highly recommend to try the cloud migration for the first time on a backup of the production database
- 36:06 not-in-this-release: Details about selective table inclusion will be elaborated more into more specific details in what’s new in Cloud migration session
- 45:38 coming-later: we will cover about in what’s new then the next thing that you can do is that you can complete the cloud migration
- 52:24 coming-later: we are going to be talking about it more in the what’s new session
- 52:24 other: we are recommending to skip this step and we are going to be talking about it more in the what’s new session
- 54:23 not-in-this-release: we do not officially support it and we strongly advise against it
- 54:43 other: you’re doing it on your own risk
- 55:03 other: we will write the dedicated documentation topic that it will explain to you how you can do this safely
Presenters (as heard): Nicola, Ricardo, Nicolas.
