Aller au contenu principal

Microsoft Dynamics 365 Business Central Integration Guide

1. Introduction

Hyperfox is a B2B order processing automation platform that uses AI to transform unstructured email orders into structured, ERP-ready data. This guide describes how Hyperfox integrates with Microsoft Dynamics 365 Business Central (BC) to deliver validated sales orders.

Separately from order creation, Hyperfox maintains its own built-in integration with Business Central for data retrieval (reading customers, items, and other master data). This default integration uses HTTP Basic Authentication and operates independently of which order creation method is used.

1.1 Terminology

TermDefinition
BCMicrosoft Dynamics 365 Business Central (Online or On-Premises)
ConnectorThe Hyperfox Connector — a middleware service developed and hosted by Hyperfox that creates sales orders in Business Central via the BC API
v2.0 APIThe standard REST API exposed by Business Central for entities like customers, items, and sales orders
Entra IDMicrosoft Entra ID (formerly Azure Active Directory), the identity platform used for authentication
AL ExtensionA custom code package written in Microsoft's AL language that is installed inside a Business Central environment to extend its functionality
Custom endpointA BC API page created via an AL extension (e.g. HFOX_SalesOrders instead of the standard salesOrders)

2. Integration methods

There are two methods for creating sales orders in Business Central from Hyperfox. Both methods receive the same webhook payload (see Section 7 for the full specification).

Custom BC endpoint (recommended)Hyperfox Connector
Order creationBC processes the webhook internallyConnector creates the order via BC API calls
Customer/item resolutionHandled inside BC (native lookups)Connector queries BC API to resolve IDs
Business logic & validationFull access to BC validation rulesLimited to what the BC API exposes
Custom fieldsYes — the extension controls the mappingOnly if using custom BC API pages
BC partner requiredYes (to build the AL extension)No
Middleware dependencyNoneYes — Connector must be available

:::tip Recommendation The custom BC endpoint is the preferred approach because it keeps all order processing logic inside Business Central, leverages native validation, and eliminates middleware as a point of failure for order creation. :::

2.1 Choosing the right method

Choose the custom BC endpoint if:

  • Your BC implementation partner is available to build and maintain an AL extension
  • You need custom fields, dimensions, or location codes on sales orders
  • You want order processing logic to live entirely inside Business Central
  • You prefer to minimize external middleware dependencies

Choose the Connector if:

  • You need to go live quickly without BC partner involvement
  • The standard BC API field set is sufficient for your needs
  • Your BC partner is not available or the AL extension is not yet ready

2.2 Architecture overview

Method A — Custom BC endpoint (recommended):

Webhook (JSON)
┌──────────┐ ──────────────────────────► ┌──────────────────┐
│ Hyperfox │ │ Business Central │
│ Platform │ ◄────────────────────────── │ (your tenant) │
│ │ HTTP response │ │
│ │ │ Custom API page │
│ │ Data retrieval ◄─► │ via AL extension │
│ │ (Basic Auth, BC REST API) │ │
└──────────┘ └──────────────────┘

Method B — Hyperfox Connector:

Webhook (JSON)
┌──────────┐ ──────────────────► ┌─────────────┐ BC REST API ┌──────────────────┐
│ Hyperfox │ │ Connector │ ─────────────►│ Business Central │
│ Platform │ │ Application │ ◄─────────────│ (your tenant) │
│ │ └─────────────┘ Sales order └──────────────────┘
│ │ creation ▲
│ │ │
│ │ Data retrieval (Basic Auth, BC REST API) │
│ │ ────────────────────────────────────────────────────────────►
└──────────┘

3. Prerequisites

Before the integration can be activated, the following must be in place.

3.1 Business Central API access

(Both) Hyperfox requires API access to your Business Central environment for data retrieval (reading customers, items, and other master data). When using the Connector method, the same credentials are also used for order creation. The following environment-specific information is needed during setup:

ConfigurationDescriptionExample
BC API URLBase URL for the standard BC APIhttps://api.businesscentral.dynamics.com/v2.0/{tenantId}/{env}/api/v2.0/companies({companyId})
API credentialsUsername and password for Basic AuthenticationProvided by your BC administrator
Sales Order API URL (Connector only)Endpoint for sales order creation (may differ if using a custom extension)Same as API URL, or a custom extension URL

3.2 Required BC permissions

The API user account requires the following minimum permission sets:

Permission SetAccess LevelPurposeApplicability
D365 READReadLook up customers, items, and other master data(Both)
D365 SALES DOC, EDITRead / WriteCreate sales orders and sales order lines(Connector only)

If a custom attachment extension is used, additional permissions for that endpoint may be required.

3.3 Network configuration

(Both) Hyperfox and the Connector communicate with Business Central from the following static IP addresses. If your organization uses firewall rules or conditional access policies, please whitelist these addresses:

ServiceIP AddressFQDN
Connector / API Communication185.86.19.68n/a
Application (Production) — Webhooks3.73.107.207production.egress.hyperfox.net
Application (Staging) — Webhooks3.123.145.36staging.egress.hyperfox.net

:::note Note on IP whitelisting Business Central Online does not natively support IP-based restrictions at the application level. For BC Online, IP restrictions are enforced through Entra ID Conditional Access policies (requires Azure AD Premium P1/P2 licensing). For BC On-Premises, standard firewall rules apply. The IPs above are provided for your network infrastructure and audit purposes regardless of deployment type. :::

All communication uses TLS 1.2 or higher. No data is transmitted in plain text.

3.4 Onboarding checklist

The following items must be provided by the customer to the Hyperfox team before the integration can be configured:

  • Basic Auth credentials — Username and password for the dedicated BC API user account
  • Base URL for Business Central — The full API base URL including tenant ID, environment, and company ID
  • API endpoint names — If custom API pages are used, provide the endpoint names for:
    • Customers
    • Items
    • Customer_Item (optional)
    • Units_of_measure (optional)
    • Item_Unit_Of_Measure (optional)
  • Webhook endpoint(Custom BC endpoint method only) The URL of the custom API page in BC that will receive the Hyperfox webhook

This section describes the recommended integration method where Business Central receives the Hyperfox webhook directly and processes it internally.

4.1 How it works

  1. An order is validated in Hyperfox (either automatically or after manual review).
  2. Hyperfox sends the validated order as a JSON webhook directly to a custom API page in Business Central.
  3. The AL extension inside BC processes the payload and creates the sales order — all using native BC logic.
  4. BC returns a success or error response. Hyperfox updates the order status accordingly.

Because all order processing happens inside Business Central, this method has full access to BC's validation rules, custom fields, dimensions, location codes, and any other business logic configured in the environment. The Connector is not involved in this flow.

4.2 What the BC partner needs to build

The customer's BC implementation partner creates an AL extension that includes:

  • A custom API page that accepts the Hyperfox webhook payload (see Section 7 for the full JSON structure).
  • Order processing logic that maps the incoming Hyperfox fields to BC sales order fields (customer resolution by account number, item resolution by SKU, line creation with quantities).
  • Error handling that returns meaningful HTTP status codes and error messages so Hyperfox can detect and report failures.

Hyperfox provides:

  • The webhook payload specification (Section 7)
  • A staging environment for end-to-end testing
  • Support during integration development and go-live

5. Connector integration

The Connector is a lightweight middleware service developed and hosted by Hyperfox. When a validated order is ready, Hyperfox sends the webhook to the Connector, which then creates a standard sales order in Business Central using the BC REST API (v2.0).

The Connector uses the standard salesOrders and salesOrderLines API pages. No AL extension or custom development is required on the BC side — the Connector works with a default Business Central setup.

remarque

If your BC environment uses custom API pages, the Connector can be configured to use those instead. Please discuss with Hyperfox during onboarding.

6. Security

6.1 Authentication

(Data retrieval) Hyperfox's built-in BC integration authenticates using HTTP Basic Authentication with a dedicated BC API user account.

(Connector method) The Connector authenticates with Business Central using the same HTTP Basic Authentication credentials. These are stored as environment variables on the Connector server and are never transmitted in plain text.

(Custom BC endpoint method) Authentication between Hyperfox and the custom BC endpoint is handled by the BC platform's own authentication mechanisms (typically Entra ID / OAuth 2.0).

Security controlImplementation
Transport encryptionTLS 1.2+ (mandatory)
Credential storageEnvironment variables (encrypted at rest on server)
API authentication (data retrieval & Connector)HTTP Basic Auth with dedicated service account
API authentication (Custom endpoint)BC platform authentication (Entra ID / OAuth 2.0)

6.2 Network security

All outbound connections from Hyperfox and the Connector originate from the static IP addresses listed in Section 3.3. For Business Central Online, access restrictions can be enforced via:

  • Entra ID Conditional Access policies: Restrict API token issuance to the allowed static IPs (requires Azure AD Premium P1/P2).
  • Tenant allowlisting: BC administrators can restrict environment access to up to 10 external Entra tenant IDs.

For Business Central On-Premises, standard network security controls (firewalls, VPN, IP whitelisting) apply at the infrastructure level.

6.3 Data handling

(Connector method) The Connector processes order data in transit only. The raw webhook payload is temporarily stored on the Connector server during processing and is not retained after the order has been successfully created in Business Central.

(Custom BC endpoint method) No order data passes through the Connector or any middleware — it flows directly from Hyperfox to Business Central.

7. Appendix: Hyperfox webhook payload structure

Below is the JSON structure that Hyperfox sends when delivering a validated order. This payload is identical regardless of whether it is sent to the Connector or to a custom BC endpoint.

7.1 Order header

FieldTypeDescription
idUUIDUnique Hyperfox order identifier
created_atDateOrder creation date in Hyperfox
updated_atDateLast update date
sales_order_idString | nullBC sales order ID (populated after successful creation)
processing_statusStringAlways "validated" when sent
issue_dateDateOrder issue date → maps to orderDate
delivery_dateDate | nullRequested delivery date (header level) → maps to requestedDeliveryDate
notesString | nullFree-text notes from the order
customer_referenceStringCustomer's order reference → maps to externalDocumentNumber
accuracyIntegerAI confidence score (0–100)
error_reasonString | nullError description (null when validated)
buyer_customer_party_idStringBuyer customer account ID → used for BC customer lookup
accounting_customer_party_idStringInvoicing customer account ID (may differ from buyer)
order_inquiry_idUUIDReference to original email

7.2 Customer party object

The buyer_customer_party and accounting_customer_party objects contain full customer details:

FieldTypeDescription
idUUIDInternal Hyperfox customer identifier
created_atDateCustomer record creation date
updated_atDateCustomer record last update date
account_idStringCustomer number (e.g. "C2480") → used for BC lookup
nameStringCompany name
languageString | nullCustomer language code
website_uriString | nullCustomer website
street_nameStringStreet address
additional_street_nameStringAdditional address line
city_nameStringCity
postal_zoneStringPostal / ZIP code
countryStringISO country code (e.g. "BE")
contact_nameString | nullContact person name
contact_telephoneStringContact phone number
contact_emailStringContact email address

7.3 Order lines array

FieldTypeDescription
idUUIDUnique line identifier
created_atDateLine creation date
updated_atDateLine last update date
order_idUUIDReference to parent order id
quantityIntegerOrdered quantity → maps to quantity
item_idStringItem SKU → used for BC item lookup
delivery_dateDatePer-line requested delivery date
customer_referenceStringLine-level customer reference

7.4 Item object (nested in each line)

FieldTypeDescription
idUUIDInternal Hyperfox item identifier
created_atDateItem record creation date
updated_atDateItem record last update date
nameStringItem description
descriptionStringExtended item description
brand_nameString | nullBrand name
skuStringItem SKU code (e.g. "FX-PLUSH-STD") → used for BC item lookup
eanStringEAN / barcode
base_unit_code_idStringUnit of measure (e.g. "PCE", "BOX")

7.5 Example payload

remarque

This example uses anonymised data. Actual field values will vary per customer.

{
"validated_order": {
"id": "b3e7a1d2-4f89-4c2e-a615-9d82f3b70c41",
"created_at": "2026-03-10",
"updated_at": "2026-03-10",
"sales_order_id": null,
"processing_status": "validated",
"issue_date": "2026-03-10",
"delivery_date": null,
"notes": null,
"customer_reference": "PO-2026-04821",
"accuracy": 92,
"error_reason": null,
"buyer_customer_party_id": "C2480",
"accounting_customer_party_id": "C2480",
"order_inquiry_id": "019d4a82-bc13-7291-a445-e83d91b2f507",
"buyer_customer_party": {
"id": "019c3f17-8a4d-7012-b891-3c6e42a85901",
"created_at": "2026-01-15",
"updated_at": "2026-03-10",
"account_id": "C2480",
"name": "Foxden Trading NV",
"language": null,
"website_uri": null,
"street_name": "Vossenstraat 12",
"additional_street_name": "",
"city_name": "Antwerp",
"postal_zone": "2030",
"country": "BE",
"contact_name": null,
"contact_telephone": "",
"contact_email": "[email protected]"
},
"accounting_customer_party": {
"id": "019c3f17-8a4d-7012-b891-3c6e42a85901",
"created_at": "2026-01-15",
"updated_at": "2026-03-10",
"account_id": "C2480",
"name": "Foxden Trading NV",
"language": null,
"website_uri": null,
"street_name": "Vossenstraat 12",
"additional_street_name": "",
"city_name": "Antwerp",
"postal_zone": "2030",
"country": "BE",
"contact_name": null,
"contact_telephone": "",
"contact_email": "[email protected]"
},
"lines": [
{
"id": "b3e7a1d2-5a12-4891-b203-7e41c8d930a1",
"created_at": "2026-03-10",
"updated_at": "2026-03-10",
"order_id": "b3e7a1d2-4f89-4c2e-a615-9d82f3b70c41",
"quantity": 120,
"item_id": "FX-PLUSH-STD",
"delivery_date": "2026-04-02",
"customer_reference": "4500892347",
"item": {
"id": "019c3f17-6b22-7a1e-94d3-8f2a41e07b55",
"created_at": "2026-01-15",
"updated_at": "2026-03-10",
"name": "Hyperfox plush toy — standard",
"description": "",
"brand_name": "Hyperfox",
"sku": "FX-PLUSH-STD",
"ean": "5412345678901",
"base_unit_code_id": "PCE"
}
},
{
"id": "b3e7a1d2-5d34-4f7a-a891-2b53d7e104c8",
"created_at": "2026-03-10",
"updated_at": "2026-03-10",
"order_id": "b3e7a1d2-4f89-4c2e-a615-9d82f3b70c41",
"quantity": 80,
"item_id": "FX-PLUSH-STD",
"delivery_date": "2026-04-09",
"customer_reference": "4500892347",
"item": {
"id": "019c3f17-6b22-7a1e-94d3-8f2a41e07b55",
"created_at": "2026-01-15",
"updated_at": "2026-03-10",
"name": "Hyperfox plush toy — standard",
"description": "",
"brand_name": "Hyperfox",
"sku": "FX-PLUSH-STD",
"ean": "5412345678901",
"base_unit_code_id": "PCE"
}
},
{
"id": "b3e7a1d2-6147-4e5b-bc42-9a17f3c285d9",
"created_at": "2026-03-10",
"updated_at": "2026-03-10",
"order_id": "b3e7a1d2-4f89-4c2e-a615-9d82f3b70c41",
"quantity": 25,
"item_id": "FX-MUG-CER",
"delivery_date": "2026-04-15",
"customer_reference": "4500892347",
"item": {
"id": "019c3f17-7c91-7d4f-b562-4e9130d82a77",
"created_at": "2026-01-15",
"updated_at": "2026-03-10",
"name": "Hyperfox ceramic mug 350ml",
"description": "Fox-print enamel-coated ceramic mug",
"brand_name": "Hyperfox",
"sku": "FX-MUG-CER",
"ean": "5412345679205",
"base_unit_code_id": "PCE"
}
}
]
}
}