Dynamics 365 Business Central 2023 Wave 1 release introduces many new features on different areas, but some of them are quite hidden. One of them is related to per-tenant extensions (extensions that you developed in 50000..99999 range as a customization for a particular tenant).
Dynamics 365 Business Central SaaS runs in a multi-tenant configuration. In a multitenant deployment, information about the Business Central application is stored in a separate application database. Your customers’ data is stored in separate business databases (tenant databases), each of which is a tenant in your deployment. By separating application from data, you can deploy the same solution to many customers with centralized maintenance of the application and isolation of each tenant. Each tenant database contains the business data for one or more specific companies and doesn’t contain all of the application metadata.
To make your extension available to tenant users, three tasks are required:
- Publish the extension package to the Dynamics 365 Business Central server instance.
- Synchronize the extension with the tenant database.
- Install the extension on the tenant.
Publishing an extension to a Dynamics 365 Business Central server instance adds the extension to the application database that is mounted on the server instance, making it available for installation on tenants of the server instance. Publishing updates internal tables, compiles the components of the extension behind-the-scenes, and builds the necessary metadata objects that are used at runtime.
Synchronizing an extension updates the database schema of the tenant database with the database schema that is defined by the extension objects. If a table or table extension is included in the extension, the respective full or companion table is created in the tenant database.
What changes now?
Starting from Dynamics 365 Business Central 2023 Wave 1 release, per-tenant extensions (PTEs) are moved to the tenant database, exactly like any other customer’s data. This means some things:
- PTEs now are included in the size of the database. This means that if you have tons on large PTEs, they can have a weight on the storage capacity. When you unpublish the extension, the storage is cleaned up.
- This allows backup of PTEs with the tenant database.
- This will permit future support for DEV extensions persistence across upgrades (not yet planned, but now possible).
- This will permit to satisfy GDPR-related things like Schrems II (in-region storage of all the customer’s artifacts) compliance.
Some notes related to this last point: Schrems II regulation requires European companies are to conduct individual assessments of each data transfer to a non-EU country in order to ensure compliance. If an European organisation is looking to store customer data on servers based in a non-EU country, any data transfer to these servers would have to undergo an individual risk assessment to ensure it is compliant with GDPR.
Dynamics 365 Business Central telemetry will expose also the following new telemetry signals for PTEs on Azure Application Insights:
- LC0200 – Validation of a PTE submission has started (validation that Microsoft is doing during PTE submission).
- LC0201 – A diagnostic is reported for a PTE submission itself. e.g. duplicate object Id
- LC0202 – Validation of a PTE submission has completed successfully.
- LC0203 – Validation of a PTE submission has completed with errors.
- LC0204 – Validation of the main PTE has started.
- LC0205 – Validation of the main PTE has completed successfully.
- LC0206 – Validation of the main PTE has completed with errors.
- LC0207 – Validation of a dependent PTE has started.
- LC0208 – Validation of a dependent PTE has completed successfully.
- LC0209 – Validation of a dependant PTE has completed with errors.
- LC0210 – A diagnostic is reported during the validation of an extension in a PTE submission
These can be useful to troubleshoot possible PTEs installation errors.