Extension Deployment (CI/CD service account)
The extension is installed as a Per-Tenant Extension (PTE) by an automated deployment pipeline that publishes through the Business Central automation API — it is not uploaded manually and not installed from AppSource. Before the pipeline can install (or upgrade) the extension in an environment, the pipeline's service account must be registered in that environment.
This is a separate application from the integration app described in Integration Endpoint — the two have different client IDs and different permission sets, and both must be registered.
Register the deployment application
In Business Central, search for Microsoft Entra Applications and create an entry for the deployment application:
- Client ID — the application (client) ID of the deployment pipeline's Entra app registration (from the party operating the pipeline).
- State = Enabled.
- Grant the application user both permission sets:
- EXTEN. MGT. - ADMIN
- D365 AUTOMATION — the automation API returns
403 Forbiddenwithout it, even with the extension-management set in place.
This must be repeated per environment (each sandbox and production environment has its own registration list). The registration must exist before the first deployment to the environment — until then, deploy runs fail with an authorization error.
Verify
After the first successful deploy run, open Extension Management in the environment and confirm that Travel Business Connector (publisher TBC) is listed as installed with scope Tenant (PTE).
Troubleshooting
| Symptom | Cause / fix |
|---|---|
Deploy fails with 403 Forbidden | The deployment app is not registered in the environment, State is not Enabled, or the D365 AUTOMATION permission set is missing. |
Deploy fails with AVS0109 (dependency conflict) | A Dev-scope version of the extension is installed in the environment (published from VS Code). A PTE upload cannot upgrade over it: in Extension Management, uninstall the Dev row (leave "Delete Extension Data" off), then unpublish it, then re-run the deployment. Uninstalling without deleting extension data keeps all table data — it reattaches when the PTE installs. |