ACF Connector Specification — Microsoft Dynamics 365 Business Central
1. Purpose
This specification defines how the ZAYAZ Accounting Connectivity Framework (ACF) integrates with Microsoft Dynamics 365 Business Central.
Business Central is treated as a cloud ERP and accounting platform rather than as an import/export format.
The preferred ZAYAZ architecture uses:
- Microsoft Standard API v2.0;
- Microsoft Entra ID service-to-service authentication;
- Business Central permission sets;
- custom AL APIs where the standard API does not expose required customer data;
- Business Central webhooks for near-real-time change detection;
lastModifiedDateTimefiltering for incremental retrieval where supported;- periodic authoritative reconciliation; and
- TrustGate for source and transformation lineage.
The connector enables Business Central data to participate safely in:
- ESG screening;
- spend-based emissions;
- supplier analysis;
- procurement analysis;
- physical activity discovery;
- inventory and material-flow analysis;
- project allocation;
- asset analysis;
- evidence collection;
- VSME and ESRS prepopulation;
- audit and assurance; and
- continuous sustainability bookkeeping.
2. Source identity
Business Central has a particularly clean multi-level source identity.
Microsoft Entra tenant
↓
Business Central environment
↓
Business Central company
↓
Business object
↓
Source record
ACF preserves all relevant levels.
The source identity therefore cannot be reduced to:
company name
or even:
company GUID
without environment and tenant context.
3. Environments
A Microsoft Entra tenant can contain multiple Business Central environments.
Typical environment types include:
PRODUCTION
SANDBOX
The environment name forms part of the API path.
ZAYAZ must discover environments rather than assume:
environment = production
for every connection.
4. Company context
Each Business Central environment can contain multiple companies.
Most business-data API routes are company-scoped.
For example:
environment
↓
companies
↓
company GUID
↓
generalLedgerEntries
Every company must map to:
ZAYAZ organization
+
E-C-O Number
before processing.
5. Company is the ACF entity boundary
For Business Central, company GUID becomes the primary ERP organizational partition.
Conceptually:
Business Central company
↓
legal entity assessment
↓
ZAYAZ organization
↓
E-C-O Number
The legal-entity relationship must still be validated rather than assumed blindly.
6. Standard API v2.0
Microsoft Standard API v2.0 is the preferred connector surface.
The standard endpoint follows the Business Central environment and company model.
Conceptually:
api.businesscentral.dynamics.com
↓
tenant / environment
↓
api/v2.0
↓
company
↓
resource
The API stack is enabled by default in Business Central Online.
7. Why API v2.0 is preferred
Microsoft explicitly recommends the REST API stack for integrations.
The standard API has several advantages:
- stable integration contract;
- GUID source identities;
- OData v4 semantics;
- filtering;
- pagination;
- relationships;
- webhooks for supported entities;
- predictable versioning; and
- compatibility across Business Central Online environments.
ACF therefore treats it as the authoritative default integration surface.
8. Service-to-service authentication
Production ZAYAZ integrations should use Microsoft Entra service-to-service authentication.
The OAuth model is:
Microsoft Entra application
↓
client credentials
↓
access token
↓
Business Central
This allows unattended integrations without an interactive user session.
9. Entra application permission
The Microsoft Entra application requires Business Central API access.
For API and web-service access, Business Central documents:
API.ReadWrite.All
as the application-level permission.
That permission does not mean ZAYAZ should receive unrestricted Business Central object access.
10. Business Central permission sets
A second authorization layer exists inside Business Central.
The application is registered on the:
Microsoft Entra applications
page.
Business Central permission sets are then assigned to the application.
This is where ZAYAZ should enforce least privilege.
11. SUPER is prohibited
Business Central explicitly prevents Microsoft Entra applications from receiving the SUPER permission set.
This aligns well with ACF.
The connector should receive only the permissions needed for its approved source domains.
For example:
Read G/L entries
Read vendors
Read purchase invoices
Read items
Read dimensions
rather than:
full Business Central administration
12. ZAYAZ write control
Many Business Central APIs also support:
- POST;
- PATCH;
- DELETE; and
- bound business actions.
ZAYAZ should therefore enforce:
READ = allowed by connector profile
WRITE = blocked by default
even when the application technically possesses the ability to perform write operations.
13. API endpoint structure
Business Central API identity has several components:
Base URL
+
Entra tenant / environment
+
API route
+
company
+
resource
Custom APIs additionally add:
publisher
group
version
These values belong in lineage for custom source interfaces.
14. Environment discovery
Business Central provides an endpoint for discovering tenant environments.
ACF can use this during onboarding to establish:
- environment name;
- environment type;
- Entra tenant ID;
- country code;
- web-service URL; and
- application family.
This means the onboarding flow can be largely machine-driven.
15. Connector profile
Each connection produces:
ACF-BUSINESS-CENTRAL-CUSTOMER-PROFILE
containing:
- Entra tenant ID;
- environment;
- company;
- company mapping;
- permissions;
- standard API capabilities;
- custom APIs;
- webhook resources;
- extension versions;
- dimension mappings;
- inventory capability; and
- evidence capability.
16. Custom APIs
Business Central provides strong AL-based API extensibility.
Where Microsoft Standard API v2.0 does not expose required data, the correct design is generally:
Business Central table / logic
↓
AL custom API
↓
versioned source contract
↓
ZAYAZ
rather than accessing internal database tables.
17. Custom API identity
Custom API pages define:
APIPublisher
APIGroup
APIVersion
EntityName
EntitySetName
These become part of the endpoint contract.
ACF should register them explicitly.
18. Standard API pages cannot simply be extended
Business Central does not currently support adding fields directly to Microsoft standard API pages or queries using ordinary API-page extensions.
If ZAYAZ needs additional fields:
standard API
+
extra customer field
the correct pattern is:
new custom API
with a separately versioned contract.
19. API pages
Custom API pages are intended specifically for integration.
They support:
- REST;
- OData v4;
- CRUD where implemented;
- versioning; and
- webhooks where the source structure qualifies.
This makes API pages the preferred customer-specific source interface.
20. API queries
API queries are useful for optimized read models.
For example:
G/L entry
+
vendor
+
dimension
+
custom field
↓
read-only API query
could reduce source round trips.
However, API queries do not have the same webhook support as API pages.
21. OData web services
Business Central also supports publishing pages and queries as OData v4 web services.
These remain useful for:
- existing customer integrations;
- compatibility;
- specialized source views.
But new ZAYAZ development should prefer API pages and queries.
22. SOAP
SOAP is a legacy path.
The architecture should be:
SOAP
↓ migration
API / OData v4
New ZAYAZ implementations must not create new SOAP dependencies.
23. SOAP removal
Microsoft has already deprecated SOAP web-service publication of Microsoft UI pages.
Support for exposing Microsoft UI pages through SOAP is scheduled for removal in Business Central version 29.0.
That makes API-first design especially important.
24. Webhooks
Business Central has native webhook support.
A subscription identifies a resource such as:
companies(companyId)/customers
and a ZAYAZ notification URL.
Business Central then sends notifications when supported source entities change.
25. Subscription handshake
Webhook creation requires a handshake.
Business Central sends a:
validationToken
to the notification endpoint.
ZAYAZ must return the token with a successful response before the subscription becomes active.
The same handshake occurs during renewal.
26. Webhook client state
Subscriptions can contain:
clientState
which is returned in notifications.
ZAYAZ should use this as an opaque shared verification value.
This strengthens notification integrity.
27. Subscription expiry
Webhook subscriptions expire unless renewed.
The default lifetime is three days.
API Hub must therefore operate a subscription-renewal scheduler.
The lifecycle is:
create
↓
active
↓
renew
↓
active
not:
create once
↓
forget forever
28. Webhook supported resources
Webhook capability should be discovered dynamically.
Business Central exposes information about which API resources support webhook subscriptions.
The documented standard resources include important domains such as:
- accounts;
- customers;
- vendors;
- general ledger entries;
- items;
- purchase invoices;
- sales invoices;
- sales orders;
- dimensions;
- journals;
- employees; and
- units of measure.
ACF must not assume that every standard or custom resource supports webhooks.
29. Webhook change types
Business Central can emit:
created
updated
deleted
collection
notifications.
A collection event means many records changed and ZAYAZ should perform a filtered authoritative reread.
30. Notification delay
Webhooks are intentionally not instantaneous.
Business Central normally waits approximately 30 seconds after the first source change before issuing the notification.
Multiple changes during that interval may therefore be coalesced.
This is useful because it avoids excessive event noise.
31. Collection events
If more than roughly 1,000 records change during the notification delay window, Business Central can issue a single:
collection
notification.
ZAYAZ must therefore understand that:
one event
can mean:
many changed records
and trigger a source query accordingly.
32. Webhook retries
If Business Central cannot reach the subscriber, eligible failures are retried over a period of approximately 36 hours.
ZAYAZ should expect retries following conditions such as:
- timeout;
- throttling; and
- server-side failure.
Webhook consumers must therefore be idempotent.
33. Webhook deletion risk
Not every HTTP failure response triggers retry.
Some unsupported failure responses can cause the subscription to be deleted.
DaVE should therefore treat:
subscription disappeared
as a material source-integrity condition.
34. Subscription monitoring
API Hub should continuously track:
subscription ID
resource
company
expiration
notification URL
client state
last successful notification
last renewal
and alert before expiration.
35. Delegated-admin caveat
Business Central webhook behavior has edge cases around changes made through delegated administration.
This reinforces an important ACF principle:
Webhooks improve freshness; reconciliation proves completeness.
36. Reconciliation
Every production connector should periodically compare its local source state with Business Central.
The pattern is:
Initial sync
↓
Webhooks
↓
Incremental API reads
↓
Periodic reconciliation
No single event stream should be treated as the complete accounting ledger.
37. lastModifiedDateTime
Many Business Central API resources expose:
lastModifiedDateTime
This is extremely useful for incremental retrieval.
A typical fallback strategy is:
last successful timestamp
↓
overlap window
↓
$filter lastModifiedDateTime gt X
↓
pagination
↓
deduplication
↓
new watermark
38. Pagination
Large resource collections are paginated.
ZAYAZ must follow continuation links/tokens rather than assuming the first page contains the complete source population.
Pagination state belongs to ingestion telemetry.
39. Source filtering
Business Central supports OData filtering.
ACF should use filtering aggressively to minimize:
- network traffic;
- API consumption;
- memory;
- data exposure; and
- reconciliation cost.
For example:
all general ledger entries
should not be retrieved when:
general ledger entries changed since watermark
is sufficient.
40. API limits
Business Central Online applies operational limits to maintain service stability.
The connector must be designed for:
- throttling;
- queued requests;
- transient service unavailability;
- long-request timeout; and
- concurrent request limits.
A 429 is an operational signal, not a fatal data error.
41. Adaptive throttling
API Hub should react to pressure:
normal
↓
parallel requests
↓
429 / 503?
│
┌─┴─┐
no yes
│ │
▼ ▼
continue
reduce concurrency
+
backoff
+
jitter
This behavior should be shared across all ACF SaaS connectors.
42. General ledger
Business Central exposes general ledger entries directly through API v2.0.
Useful source fields include:
- posting date;
- document number;
- document type;
- account;
- description;
- debit amount;
- credit amount;
- dimensions;
- attachments; and
- last-modified timestamp.
This makes Business Central immediately useful for DQ1 screening.
43. General-ledger source identity
A general ledger entry has a GUID source identity plus entry number and contextual information.
ZAYAZ should preserve both machine source identity and human-readable accounting identifiers where available.
44. General-ledger ESG use
The G/L can support:
financial posting
↓
account classification
↓
vendor / dimension enrichment
↓
spend category
↓
factor
↓
tCO2e
This is accounting-based estimation.
It should not be confused with physical activity.
45. Vendors
Business Central vendor records provide supplier identity.
They can support:
- supplier spend;
- country enrichment;
- supplier questionnaires;
- Scope 3;
- due diligence;
- supplier-specific factor lookup; and
- evidence collection.
Vendor identity alone does not constitute supplier ESG data.
46. Purchase invoices
Purchase invoices materially improve ESG context.
Business Central API resources can expose relationships to:
- vendor;
- currency;
- dimensions;
- purchase-invoice lines;
- PDFs; and
- attachments.
This creates a strong DQ2 source layer.
47. Source invoice chain
A typical evidence chain can be:
G/L entry
↓
Purchase invoice
↓
Purchase invoice line
↓
Vendor
↓
Item
↓
Attachment / PDF
Each layer can improve classification or evidence quality.
48. Purchase orders
Business Central exposes purchase orders and purchase-order lines.
Relevant information can include:
- vendor;
- order date;
- currency;
- requested receipt date;
- item or account line;
- quantity;
- price;
- dimensions; and
- attachments.
This can provide ESG information before final invoicing.
49. Purchase receipts
Purchase receipts are especially valuable.
They indicate what was actually received rather than merely what was ordered.
Purchase Order
100 units ordered
↓
Purchase Receipt
92 units received
For some sustainability calculations the received quantity is the stronger activity signal.
50. Purchase receipt lines
Receipt lines can expose:
- line type;
- item/account identity;
- description;
- unit of measure;
- quantity;
- unit cost; and
- dimensional context.
This provides a promising bridge between accounting and physical activity.
51. Line types matter
A purchase receipt line may represent different source concepts.
For example:
Item
G/L Account
Resource
Fixed Asset
Charge Item
A quantity on an Item line has different semantics from a quantity associated with another line type.
ACF must preserve that distinction.
52. Items
Business Central item master data can distinguish source types such as:
Inventory
Service
Non-Inventory
Items also have relationships to:
- item categories;
- posting groups;
- units of measure;
- variants;
- dimensions; and
- attachments.
This provides a strong semantic anchor for ESG classification.
53. Item identity
A Business Central item number can become a canonical bridge between:
procurement
inventory
sales
product footprint
supplier evidence
but the item number itself is not an environmental declaration.
54. Item categories
Item categories can provide reusable classification signals.
For example:
Item
+
Item Category
+
Vendor
+
Receipt Quantity
↓
ZAYAZ material classification
This may be considerably stronger than account classification.
55. Item ledger entries
The standard API now exposes item ledger entries.
This is strategically important for ACF.
An item ledger entry can contain:
- item;
- posting date;
- entry type;
- source;
- document;
- description;
- quantity;
- actual sales amount;
- actual cost amount; and
- last-modified timestamp.
56. Inventory activity
Item ledger entries give ACF a route toward physical inventory activity.
Item Ledger Entry
↓
item
↓
entry type
↓
quantity
↓
unit semantics
↓
activity interpretation
This can support DQ3 in appropriate cases.
57. Physical quantity is not enough
Suppose Business Central records:
quantity = 250
That alone is insufficient.
ZAYAZ must also determine:
250 what?
which item?
which entry type?
which direction?
which unit?
what business activity?
before selecting a factor.
58. Units of measure
Business Central provides a dedicated Unit of Measure API.
Useful fields include:
- code;
- display name;
- symbol; and
- international standard code.
The international standard code can use UNECE Recommendation 20 semantics.
This is unusually useful for ESG interoperability.
59. Standardized unit resolution
A source unit such as:
KG
can potentially resolve through:
Business Central unit
↓
international standard code
↓
ZAYAZ unit registry
↓
canonical kg
which greatly reduces ambiguity.
60. Semantic Activity Resolver
Business Central reinforces the activity-resolution architecture we identified with e-conomic and SAP:
SOURCE RECORD
↓
QUANTITY
↓
UNIT
↓
ITEM / ACTIVITY
↓
TRANSACTION TYPE
↓
DIMENSION / LOCATION
↓
METHOD COMPATIBILITY
↓
FACTOR ELIGIBILITY
Only then should quantity enter MICE as environmental activity.
61. Example — purchased material
Suppose Business Central provides:
Vendor: Steel Supplier A
Item: STEEL-HRC
Receipt quantity: 18,500
Unit: KG
After semantic validation:
18,500 kg steel received
↓
supplier
↓
material classification
↓
appropriate factor
↓
tCO2e
could support a much higher-quality result than monetary spend alone.
62. Example — unsafe interpretation
Suppose instead:
Item: CONSULTING-PACKAGE
Quantity: 1
Unit: EA
ZAYAZ must not convert:
1 EA
into a physical environmental quantity.
The source remains primarily financial/service context unless an approved methodology says otherwise.
63. Dimensions
Business Central dimensions are powerful customer-defined accounting structures.
They may represent:
- department;
- business unit;
- region;
- project;
- customer segment;
- product group;
- facility;
- cost center; or
- another customer-defined concept.
Their meaning must be resolved.
64. Dimension sets
Dimension Set Lines can be attached to multiple source objects, including:
- general-ledger entries;
- purchase invoices;
- purchase-invoice lines;
- sales documents;
- journal lines; and
- time registrations.
This means a single semantic dimension model can enrich many ACF source domains.
65. Dimension mapping
A mapping can look like:
Business Central dimension
SITE = OSLO
↓
ZAYAZ dimension map
↓
Facility: Oslo
↓
Norway
↓
location-sensitive ESG context
The mapping must be versioned.
66. Fixed assets
Business Central exposes fixed assets through the standard API.
The resource can contain information such as:
- asset number;
- display name;
- location;
- class;
- subclass;
- serial number;
- employee;
- acquisition date;
- acquisition cost;
- depreciation; and
- book value.
This is valuable for capital-goods and physical-asset analysis.
67. Asset ESG opportunities
Fixed assets can help identify:
vehicles
machinery
equipment
facilities
IT assets
other capital goods
Environmental characteristics may still require enrichment.
For example:
Company Vehicle
does not establish:
fuel type
annual distance
vehicle efficiency
without additional source data.
68. Projects
Business Central exposes project identities through the standard API.
This supports:
- project emissions;
- construction;
- customer engagements;
- project procurement;
- project travel;
- project financial allocation; and
- project sustainability reporting.
69. Project evidence
Projects can also link to:
- documents;
- PDFs; and
- custom API data.
This allows the project object to become a strong evidence aggregation key.
70. Time registration
Business Central time registration entries can contain:
- employee;
- project;
- project task;
- date;
- quantity;
- unit of measure; and
- status.
This is useful for service businesses.
71. Time allocation
For professional-services emissions:
project time
↓
project allocation
↓
office / travel / service overhead
↓
approved allocation method
may be useful.
Hours should not automatically be converted directly to emissions.
72. Attachments
Business Central supports source attachments.
An attachment is linked to a parent source object.
Potential parents include:
- general ledger entry;
- journal;
- purchase invoice;
- purchase order;
- sales invoice; and
- other supported documents.
This is highly valuable for TrustGate.
73. PDF documents
Business Central can also expose generated PDF documents associated with transactional objects.
Potential examples include:
- sales invoice;
- purchase invoice;
- purchase order;
- project; and
- credit memo.
These can form part of the auditor-readable evidence package.
74. Document evidence chain
A sustainability result can therefore resolve:
ESRS / VSME datapoint
↓
ZAYAZ ESG result
↓
MICE execution
↓
validated activity
↓
Business Central receipt / invoice
↓
source line
↓
attachment / PDF
↓
vendor / item
That is a strong evidence architecture.
75. Documents as enrichment
An accounting API may contain:
Amount: EUR 12,000
Vendor: Energy Company
while the attachment may contain:
Consumption: 42,600 kWh
Meter: ABC123
Period: January
The accounting object can therefore function as a locator for better ESG evidence.
76. Data-quality hierarchy
ACF applies the common quality ladder.
ACF-DQ1 — Accounting-only estimate
Typical Business Central input:
- G/L account;
- G/L entry;
- vendor;
- financial amount.
ACF-DQ2 — Invoice/procurement-level data
Typical input:
- purchase invoice;
- invoice line;
- purchase order;
- purchase receipt;
- item;
- source document.
ACF-DQ3 — Activity data
Typical input:
- validated purchase receipt quantity;
- validated item-ledger quantity;
- other physical source quantity with canonical unit.
ACF-DQ4 — Supplier/item-specific data
Primary information attributable to the actual:
- supplier;
- item;
- product;
- service; or
- activity.
ACF-DQ5 — Verified primary data
The primary information has passed the applicable verification process.
77. Quality progression
Business Central can therefore support:
G/L spend
DQ1
↓
Purchase invoice
DQ2
↓
Purchase receipt + item
DQ2/DQ3
↓
Physical quantity
DQ3
↓
Supplier-specific data
DQ4
↓
Verified primary
DQ5
The full history remains in TrustGate.
78. Spend-based emissions
A spend-based calculation may use:
G/L account
+
vendor
+
purchase invoice
+
item
+
dimension
+
project
↓
classification
↓
spend normalization
↓
factor
↓
tCO2e
This should be substantially stronger than account-only screening.
79. Activity-based emissions
Where appropriate physical quantities exist:
Purchase Receipt
↓
Receipt Line
↓
Item
↓
Quantity
↓
Unit of Measure
↓
validated semantic
↓
factor
↓
tCO2e
can replace or supersede a spend-based estimate.
80. Circularity
The combination of:
- items;
- item categories;
- item ledger entries;
- purchase receipts;
- quantities; and
- custom material classification
creates future circularity opportunities.
Potential flows include:
purchased item
received quantity
inventory movement
sold quantity
returned quantity
waste/reuse classification
where the source configuration provides sufficient semantics.
81. PEF/LCA opportunity
Business Central can also provide useful source inputs for product environmental modeling:
- item;
- item category;
- vendor;
- physical quantity;
- unit;
- receipt;
- inventory flow;
- project; and
- dimensions.
This is not as manufacturing-rich as SAP, but for many SMEs it may be enough to anchor product-level activity.
82. Custom sustainability fields
Some customers may already maintain information such as:
- material type;
- product weight;
- facility;
- supplier category;
- fuel type;
- vehicle type;
- environmental product declaration reference; or
- sustainability classification
inside extensions.
Rather than scraping those extensions, ZAYAZ should expose them through a governed custom AL API.
83. Custom ESG API example
A customer extension could expose:
itemId
materialType
weightKg
supplierCountry
epdReference
facilityCode
through:
api/zayaz/esg/v1.0
This becomes a versioned source contract.
84. Custom API lineage
TrustGate must then preserve:
extension ID
extension version
API publisher
API group
API version
source entity
source ID
so that the custom data remains fully auditable.
85. Custom API versus direct table access
This is a very important ACF rule.
If a Business Central extension stores an ESG-relevant value:
custom table field
ZAYAZ should not create a hidden dependency on that table.
Instead:
custom table
↓
custom API contract
↓
ZAYAZ
This protects both applications from schema coupling.
86. Multi-company operations
One Business Central environment may contain many companies.
API Hub should therefore be able to synchronize:
Environment A
│
├── Company 1 → E-C-O 1
├─ ─ Company 2 → E-C-O 2
└── Company 3 → E-C-O 3
without creating separate connector code for each company.
87. Group reporting
Group ESG calculations can then aggregate:
Company A
Company B
Company C
according to the applicable ZAYAZ reporting boundary.
Business Central company structure does not itself determine the final sustainability consolidation perimeter.
88. Accounting-partner model
Business Central also maps well to accounting-partner use cases.
A partner may administer several customer tenants/environments.
ACF identity must nevertheless remain:
customer Entra tenant
+
environment
+
company
+
E-C-O Number
rather than:
accounting firm
as the data boundary.
89. Environment isolation
Sandbox and production must never share source identity accidentally.
For example:
Production / Company A
and:
Sandbox / Company A
are different source contexts even if the displayed company name is identical.
90. Data minimization
Business Central may contain far more information than ZAYAZ needs.
A Scope 3 screening workflow requiring:
vendor
G/L account
amount
currency
item
dimension
does not justify automatically retrieving:
all employee data
all customer addresses
all project documents
all fixed assets
ACF retrieves by purpose.
91. Source-side efficiency
API Hub should prefer:
$filter
pagination
$expand where useful
batching where appropriate
lastModifiedDateTime
webhooks
over repeated full scans.
This is both a performance and governance requirement.
92. Webhook renewal architecture
Subscription renewal is operationally important enough to deserve its own service behavior:
Subscription registry
↓
expiration monitor
↓
renewal window
↓
handshake
↓
renewed subscription
If renewal fails:
DaVE alert
+
API reconciliation
should occur.
93. Collection notification recovery
When Business Central emits:
changeType = collection
ZAYAZ should not attempt to infer which records changed from the event itself.
Instead:
collection event
↓
resource
↓
filtered authoritative query
↓
changed records
This is another reusable ACF event pattern.
94. Historical mutation
A posted accounting source may later be affected by:
- correction;
- credit memo;
- reversal;
- updated dimension;
- updated attachment;
- changed master data; or
- another accounting adjustment.
A material historical change produces:
source mutation
↓
DaVE
↓
TrustGate lineage event
↓
affected ESG result
↓
revalidation
95. ZARA behavior
ZARA can use the Business Central profile to explain:
- which environment supplied a value;
- which company owns the record;
- whether the source was standard or custom API;
- which vendor and item were involved;
- what dimensions applied;
- whether a quantity qualifies as activity data;
- which attachment supports the value;
- why a calculation changed;
- what quality level applies; and
- what evidence remains missing.
96. ZARA source distinction
ZARA must distinguish:
Microsoft standard API source
Customer custom API source
Business Central accounting value
ZAYAZ-normalized value
ZAYAZ classification
ZAYAZ ESG calculation
External enrichment
These are different provenance classes.
97. FOGE behavior
FOGE uses ACF to determine:
- source availability;
- company scope;
- field authority;
- evidence quality;
- source preference;
- dimension mapping;
- calculation state; and
- missing evidence.
A Business Central field does not automatically equal a reporting datapoint.
98. MICE behavior
MICE receives governed inputs such as:
- Business Central tenant;
- environment;
- company;
- source record;
- item;
- vendor;
- quantity;
- unit;
- amount;
- currency;
- dimensions;
- classification;
- method;
- emission factor;
- factor vintage;
- reporting period; and
- quality tier.
This supports deterministic reproduction.
99. COSE behavior
COSE can evaluate:
Requirement:
physical energy quantity
against:
Business Central:
utility invoice amount only
and return:
activity evidence gap
rather than silently constructing a physical value.
100. DaVE behavior
DaVE monitors:
- authentication;
- permissions;
- environments;
- companies;
- API throttling;
- webhook expiration;
- subscription deletion;
- custom API drift;
- extension drift;
- source reconciliation;
- dimension mapping;
- unit mapping;
- supplier resolution; and
- unexpected historical change.
101. TrustGate behavior
TrustGate preserves:
Business Central
↓
tenant / environment / company
↓
standard or custom API
↓
source record
↓
attachment / PDF
↓
canonical mapping
↓
classification
↓
activity resolution
↓
MICE
↓
reporting output
↓
verification
102. Recommended production architecture
MICROSOFT ENTRA ID
│
OAuth 2.0 S2S
│
▼
BUSINESS CENTRAL ONLINE
│
┌─────────┴─────────┐
│ │
Standard API v2 Webhooks
│ │
Custom APIs │
if required │
└─────────┬─────────┘
▼
ZAYAZ API HUB
│
tenant/environment/company
│
▼
TRUSTGATE
│
▼
ACF
┌──────────┼──────────┐
│ │ │
normalize validate classify
│ │ │
└──────────┼──────────┘
▼
CANONICAL DATA MODEL
│
┌──────────┼──────────┐
▼ ▼ ▼
MICE FOGE ZARA
│ │ │
└──────────┼──────────┘
▼
GOVERNED ESG DATA
Periodic authoritative reconciliation runs alongside the event path.
103. Quick-start implementation
A controlled pilot should:
- register a Microsoft Entra application;
- grant Business Central API application permission;
- register the application in Business Central;
- assign minimum permission sets;
- obtain an S2S access token;
- discover environments;
- select the test/sandbox environment;
- retrieve companies;
- map the test company to ZAYAZ;
- generate the customer connector profile;
- ingest G/L entries;
- ingest vendors and purchase invoices;
- ingest items and purchase receipts;
- validate units of measure;
- inspect dimensions;
- test attachments and PDFs;
- perform initial ESG screening;
- configure webhooks;
- test webhook renewal;
- test
collectionevent recovery; - test API throttling behavior;
- run source reconciliation; and
- verify TrustGate lineage.
104. Production implementation
Production should add:
- production Entra consent;
- least-privilege Business Central permission sets;
- production environment mapping;
- complete company mapping;
- E-C-O Number mapping;
- durable webhook subscriptions;
- subscription renewal;
- periodic reconciliation;
- adaptive rate control;
- custom API governance;
- extension drift monitoring;
- attachment evidence;
- dimension mappings;
- item/unit semantic mappings;
- activity-data validation;
- TrustGate registration;
- DaVE monitoring; and
- governed recalculation.
105. Inventory-enriched implementation
For customers with meaningful item/inventory use, ZAYAZ should additionally ingest:
Items
+
Units of Measure
+
Purchase Receipts
+
Item Ledger Entries
This enables:
financial activity
↓
item activity
↓
physical quantity
↓
material flow
which may provide a major data-quality improvement.
106. Custom-extension implementation
Where customer extensions contain important ESG-relevant information:
- identify the source extension;
- identify the relevant data;
- create or validate a custom API;
- version the API;
- assign least-privilege permissions;
- register its schema;
- map its fields;
- register it with TrustGate; and
- monitor extension/API version changes.
The custom interface becomes an explicit governed source.
107. On-premises implementation
For Business Central on-premises, ACF should first determine:
- application version;
- server instance;
- API enablement;
- authentication model;
- network topology;
- custom extensions;
- existing OData services; and
- legacy SOAP dependencies.
The target architecture remains:
API / custom API / OData v4
rather than new SOAP or direct-database integration.
108. Hybrid ESG implementation
The strongest sustainability result may combine:
Business Central
│
├── vendor
├── invoice
├── item
├── receipt
├── quantity
└── project
+
attachment
+
supplier portal
+
meter data
+
logistics data
+
LCA data
↓
governed ESG result
Business Central becomes the financial and operational backbone while ZAYAZ orchestrates the evidence hierarchy.
109. Limitations
109.1 Standard API coverage is not complete
Customer-specific fields may require a custom AL API.
109.2 Standard APIs cannot simply be extended
A separate custom API contract is required.
109.3 Permission sets affect data visibility
Unavailable data may reflect authorization rather than true source absence.
109.4 Environments and companies are separate identities
Names alone cannot define source identity.
109.5 Webhooks expire
Subscriptions require continuous renewal.
109.6 Webhooks can be lost or deleted
Reconciliation remains mandatory.
109.7 Not every resource supports webhook subscriptions
Coverage must be discovered.
109.8 API limits require adaptive client behavior
Throttling and transient errors are normal operational conditions.
109.9 Quantity does not automatically equal ESG activity
Source semantics must be validated.
109.10 Items are not environmental declarations
Additional product or supplier evidence may be required.
109.11 Accounting data cannot satisfy every sustainability disclosure
Policies, governance, workforce and narrative requirements require other evidence.
110. Connector activation gate
A production Business Central connector should not activate until:
Microsoft Entra application PASS
S2S authentication PASS
Business Central application record PASS
Permission sets PASS
Environment identity PASS
Company identity PASS
ZAYAZ organization mapping PASS
E-C-O Number mapping PASS
Standard API profile PASS
Custom API profile PASS / N/A
Canonical mapping PASS
TrustGate registration PASS
Initial reconciliation PASS
API throttling controls PASS
Monitoring PASS
For webhook-enabled production:
Supported-resource discovery PASS
Subscription creation PASS
Handshake PASS
Client-state validation PASS
Renewal scheduler PASS
Collection-event handling PASS
Recovery / reconciliation PASS
must also pass.
111. Definition of done
The Business Central connector is production-ready when ZAYAZ can demonstrate that it can:
- authenticate through Microsoft Entra ID;
- operate unattended through S2S authentication;
- register the application in Business Central;
- enforce least-privilege permission sets;
- prevent unapproved write operations;
- discover Business Central environments;
- distinguish production and sandbox;
- discover companies;
- map companies to ZAYAZ organizations and E-C-O Numbers;
- use Standard API v2.0 as the default interface;
- identify standard-API gaps;
- govern custom AL APIs;
- record custom API publisher, group and version;
- retrieve general-ledger entries;
- retrieve vendors;
- retrieve purchase invoices;
- retrieve purchase orders;
- retrieve purchase receipts;
- retrieve items and item categories;
- retrieve item ledger entries;
- retrieve units of measure;
- resolve international unit codes where available;
- retrieve dimensions and dimension-set lines;
- retrieve fixed assets;
- retrieve projects;
- retrieve time-registration entries;
- retrieve attachments and PDF evidence;
- preserve source object relationships;
- use
lastModifiedDateTimewhere appropriate; - paginate source collections correctly;
- operate within Business Central operational limits;
- handle 429, 503 and 504 responses safely;
- create webhook subscriptions;
- perform subscription handshakes;
- renew subscriptions before expiration;
- detect lost or deleted subscriptions;
- process collection notifications;
- reread authoritative source state;
- reconcile webhook state against the API;
- map source records into the ZAYAZ canonical model;
- normalize and validate them deterministically;
- distinguish financial amounts from physical activity;
- promote validated receipt/item-ledger quantities to activity data;
- reject unresolved quantity semantics;
- perform ESG screening without inventing activity;
- upgrade calculations when higher-quality evidence becomes available;
- preserve prior calculations and provenance;
- support PEF/LCA and circularity where data quality permits;
- support ZARA, FOGE, MICE, COSE, DaVE and TrustGate;
- prevent cross-tenant, cross-environment and cross-company data leakage; and
- reproduce any material ESG result from Business Central source to final output.
112. Source references
This connector specification is based primarily on current official Microsoft documentation covering:
- Business Central integration architecture;
- Business Central Standard API v2.0;
- API endpoint structure;
- Microsoft Entra ID authentication;
- service-to-service authentication;
- Business Central permission sets;
- Business Central environments;
- custom AL APIs;
- API pages;
- API queries;
- OData web services;
- SOAP deprecation;
- webhook subscriptions;
- API limits;
- operational limits;
- general ledger entries;
- purchase invoices;
- purchase orders;
- purchase receipts;
- items;
- item ledger entries;
- units of measure;
- dimensions;
- fixed assets;
- projects;
- time registration;
- attachments; and
- PDF documents.
The customer's actual Business Central environment, company configuration, installed extensions, permissions and API contracts remain authoritative for implementation.
The ACF customer connector profile must be reviewed or regenerated when material changes affect:
- Microsoft Entra application identity;
- Business Central environment;
- Business Central company;
- permissions;
- Standard API behavior;
- custom API versions;
- installed extensions;
- webhook support;
- dimension configuration;
- item configuration;
- unit configuration;
- custom source fields; or
- canonical mappings.
Runtime Provider Extension
The provider-specific runtime contract for this connector is maintained separately from the common ACF connector frontmatter.
It contains machine-actionable provider semantics that are intentionally not part of the common ACF schema, including authentication lifecycle, provider object revision semantics, change-capture constraints and provider-specific capability rules.
schema_id: zayaz.acf.provider-extension.v1
extension_version: 1.0.0
connector_id: ACF-BUSINESS-CENTRAL
provider:
namespace: microsoft.business_central
name: Microsoft
product: Dynamics 365 Business Central
runtime:
source_contract:
primary_api: standard_api_v2
standard_api_version: v2.0
protocol: rest_odata_v4
custom_al_api_supported: true
odata_v4_secondary_supported: true
soap_new_integrations_preferred: false
source_identity:
tenant_field: microsoft_entra_tenant_id
environment_field: environment_name
organization_field: company_guid
object_revision:
modified_at_field: lastModifiedDateTime
change_capture:
webhook:
supported: true
handshake_required: true
client_state_supported: true
subscription_renewal_required: true
default_subscription_lifetime_days: 3
maximum_online_subscriptions: 200
default_notification_delay_seconds: 30
collection_notification_threshold: 1000
retry_window_hours: 36
authoritative_payload: false
reconciliation:
required: true
capability_rules:
standard_api_preferred: true
customer_extension_preferred_when_standard_api_lacks_required_fields: true
effective_authorization_requires_business_central_permission_sets: true
source_semantics:
unit_standard_field: internationalStandardCode
item_ledger_quantity:
activity_status: candidate
requires_business_semantic_resolution: true
dimensions:
candidate_id_class: EBU
automatic_resolution_allowed: false
projects:
candidate_id_class: EBP
automatic_resolution_allowed: false
evidence:
attachments_supported: true
pdf_documents_supported: true
extensions:
deployment:
online_primary: true
on_premises_supported: true
authorization:
broad_application_permission_is_not_effective_object_authorization: true
governance:
status: active
last_verified: 2026-08-30
review_interval_days: 90
change_control_required: true
source_basis: connector_specification