Skip to main content
Technical Preview

Overview

A client-mode connector for a curated inventory / sales / webhook slice of Business Central Standard API v2.0 under https://api.businesscentral.dynamics.com/v2.0/{tenant}/{env}/api/v2.0/: BASE_ADDRESS is the Standard API root (no trailing slash in the template). Topics use erp/dynamics365-bc/<object>/<verb>.
This is Business Central cloud API v2.0, not Dataverse and not Finance & Operations. For CRM/Dataverse Web API see Dynamics 365 (Dataverse). For F&O OData see Dynamics 365 Finance and Supply Chain.
Business Central API v2.0 requires a real tenant + environment, a company GUID, and an Entra ID OAuth 2.0 Bearer token. This template has not been verified against a live tenant. Prefer Hub secrets for tokens. Discover companies with GET .../api/v2.0/companies.

Basic Syntax

Events

Auth

OAuth 2.0 (Entra ID) — default in the template:
  1. Register an app in Microsoft Entra ID; create a client secret; grant Dynamics 365 Business Central API permissions (e.g. API.ReadWrite.All).
  2. In Business Central: Azure Active Directory Applications (Microsoft Entra Applications) — add the client ID and assign permission sets.
  3. Request a token (client credentials example):
Delegated / authorization-code flows also work when your BC setup requires a licensed user context.
  1. Pass the access token and company GUID on the MQTT request payload:
The connector sends Authorization: Bearer {value.json.access_token}. Prefer Hub secrets / GET SECRET. Never commit real tokens.

Companies and OData

Resolve companyId with GET https://api.businesscentral.dynamics.com/v2.0/{tenant}/{env}/api/v2.0/companies. All company-scoped entities nest under companies({id})/.... Send OData headers Accept: application/json, OData-Version: 4.0, OData-MaxVersion: 4.0.

Item ledger vs journals

itemLedgerEntry supports GET only. Catalog “POST itemLedgerEntries via journals” maps to the standard API writable journal path journalLines (G/L or Bank). Inventory quantity adjustments that create item ledger entries need a custom Item Journal API in AL.

Webhooks

Working with webhooks: items is a supported entity. Example subscription body:
Handshake is mandatory: BC GETs notificationUrl?validationToken=... and expects the token in the 200 response body. Renew with PATCH /subscriptions({id}) before expiry (~3 days).

Deploy

  1. Copy Dynamics365BcRestApi.lot (no ADD METADATA).
  2. Replace YOUR_TENANT and YOUR_ENV in BASE_ADDRESS.
  3. -addRoute on the broker (or Hub deploy).
  4. Publish JSON to a request topic; subscribe to the matching /response topic.
Hub catalog metadata (icon, description, STATUS "beta") is in hub-metadata.lot for Hub / -listTemplates only.

Status

Blocked until a live authenticated call succeeds (factory has no BC tenant/env or Entra credentials). Unblock with lab tenant + environment + company GUID + client-credentials (or delegated) token, then smoke GET /companies({id})/items?$top=1 expecting HTTP 200.

References

Last modified on October 21, 2026