Extension Management in Microsoft Dynamics 365 Business Central

Introduction

As part of our efforts to refactor and decouple objects in the System Application, and to support the move to AL for ourselves and our partners, it was clear that we needed to create the Extension Management module.

Starting with the 2019 Autumn Release, we’re shipping the modules we have extracted and the Base Application as first party extensions, and the extensibility of our product by per-tenant or AppSource approved extensions relies on having the right tooling for managing extensions.

What has been done

We have improved capabilities for managing extensions and combined them in the Extension Management module. We’ve also removed their dependencies on the Base Application. Extension Management offers capabilities for extensibility by exposing a handful of public objects. For example, through code, you can use these objects to do things like installing and uninstalling, downloading and uploading, and configuring and publishing extensions and their dependencies.

What the module provides

The Extension Management module provides the following capabilities:
  • Install and uninstall extensions, with the option to use UI events
  • Upload and deploy an extension
  • Publish or unpublish extensions (publishing is available only in the client)
  • Download a per-tenant extension source
  • Check whether an extension is installed, which version, and whether it’s the latest
  • Refresh and retrieve the extension deployment status and information
  • Enable or disable http client requests
  • Retrieve an extension’s logo
Note: Depending on the API call, the methods in the module work with either the PackageId or AppId parameters. The distinction between the two is that while an app will have the same AppId regardless of its version, the PackageId is unique to each extension. To derive one from the other, helper functions are also provided in the module.