Moving between extension scopes

This article describes the different options you have for moving an app from one scope to another.

For a definition of the different extension types and their scope, see Extension types and scope.

Moving a PTE to AppSource

Scenario: You've deployed your extension for selected customers as a PTE and are now aiming at covering more markets by deploying it as an AppSource app.

Identity requirements for moving a PTE to AppSource

  • It isn't possible to deploy an AppSource app and a PTE with the same id. You must then change the id of the extension before uploading it to AppSource. This means that the data won't be available anymore for environments that had the PTE installed and are now using the AppSource app. Dependent extensions will also need to be updated to use the new app ID in their app.json file.

  • Due to some current limitations in our service, it isn't possible to have an AppSource app and a PTE extension with the same name, publisher, and version. You must then change the name, publisher, or version of the app before uploading it to AppSource.

Other requirements for moving a PTE to AppSource

Other information moving a PTE to AppSource

  • If you want to move the data by having the two apps (PTE and AppSource app) installed side-by-side, then you must ensure that the two apps can be installed side-by-side. For this, they must not share any object names nor IDs. You can then define another PTE depending on both apps that would take care of moving the data.

  • All dependent extensions must be updated to use the new App ID in their app.json file and to reference the objects defined in the extension by their new name and object ID.

Moving a DEV extension to AppSource

Scenario: You're done developing a new offer or a new version of an existing offer and are now ready to make it available for all your customers in SaaS.

Identity requirements for moving a DEV extension to AppSource

  • It's not possible to deploy an AppSource app and a PTE with the same id. You must then change the id of the extension before uploading it to AppSource. This means that the data won't be available anymore for environments that had the PTE installed and are now using the AppSource app. Dependent extensions will also need to be updated to use the new app ID in their app.json file.

  • Due to some current limitations in our service, it isn't possible to have an AppSource app and a PTE extension with the same name, publisher, and version. You must then change the name, publisher, or version of the app before uploading it to AppSource.

Note

Alternatively, you can also uninstall and unpublish the DEV extension with this app id from your sandboxes environment. Make sure to select the option to delete the extension data and extension schema when uninstalling the extension.

Other requirements for moving a DEV extension to AppSource

  • AppSource apps must use a specific ID range, while DEV extensions don't have any ID range limitation. You might then have to change the ID of all the objects in your extension. For more information, see Object Ranges.

  • AppSource apps are required to use affixes for their object names, while DEV extensions don't have any affix usage requirements. You might then have to rename all the objects in your extension to use affixes. For more information, see Benefits and Guidelines for using a Prefix or Suffix

  • You can find the full list of requirements for AppSource apps here:

Publishing an AppSource app as a DEV extension

Scenario: Showing a preview of an app to a customer or developing the next version of the app.

Publishing an AppSource app to a sandbox environment as a DEV extension is a common scenario when you want to show a preview of your app to a customer or during active development.

Note

From Business Central 2023 release wave 2, it's possible to install a preview of AppSource apps on customer environments without publishing them as DEV extensions. For more information, see Technical Validation FAQ.

Identity requirements for publishing an AppSource app as a DEV extension

  • DEV extensions should have a different app id because there might be other global apps published to your service and they'll collide. If you don't change the app id, the app that you've published from Visual Studio Code to a developer sandbox will be automatically unpublished from your environment if another user tries to install the AppSource app in their environment.

Other requirements for publishing an AppSource app as a DEV extension

  • If you haven't changed the app id of the AppSource app in your DEV extension, to prevent publishing the DEV extension if another AppSource app depends on that particular AppSource app. If you want to achieve such functionality the whole chain of dependencies should be published as DEV extensions with different app id.

Publishing a PTE as a DEV extension

Scenario: Showing a preview of an app to a customer or developing the next version of the app.

Identity requirements for publishing a PTE as a DEV extension

No specific identity requirements.

Other requirements for publishing a PTE as a DEV extension

No specific requirements.

Moving a DEV extension to a PTE

Scenario: Deploying your app to a production environment.

Identity requirements for moving a DEV extension to a PTE

No specific identity requirements.

Other requirements for moving a DEV extension to a PTE

You can find the full list of requirements for PTE in the documentation for the PerTenantExtensionCop Analyzer.

Moving an AppSource app to a PTE

Scenario: Reducing the availability of your app to select customers.

Identity requirements for moving an AppSource app to a PTE

  • It's not possible to deploy an AppSource app and a PTE with the same id. You must then change the id of the extension before uploading it the PTE. This means that the data won't be available anymore for environments that had the PTE installed and are now using the AppSource app. Dependent extensions will also need to be updated to use the new app ID in their app.json file.

  • If you wish to deprecate the offer in AppSource, see Discontinuing an AppSource app.

Additional requirements for moving an AppSource app to a PTE

  • AppSource apps and PTEs are using different ID ranges. You must then change the ID of all the objects in your extension. For more information, see Object Ranges.

  • In order to avoid potential name conflicts if the AppSource app and the PTE are installed side-by-side, it is recommend to change the name of all the objects in your extension.

  • You can find the full list of requirements for PTE in the documentation for the PerTenantExtensionCop Analyzer.

Other information moving an AppSource app to a PTE

  • Even if you stop distributing the offer in Partner Center, the app still exists in Business Central and the App ID remains reserved for it. It then can't be attributed to the PTE.

  • If you want to move the data by having the two apps (PTE and AppSource app) installed side-by-side, then you must ensure that the two apps can be installed side-by-side. For this, they must not share any object names nor IDs. You can then define another PTE depending on both apps that would take care of moving the data.

  • All dependent extensions will have to be updated to use the new app id in their app.json file and to reference the objects defined in the extension by their new name and object ID.

See also

Developing Extensions
Get Started with AL
Extension Types and Scope