Ellipse Gradient for Header
Dynamics 365 Business Central logo

Dynamics 365 Business Central Integration Guide

Connect Business Central with enterprise applications through OData 4 REST APIs, supported webhook notifications, legacy SOAP services, and Martini workflows.

Dynamics 365 Business Central integration options at a glance

Dynamics 365 Business Central provides versioned REST APIs based on OData 4, including standard API v2.0 resources for Companies, Customers, Vendors, Items, orders, invoices, and other business objects. Supported API entities can publish webhook notifications, while SOAP web services remain available for legacy pages and codeunits. OAuth 2.0 through Microsoft Entra ID secures online API access, with Business Central permission sets applied separately. Martini can consume these APIs, receive supported webhook notifications, orchestrate scheduled and event-driven workflows, transform JSON payloads, and expose controlled APIs for downstream applications. Batch requests, pagination, checkpoints, and bounded retries support larger synchronizations.

Integration pointSupported by Dynamics 365 Business Central?Common use casesHow Martini supports it
REST APIsYesBusiness Central API v2.0 exposes Companies, Customers, Vendors, Items, Sales Orders, Purchase Orders, invoices, and other resources through versioned OData 4 REST endpoints. Custom API pages and queries can expose extension-specific fields and entities.Martini can authenticate, query, filter, create, update, and delete supported resources, then map responses into downstream systems or expose a controlled API façade.
AuthenticationYesBusiness Central online uses Microsoft Entra ID OAuth 2.0 with delegated or client-credentials flows. Business Central permission sets and tenant or environment context still govern access.Martini can use protected environment configuration for client credentials, secrets, scopes, tenant values, and environment-specific API settings.
Webhooks / outbound callbacksLimitedWebhook subscriptions provide change notifications for selected API entities, such as supported customer, vendor, item, or document resources. Coverage is not universal across tables or internal processes.Martini can expose an API endpoint or workflow trigger, validate notifications, retrieve the current resource, and apply idempotency and subscription-renewal handling.
SOAP APIsLegacyPublished Business Central pages and codeunits can support existing SOAP contracts or operations not available through a suitable REST API.Martini can consume a Business Central SOAP endpoint from its WSDL, while keeping REST as the preferred approach for new integrations.
Bulk / async / batch APIsLimitedOData batch requests can group compatible HTTP operations. Business Central background posting and job queues are internal processing mechanisms rather than a universal external asynchronous API.Martini can page through results, limit concurrency, use compatible batches, record checkpoints, and retry transient failures with backoff.
File / attachment APIsLimitedAttachments, media, and document files are available only for selected entities and scenarios, with behavior dependent on the API, extension, or external document-management design.Martini can orchestrate separate file or media requests when the required endpoint is confirmed and can route binary content without assuming universal attachment coverage.
Database / analytics accessNoBusiness Central online does not provide direct application-database access as a supported integration pattern. APIs, OData, Power BI, and approved export mechanisms should be used instead.Martini can consume supported APIs and load a reporting database or analytics service, but it should not rely on direct Business Central SaaS database access.
SDKsLimitedMicrosoft provides client libraries and SDK options, but direct REST calls are sufficient for many Business Central integrations.Martini can consume the REST contract directly and use custom logic only where API behavior or transformation requirements justify it.

How Dynamics 365 Business Central exposes data and business events

Business Central REST APIs

Business Central’s versioned API v2.0 provides OData 4 REST resources for standard entities, while extensions can publish custom API pages and queries for organization-specific data.

Martini implementation pattern

Martini implementation pattern: Martini authenticates with Microsoft Entra ID, calls the appropriate tenant, environment, API version, and company context, follows pagination, maps JSON responses, and exposes reusable APIs or workflows for downstream consumers.

Implementation sequence

Authenticate with Microsoft Entra ID OAuth 2.0
Resolve the tenant, environment, and company context
Call the Business Central REST resource
Follow continuation links or paging controls
Map and validate the response
Write the result to the target system and store a checkpoint

Business Central Webhooks

Business Central supports webhook subscriptions for selected API entities. A notification indicates that a resource changed and is not a universal event stream or complete changed-record image.

Martini implementation pattern

Martini implementation pattern: Martini exposes a publicly reachable API endpoint, handles subscription validation and notifications, retrieves the current resource from Business Central, and uses an idempotent workflow to synchronize downstream state.

Implementation sequence

Receive and validate the webhook notification
Identify the changed resource and company context
Retrieve the current resource through the REST API
Apply deduplication and business rules
Map the current state to the target model
Write the result and record notification processing

Business Central SOAP Services

SOAP web services remain relevant for legacy published pages and codeunits or operations that have no suitable REST equivalent. REST APIs are preferred for new development.

Martini implementation pattern

Martini implementation pattern: Martini consumes the available WSDL and SOAP endpoint, maps XML requests and responses, applies the legacy contract’s error rules, and isolates SOAP-specific logic behind reusable workflows or APIs.

Implementation sequence

Load and verify the Business Central WSDL and endpoint
Authenticate using the configured SOAP security model
Invoke the required page or codeunit operation
Parse the XML response and fault details
Map the result into the canonical model
Retry transient failures and route permanent faults for correction

OData Batch Processing

Business Central supports OData batch requests for grouping compatible HTTP operations, subject to operation, payload, and transaction constraints. This is distinct from an external general-purpose asynchronous event API.

Martini implementation pattern

Martini implementation pattern: Martini uses batching only where the operation is compatible, combines it with bounded concurrency and paging, records request-level outcomes, and retries failed transient operations without duplicating successful writes.

Implementation sequence

Partition work by company and compatible operation
Build a bounded batch or page of requests
Submit the batch through the Business Central API
Inspect each operation result
Retry eligible transient failures with backoff
Persist successful identifiers and failed work items

Common Dynamics 365 Business Central integration patterns

Pattern 1: Synchronize customers and items

When to use this pattern

Use a scheduled workflow when Business Central is the source of customer, vendor, or item master data and downstream systems need reliable incremental or periodic updates.

Integration direction
Dynamics 365 Business Central
Martini
Salesforce
Example Mapping
Dynamics 365 Business Central FieldCanonical FieldTarget Field
idexternalIdExternal ID
displayNamenameAccount or product name
numberbusinessNumberCustomer or SKU number
blockedstatusActive status
Martini implementation pattern

A scheduler starts a company-aware workflow that authenticates, pages through filtered Business Central resources, maps and validates the canonical model, and upserts target records. Deterministic identifiers, checkpoints, bounded retries, and reconciliation protect against duplicates and missed pages.

Martini capabilities used
  • workflows
  • API consumption
  • scheduling
  • data mapping
  • business rules
  • error handling

Pattern 2: Create sales orders from commerce

When to use this pattern

Use an API-led workflow when an external commerce application submits orders that must become validated Business Central Sales Orders and Sales Order Lines.

Integration direction
Shopify
Martini
Dynamics 365 Business Central
Example Mapping
Dynamics 365 Business Central FieldCanonical FieldTarget Field
order.idsourceOrderIdCorrelation reference
customer.emailcustomerLookupKeyCustomer lookup
line_items[].skuitemNumberItem number
line_items[].quantityorderedQuantitySales Order Line quantity
Martini implementation pattern

Martini exposes an order intake API, validates the payload, resolves or creates the Business Central Customer where permitted, verifies Items and units, checks for an existing source order, creates the Sales Order and lines, and returns the document ID. Validation failures are separated from throttling and transient retry cases.

Martini capabilities used
  • APIs
  • workflows
  • data mapping
  • validation
  • business rules
  • idempotency
  • error handling

Pattern 3: Process Business Central change notifications

When to use this pattern

Use supported webhook subscriptions when downstream systems need near-real-time awareness of changes to Customers, Vendors, Items, or selected documents.

Integration direction
Dynamics 365 Business Central
Martini
Microsoft Dataverse
Example Mapping
Dynamics 365 Business Central FieldCanonical FieldTarget Field
subscription.resourceresourceUrlSource resource
resourceData.idresourceIdExternal ID
resourceData.lastModifiedDateTimechangedAtModified timestamp
companyIdcompanyContextBusiness unit
Martini implementation pattern

A Martini API receives the notification, validates its source and subscription context, uses the resource identifier to retrieve current state, maps the object, and publishes or writes it downstream. Idempotency keys and a periodic reconciliation workflow handle duplicate or missed notifications.

Martini capabilities used
  • API exposure
  • webhook consumption
  • workflows
  • data mapping
  • business rules
  • error handling

Pattern 4: Feed financial reporting data

When to use this pattern

Use a scheduled extraction and loading workflow when reporting or reconciliation requires General Ledger Entries, posted invoices, dimensions, and related master data outside Business Central.

Integration direction
Dynamics 365 Business Central
Martini
Power BI
Example Mapping
Dynamics 365 Business Central FieldCanonical FieldTarget Field
documentNumbersourceDocumentNumberDocument number
postingDateaccountingDatePosting date
amountsignedAmountAmount
dimensionSetreportingDimensionsDimensions
Martini implementation pattern

Martini extracts company-scoped financial resources page by page, transforms dimensions and accounting attributes, writes to a reporting store or analytics feed, and maintains checkpoints. Count and total reconciliation, transient retries, and exception queues make the feed restartable and auditable.

Martini capabilities used
  • workflows
  • scheduling
  • API consumption
  • data mapping
  • database integration
  • error handling
  • monitoring

Applications commonly integrated with Dynamics 365 Business Central

Business Central can exchange operational, financial, customer, and reporting data with Microsoft products and other enterprise applications. Martini can coordinate these flows through REST APIs, supported webhook notifications, scheduled workflows, mappings, validation, and reusable API layers; the exact direction and object coverage depend on the deployed application APIs and Business Central configuration.

Application Scenario Direction Martini Pattern
Dynamics 365 Sales Synchronize customer, product, quote, and order information between sales operations and Business Central. Dynamics 365 Sales → Martini → Dynamics 365 Business Central Use API-led workflows to read sales data, resolve Business Central Companies, Customers, and Items, apply field and currency mappings, and upsert or reconcile Sales Orders with retry and duplicate controls.
Microsoft Dataverse Provide a shared data layer for Dynamics 365 applications and Power Platform processes. Dynamics 365 Business Central → Martini → Microsoft Dataverse Use scheduled or event-driven workflows to retrieve Business Central resources, normalize identifiers and company context, and write mapped objects to Dataverse while recording checkpoints and validation failures.
Shopify Send online customers and orders to Business Central and exchange inventory, pricing, fulfillment, or status information. Shopify → Martini → Dynamics 365 Business Central Expose a Martini API for order intake, validate Customers and Items, detect duplicate orders, create Sales Orders and lines, and return the Business Central document identifier; scheduled workflows can synchronize status and inventory.
Salesforce Coordinate customers, products, opportunities, and orders between CRM processes and finance or operations. Salesforce → Martini → Dynamics 365 Business Central Consume Salesforce and Business Central APIs through workflows, map customer and product identifiers into a canonical model, apply ownership and company rules, and use deterministic upserts with reconciliation.
ServiceNow Transfer approved procurement, vendor, asset, or financial status information between service-management processes and Business Central. ServiceNow → Martini → Dynamics 365 Business Central Route approved ServiceNow requests through a Martini API, validate Vendors and Items, create or update Business Central documents, and return processing status while isolating business validation errors from transient failures.
Power BI Provide financial, sales, inventory, and operational reporting from Business Central data. Dynamics 365 Business Central → Martini → Power BI Run scheduled extraction workflows for General Ledger Entries, posted invoices, dimensions, and master data, transform company-specific attributes, and load a reporting layer for controlled analytics access.
NetSuite Exchange customers, vendors, items, orders, invoices, and accounting data where multiple ERP platforms operate together. Dynamics 365 Business Central → Martini → NetSuite Use separate company and system checkpoints, map ERP identifiers through a canonical model, route records by object and company, and reconcile totals and failed writes across both platforms.
Jira Create and track implementation, fulfillment, or exception-management tasks associated with Business Central documents. Dynamics 365 Business Central → Martini → Jira Detect selected Business Central changes or reconciliation exceptions, create Jira issues with document context, and process status updates through an API workflow without embedding Jira-specific logic in Business Central.

How to build a Dynamics 365 Business Central integration in Martini

Objective

Establish secure, environment-specific access to Business Central and identify the tenant, environment, API version, and company context.

Instructions in Martini

  • Configure the Business Central API base and company context as environment values
  • Use Microsoft Entra OAuth 2.0 client credentials for unattended workflows where appropriate
  • Store client secrets, certificates, and scopes in protected Martini configuration
  • Confirm Business Central application permissions and permission sets

Objective

Select an event-driven, scheduled, or API-led entry point based on the resource coverage and latency requirements.

Instructions in Martini

  • Use a Martini API or workflow trigger for supported Business Central webhook notifications
  • Use a scheduler for polling, reconciliation, and reporting feeds
  • Use a Martini API when another application submits orders or requests Business Central data
  • Treat webhooks as limited change notifications rather than a complete event stream

Objective

Read the required Business Central resource while respecting company scope, pagination, filters, and API versioning.

Instructions in Martini

  • Call the standard or custom Business Central REST API resource
  • Follow continuation links or documented paging behavior
  • Use efficient filters and projections where supported
  • Retrieve the current resource after a webhook notification

Objective

Coordinate lookups, dependent writes, routing, and reusable integration logic in a Martini workflow.

Instructions in Martini

  • Resolve Customers, Vendors, Items, and Companies before dependent document writes
  • Separate company-specific processing and checkpoints
  • Use bounded concurrency and compatible batch requests where useful
  • Route validation, conflict, authorization, and transient failures differently

Objective

Transform Business Central JSON, XML, or file-oriented content into a canonical or target-specific model.

Instructions in Martini

  • Map Business Central identifiers and company context explicitly
  • Transform dates, currencies, dimensions, units, and document lines
  • Validate required fields and target constraints
  • Keep custom API and extension fields configurable

Objective

Enforce business decisions that should occur before creating or updating Business Central resources.

Instructions in Martini

  • Check for duplicate source orders or documents
  • Validate customer, vendor, item, currency, payment-term, and dimension references
  • Distinguish creating an order from posting an invoice
  • Handle ETag conflicts by rereading and applying a defined conflict policy

Common Dynamics 365 Business Central data objects used in integrations

ObjectTypical UseCommon target systemsMartini handling
CompaniesIdentify the Business Central company context for tenant-scoped operations and synchronization.Dataverse, Dynamics 365 Sales, Salesforce, reporting databasesMartini resolves and stores the company identifier as explicit configuration or workflow context and maintains company-specific checkpoints.
CustomersSynchronize customer master data for sales, receivables, order creation, and downstream customer services.Dynamics 365 Sales, Salesforce, Shopify, DataverseMartini retrieves Customers through REST APIs or supported notifications, maps identifiers and addresses, validates required fields, and performs deterministic upserts.
VendorsSupport purchasing, payables, supplier master synchronization, and procurement workflows.ServiceNow, NetSuite, Dataverse, reporting databasesMartini maps vendor identifiers, payment and company context, applies validation rules, and separates authorization or business errors from retryable failures.
ItemsRepresent products or inventory items used in orders, purchasing, pricing, and fulfillment.Shopify, Salesforce, Dynamics 365 Sales, reporting platformsMartini synchronizes item identifiers, units, prices, and availability where exposed, with lookup validation before order writes.
Sales OrdersCapture customer orders and associated Sales Order Lines for fulfillment and posting processes.Shopify, Salesforce, Dynamics 365 Sales, logistics applicationsMartini validates Customers and Items, maps headers and lines, detects duplicates, creates or updates supported resources, and records Business Central IDs.
Purchase OrdersRepresent purchasing requests and supplier commitments.ServiceNow, NetSuite, procurement applications, reporting databasesMartini applies supplier, item, company, currency, and dimension mappings, then orchestrates writes with approval and retry rules.

Authentication and security considerations

Microsoft Entra ID and OAuth 2.0

Business Central Online uses Microsoft Entra ID for API authentication. OAuth 2.0 client credentials are generally suitable for unattended Martini workflows, while delegated authorization is appropriate when an integration must act on behalf of a signed-in user.

Layered authorization

Microsoft Entra application permissions do not replace Business Central authorization. The associated application or service identity also requires suitable Business Central permission sets for the companies and operations it accesses.

Protected configuration

  • Store client secrets, certificates, scopes, tenant values, and environment URLs in protected Martini environment configuration.
  • Use least-privilege permissions and separate sandbox and production credentials.
  • Do not place access tokens or secrets in workflow logs or mapped payloads.

Operational considerations for Dynamics 365 Business Central integrations

Pagination and throttling

Business Central REST results are paged. Follow continuation links, use efficient filters, limit concurrency, and apply bounded backoff for HTTP 429 and transient server errors.

Company scope and idempotency

Most resources are company-scoped. Preserve company context in keys and checkpoints, search for existing documents before creating them, and use deterministic source identifiers to prevent duplicate writes.

Concurrency and schema changes

Use ETags or a fresh read when concurrent edits are possible, and handle 412 conflicts with an explicit policy. Validate API metadata when extensions change standard entities or publish custom APIs.

Files and event coverage

Attachments and media require entity-specific confirmation. Webhooks cover selected API entities rather than every table or process, so scheduled reconciliation may be required.

Testing and monitoring

Test sandbox and production environment settings separately. Monitor pagination, totals, failed writes, retries, permissions, validation errors, and reconciliation results without exposing credentials.

Why use Martini instead of scripts or point-to-point integrations?

Orchestration beyond a script

Martini coordinates Business Central API calls, webhook intake, dependent lookups, target writes, validation, retries, and routing in maintainable workflows instead of scattering logic across scripts.

Reusable API and mapping assets

Martini can expose a controlled API façade that shields downstream applications from Business Central details. Reusable mappings and services can normalize Customers, Items, orders, and financial data across multiple consumers.

Operational control

  • Use schedules, triggers, checkpoints, and bounded concurrency for reliable synchronization.
  • Separate transient, authorization, conflict, and business validation failures.
  • Keep environment configuration and secrets outside workflow logic.
  • Support REST-first implementations while retaining SOAP workflows for legacy contracts.

Frequently asked questions

How can Dynamics 365 Business Central be integrated with enterprise systems?

Business Central can be integrated through its versioned OData 4 REST APIs, supported webhook subscriptions, and SOAP web services for legacy pages or codeunits. Scheduled polling, API-led requests, OData batch operations, custom APIs, and approved export or analytics mechanisms can support synchronization and reporting.

Can Martini integrate with Dynamics 365 Business Central?

Yes. Martini can consume Business Central REST APIs, receive supported webhook notifications, consume legacy SOAP services when required, transform Business Central data, orchestrate workflows, and expose APIs for downstream applications.

Do I need a connector to integrate Dynamics 365 Business Central with Martini?

No. A dedicated Business Central connector is not required. Martini can use Business Central’s native REST APIs, supported webhook subscriptions, Microsoft Entra authentication, and SOAP services where applicable.

Is there any extra Lonti cost to integrate Dynamics 365 Business Central with Martini?

Lonti does not charge an additional per-connector or per-vendor fee to integrate Business Central. The integration is subject to the provisioned capacity of the Martini environment. Separate costs may apply from Microsoft, Business Central licensing, infrastructure, or other third-party services.

Which Business Central API should a new integration use?

The REST API v2.0 or a suitable Business Central custom API is generally preferred for new work. SOAP is mainly appropriate for existing legacy contracts or operations not exposed through an adequate REST API. Business Central does not provide a confirmed GraphQL API in the supplied research.

Can Martini receive Business Central webhook events?

Yes, for supported API entities. Martini can expose an endpoint or workflow entry point, process subscription validation and notifications, then retrieve the current resource. Coverage is limited and does not represent every table, posting event, or internal process.

How should synchronization handle multiple companies and duplicate changes?

The company identifier should be explicit in configuration or workflow context, with separate checkpoints and permissions where needed. Webhook and scheduled workflows should use deterministic identifiers, source correlations, idempotency controls, and reconciliation jobs to handle duplicate or missed changes.

How does Martini handle Business Central errors, mapping, and retries?

Martini can map and transform Business Central JSON or XML, validate business rules, and route failures by type. Authentication and permission failures, validation errors, ETag conflicts, throttling, and transient server errors can receive different handling, including bounded retries, rereads, error queues, and operational monitoring.