Enterprise-grade architecture, native Business Central deployment. Everything your IT team needs to evaluate the integration.
| Specification | Detail |
|---|---|
| Platform | Microsoft Dynamics 365 Business Central (on-premises and SaaS) |
| Minimum BC Version | Business Central 2023 Wave 1 (BC22) |
| Extension Type | Per-tenant extension (PTE) |
| Object ID Range | 56000 – 56199 |
| Deployment | Standard BC extension publish (.app file) |
| Permissions | Dedicated ABC3PL permission set — principle of least privilege |
| Message Format | JSON or CSV (configurable per mapping template) |
| Deduplication | SHA-256 payload hashing (inbound) + document-level flag (outbound) |
| Job Queue | Native BC Job Queue — configurable schedules for all automated tasks |
| Supported Entities | Sales Orders, Transfer Orders, Item Master Data, Despatch Confirmations, Receipt Confirmations |
| Middleware | Designed for Azure Data Factory; compatible with any REST/SOAP middleware (Boomi, MuleSoft, Logic Apps, custom) |
| Authentication | Standard BC OAuth 2.0 (SaaS) / Basic Auth on API pages (on-premises) |
/api/cirrotech/integration/v1.0/messageQueues
Exposes the message queue for consumption by Azure Data Factory or any REST-capable middleware. Returns queued messages with New status in the selected company. Used by your middleware to poll for outbound orders ready to dispatch to the warehouse.
ABCMessageMgmtSOAP
Accepts inbound despatch and receipt confirmations pushed by your 3PL warehouse. Each call includes a full message payload; ExDoc performs SHA-256 deduplication, extracts the message into staging tables, and queues it for resolution and posting. Supports legacy SOAP-only 3PL integrations.
/api/SchemaComparison
Available in the ExDoc Dashboard web application. Retrieves the table and column schema of the currently connected middleware database. Used by automated tooling or manual inspection to compare schemas between environments before a deployment — detecting drift early.
| Component | Technology |
|---|---|
| Web Framework | ASP.NET Core MVC (.NET 10) |
| Authentication | Azure Active Directory (AAD) via Microsoft Identity Web (OpenID Connect + MSAL) |
| Database | SQL Server (via Entity Framework Core) — connects to ExDoc middleware database |
| Secrets Management | Azure Key Vault — connection strings and secrets stored outside application config |
| BC Integration | Business Central REST API v2.0 (OAuth 2.0 delegated permissions) |
| Hosting | Azure App Service |
| Document Formats | XML, JSON, SOAP / EDI |
| Anonymous Access | None — all pages require an authenticated Azure AD user |
| Direct URL | /DocumentStatus/Lookup?documentNo=<no> — deep-linkable from inside Business Central |
ExDoc is designed from the ground up for enterprise security requirements — no credentials in config files, no anonymous access, no shared secrets.
A dedicated ABC3PL permission set controls access to all ExDoc objects. Assign to users and roles following your existing BC security model. No over-privileged access required.
The ExDoc Dashboard requires Azure Active Directory authentication. No anonymous access to any page or API. Token acquisition uses OAuth 2.0 delegated permissions on behalf of the signed-in user.
All database connection strings and application secrets are stored in Azure Key Vault — never in appsettings.json or environment variables. Key Vault status is visible on the diagnostics page.
Inbound SOAP messages are hashed with SHA-256 before processing. Previously processed hashes are stored, and resubmissions are rejected silently — preventing duplicate documents in BC.
Field length and XML-safety validation runs at both data entry and order release. Orders with constraint violations cannot be released — preventing malformed payloads from ever reaching the 3PL.
Every processing step — info, warning, and error — is logged with timestamps and procedure references. The complete log is accessible from the BC Setup Card and retained for compliance and SLA reporting.
Contact us for a technical deep-dive, sandbox environment access, or a conversation with our integration team.