Integrations / ERP / Microsoft Dynamics 365 Business Central
Business Central Integration Guide for Production Scheduling with SkyPlanner APS
This guide shows Business Central partners and IT teams how to connect Microsoft Dynamics 365 Business Central to SkyPlanner APS. SkyPlanner integrates with Business Central in both directions, using Business Central’s own web services:
- Production orders, routings, work centers, items and purchase orders flow in.
- Planned start and end times are written to the Prod. Order Routing Lines.
- Operator timelogs come back for output reporting.
- SkyPlanner webhooks push schedule changes as they happen.
The SkyPlanner team configures the integration to your Business Central setup during onboarding and supports it after go-live. This guide is for partners and developers who want to take part, or to build on SkyPlanner’s documented REST API (API reference) themselves.
Two standard Business Central interfaces, no code on the Business Central side
The integration runs on two interfaces Business Central already ships:
- API v2.0 for commercial and inventory data. It exposes
items,itemVariants,itemLedgerEntries,locations,unitsOfMeasure,salesOrders,salesOrderLines,purchaseOrders,purchaseOrderLines,vendors,customersandemployees. It has no manufacturing entities, so production data comes through the second interface. - OData v4 web services for manufacturing. Any Business Central page can be published as an OData v4 web service on the Web Services page. Choose object type Page, the page ID and a service name, then select Published. The endpoint is live, with no AL code and no extension to deploy. The integration publishes the standard pages for released production orders, Prod. Order Routing Lines, work centers, machine centers and routings, served under
/ODataV4/Company('{name}')/{ServiceName}.
Published pages are read and write. Microsoft: “If an editable page is exposed as a web service, the data in the underlying table can be accessed and modified by an OData call,” with PATCH for updates. That is how planned dates go back into Business Central, through the same page and the same validation a planner uses.
Skip SOAP. Microsoft has deprecated SOAP web services, and publishing Microsoft UI pages as SOAP is removed in 2026 release wave 2 (v29).
Authentication
Use OAuth 2.0 through Microsoft Entra ID with service-to-service (client credentials) flow:
- Register an app in Entra ID and grant the Dynamics 365 Business Central application permission
API.ReadWrite.All. - Request tokens with scope
https://api.businesscentral.dynamics.com/.default. - In Business Central, open the Microsoft Entra Applications page, add the client ID, assign least-privilege permission sets and grant consent. SUPER cannot be assigned to an S2S app.
Base URLs: https://api.businesscentral.dynamics.com/v2.0/{environment}/api/v2.0/companies({id})/{entity} for API v2.0 and https://api.businesscentral.dynamics.com/v2.0/{environment}/ODataV4/Company('{name}')/{ServiceName} for the published pages. The same token works for both.
Web service access keys (basic auth) are deprecated and not supported in Business Central online since October 2022, and they always need a licensed user. OAuth needs no license for service-to-service integrations. On-premises supports S2S from versions 18.11 and 19.5, once the server is configured for Microsoft Entra authentication.
On the SkyPlanner side, the REST API uses JWT authentication and is documented in Swagger/OpenAPI. The integration tutorial walks through the first calls.
Events, webhooks and polling
Business Central supports webhook subscriptions through POST /api/v2.0/subscriptions on API v2.0 entities such as items and salesOrders. The rules:
- Creating a subscription requires a handshake: your endpoint must return the
validationTokenwith 200 OK. - Subscriptions expire after three days. Renew with PATCH, and the handshake runs again.
- Notifications carry the resource path,
changeTypeand yourclientState, not the full record. You read the record afterwards. - Notifications are delayed: Business Central online waits 30 seconds after the first change, and more than 1,000 changed records in that window arrive as one
collectionnotification. - Maximum 200 webhook subscriptions per environment online.
Production orders, routing lines and purchase orders are polled every few minutes on the published pages and on purchaseOrders. Filtering to open orders and paging keeps the request count well inside Business Central’s limits.
SkyPlanner sends webhooks when state or the schedule changes, so the write-back side is event-driven.
Data mapping
| Business Central object (interface) | SkyPlanner object | Direction | Frequency |
|---|---|---|---|
Item, Item Variant, Unit of Measure (items, itemVariants, unitsOfMeasure, API v2.0) | Products and materials | BC → SkyPlanner | Initial load, then webhook or delta polling |
| Production BOM Header/Line, Certified versions (published page) | Product structure, subproducts, materials per product | BC → SkyPlanner | Initial load, then on change |
| Routing Header/Line, Certified versions (published Routing page): Operation No., Setup, Run, Wait and Move Time, Concurrent Capacities, Send-Ahead Quantity | Process steps with durations, setup and teardown times | BC → SkyPlanner | Initial load, then on change |
| Work Center, Machine Center: Capacity, Efficiency, Shop Calendar Code (published Work Center and Machine Center pages) | Workstations, workstation groups, efficiencies | BC → SkyPlanner | Initial load, rarely after |
| Shop Calendar, Work Shift, Calendar Entry, Absence (published pages) | Shifts, absences | BC → SkyPlanner | Daily, or own shifts in SkyPlanner |
| Released Production Order, Prod. Order Line, Prod. Order Routing Line, Prod. Order Component (published pages; Firm Planned optional) | Orders and jobs with due dates and material needs | BC → SkyPlanner | Polling every few minutes |
salesOrders, salesOrderLines (API v2.0) | Customer due dates and priority context | BC → SkyPlanner | Webhook or polling |
itemLedgerEntries (API v2.0) | Stock balances | BC → SkyPlanner | Polling, hourly or on schedule run |
purchaseOrders, purchaseOrderLines (API v2.0), Expected Receipt Date on the line | Purchase orders / incoming material, with expected delivery date; stock updates when the PO is marked Delivered | BC → SkyPlanner | Polling, hourly or on schedule run |
| Prod. Order Routing Line: Starting Date-Time, Ending Date-Time, Type, No. (PATCH on the published Prod. Order Routing page) | Planned start, end and workstation per operation | SkyPlanner → BC | On schedule change, via SkyPlanner webhook |
| Output Journal (Item Journal Line, Entry Type Output) | Timelogs, quantities and operator confirmations | SkyPlanner → BC | Per confirmation or per shift, if automatic posting is on |
| Routing Tool, Routing Personnel (published pages, optional seed) | Tool requirements, operator count per job | BC → SkyPlanner | Initial load; then maintained in SkyPlanner |
| Not in Business Central | Setting time matrix, tools as finite resources, alternative machines and personnel | Maintained in SkyPlanner | Set up during onboarding |
| Consumption Journal (if not flushed) | Material usage | SkyPlanner → BC | Per confirmation or per shift, if automatic posting is on |
Integration patterns
1. Initial master data load. Pull Certified routings and production BOMs, work and machine centers from the published pages, and items and units of measure from API v2.0. Map each work or machine center to a SkyPlanner workstation deliberately: decide whether a work center with three machine centers becomes one workstation group or three workstations.
2. Order sync. Read Released production orders (and Firm Planned, if you schedule them) with their routing lines and components from the published pages, plus open purchase order lines from API v2.0. SkyPlanner treats ordered material as available on the PO delivery date and updates stock when the PO is marked Delivered, so the schedule checks both stock and incoming purchases.
Never schedule Planned production orders: Microsoft says Business Central “deletes them the next time you run planning.” The Planning Worksheet keeps proposing supply, and SkyPlanner schedules the firm orders against real capacity.
3. Schedule write-back. The standard Prod. Order Routing page is published as an OData v4 web service. For every operation the engine placed or moved, SkyPlanner sends a PATCH to that routing line with the If-Match ETag. It sets Starting Date-Time and Ending Date-Time, plus Type and No. when the operation moved to an alternative machine.
The PATCH runs the page and table triggers, so Business Central validates the fields with its own logic, exactly as when a planner edits the Prod. Order Routing page. The production order line’s Starting and Ending Date-Time follow. Business Central keeps quantities, status and costs.
4. Shop-floor confirmations. Operators log work with SkyPlanner Mobile Confirmations or the Production Timer, and the timelogs keep the schedule current. Output can be reported in Business Central as before, from the Production Journal or Output Journal.
If you want output and consumption posted fully automatically, a standard Business Central API page is added for output journal posting. SkyPlanner then posts setup time, run time and output quantity per operation. Posting updates Capacity Ledger Entries, and output on the last routing operation adds the item to inventory.
Pick one channel for output posting. Posting from both SkyPlanner and the Business Central Production Journal duplicates entries.
5. Ownership and conflict rules. Write them down before go-live:
| Data | Owner |
|---|---|
| Items, BOMs, routings, quantities, order status | Business Central |
| Operation sequence, start and end times, workstation assignment | SkyPlanner |
| Setting time matrix, tool and operator requirements, alternative resources | SkyPlanner |
| Shifts and absences | One system, chosen in scoping |
| Output and consumption | Business Central, posted manually or automatically from SkyPlanner timelogs |
The main conflict source is Refresh and Replan on production orders. Microsoft: “If you use the Refresh action to recalculate production order lines, Business Central deletes the existing production order lines and calculates new lines.” Replan can change capacity need as well, and recalculating components “deletes previous changes in the components.”
Treat a refreshed order as a new version, re-sync it, and let SkyPlanner reschedule. With Autopilot, SkyPlanner reschedules automatically when production changes.
Typical project steps
Implementation is normally completed within weeks after onboarding starts. Before that, the 30-day free trial runs on your own data. Export work centers, routings and open production orders from Business Central with Open in Excel or Edit in Excel on the list pages. Import them as CSV or Excel and validate the schedule before any integration work.
The project itself contains:
- Master data mapping. Fix the mapping table, ownership rules, sync frequencies and the output posting channel.
- Web services setup. Publish the production order, routing line, component, work center, machine center, routing, BOM and calendar pages on the Web Services page, and register the Entra app. Configuration only, done in sandbox first, then production.
- Initial load. Items, units of measure, Certified BOMs and routings, work and machine centers, calendars.
- Order and purchase order sync. Released production orders and open purchase orders by polling, sales orders by webhook. Token handling, subscription renewal and retries on 429 live here.
- Constraint setup in SkyPlanner. Setting time matrix, tools, operator counts per job and alternative machines or personnel, none of which Business Central holds as schedulable data.
- Schedule write-back. PATCH on the published Prod. Order Routing page; automatic output posting added here if chosen.
- Parallel testing. Run SkyPlanner beside the current plan, compare dates, fix master data.
- Go-live. Switch on write-back once the data matches.
Business Central pitfalls
- Units in routings. Setup Time is per production order, Run Time is per produced item, and each has its own Unit of Measure Code. Wait Time and Move Time do not consume work center capacity. If the work center unit is Days, one day is 24 hours, not an eight-hour shift. Convert on import or every duration is wrong.
- Stale calendars. Capacity exists only after Calculate Work Center Calendar has run for the horizon. Check the Calendar Entries Available Until field before the initial load.
- Machine center capacity hidden. With Consolidated Calendar off, only the work center’s own capacity is planned: “The machine center capacity is excluded.” Read machine center capacity directly rather than trusting work center totals.
- Capacity and Efficiency. Business Central calculates duration as Run Time / Efficiency / Capacity, and calculated calendar entries already include both. Map Efficiency to SkyPlanner workstation efficiency once, not twice.
- Alternate Work Center is informational. Microsoft: it “isn’t automatically included in planning processes.” Model alternatives explicitly as SkyPlanner alternative workstations.
- Throttling. Online limits apply per user, and a service principal counts as one user: 6,000 OData requests in a 5-minute sliding window and 5 concurrent requests. Page size is capped at 20,000, a
$batchat 100 operations, and an operation times out after 8 minutes. Exceeding the rate returns 429. Batch, page and poll deltas instead of running full reloads. - Licensing. Manufacturing exists only in the Premium experience. Users on Essentials cannot sign in to a company set to Premium.
The Business Central integration: who configures and supports it
The work covers mapping to your routings, work centers and Business Central setup, plus the constraints Business Central does not hold: setting time matrix, tools, operator counts and alternative resources.
- The SkyPlanner team configures it during onboarding and supports it after go-live, covering the SkyPlanner side and the agreed Business Central web services. Every plant runs Business Central differently, and this is where that know-how goes. The integration runs on Business Central’s standard API v2.0 and published web services, which move with Business Central updates.
- Your Business Central partner can take part. The partner knows your setup and extensions and can review the published pages, permission sets and Entra app alongside them. SkyPlanner provides the REST API, Swagger/OpenAPI documentation and webhooks.
- Your own developers can build on it against the same documented REST API with JWT authentication. An API key is enough to start, and the SkyPlanner team assists when needed. Public product documentation, including purchase orders and the products and materials API, is at SkyPlanner docs. Laboratory & Allied took this route on SAP Business One: its in-house IT team built the integration largely on its own, with SkyPlanner’s help. On NetSuite, UTU runs SkyPlanner beside its ERP.
Validate the schedule in the 30-day free trial first, so integration starts from a schedule that already fits the plant.
Once connected, the Arcturus engine schedules from live Business Central orders and planned dates land on the production order routing. SkyPlanner starts from 199 € per month with 5 workstations included, billed monthly. The integration is quoted up front for your process and needs, together with your plan, so you see the full cost before you start. See pricing, features and how Business Central’s own planning compares in Business Central finite capacity scheduling. The overview is on the Business Central page, and other ERPs are in the ERP integrations hub.
SkyPlanner reviews from manufacturers
2 hsaved every week
“SkyPlanner has taken our production planning from Excel spreadsheets to real-time production optimization.”
Kalle Kalliomäki, Supply Chain Specialist
UTU · Electrical switchboards and switchgear
Production planning saves 2 hours of working time every week, and a new work queue reaches the line in seconds.
+90%production efficiency
“Efficiency has gone up 90% in production.”
Abdul Rucyinga, Head of IT
Laboratory & Allied · Pharmaceutical manufacturing
Production efficiency is up 90%, and a three-month optimized plan across all workstations takes under 30 minutes.
98%delivery reliability, up from about 50%
“SkyPlanner plays a decisive role in maintaining our delivery reliability.”
Hannu Lahtinen, Managing Director
KJH-Comp · Sheet-metal mechanics and contract manufacturing
Delivery reliability rose from around 50% to as high as 98%, and scheduling now needs one supervisor instead of two.
1,000swork orders scheduled automatically
“Production is under control in a different way, and our understanding of capacity is on a completely different level.”
Hannu Ryynänen, CEO
Mamec · Industrial mixers, pumps and high-tech contract manufacturing
Thousands of work orders are scheduled automatically, with a real-time view of production for the whole organization.
FAQ
Does the Business Central API include production orders?
The standard API v2.0 has no production order, routing, BOM or work center entities. Business Central serves them through its OData v4 web services instead. The standard production pages are published on the Web Services page, with no code, and read and written over OData.
Who builds the Business Central integration?
The SkyPlanner team configures the two-way integration to your Business Central setup during onboarding and supports it after go-live. On the Business Central side it uses API v2.0 and published OData v4 web services. Your Business Central partner or your own developers can also build on SkyPlanner’s documented REST API, and an API key is enough to start.
Do we need to install an extension in Business Central?
No. API v2.0 is standard, and the manufacturing pages are published as web services through configuration on the Web Services page. A standard API page is added only if you want output and consumption posted fully automatically.
Which authentication should the integration use?
OAuth 2.0 client credentials through Microsoft Entra ID, registered on the Microsoft Entra Applications page in Business Central. Web service access keys are deprecated. On-premises supports the same service-to-service access from versions 18.11 and 19.5 once the server is configured for Microsoft Entra authentication. We confirm the route for your version during scoping.
Can Business Central push changes in real time?
Near real time. Webhook subscriptions on API v2.0 entities such as items and sales orders arrive about 30 seconds after the first change, batched by Business Central online. Production orders are picked up by polling every few minutes. In the other direction, SkyPlanner’s own webhooks push schedule changes as they happen.
How are operation dates written back to Business Central?
With a PATCH on the standard Prod. Order Routing page published as an OData v4 web service. It sets Starting Date-Time, Ending Date-Time and the work or machine center. Business Central validates them with its own logic, exactly as when a planner edits the page.
Can we test SkyPlanner before building the integration?
Yes. The 30-day free trial supports up to 20 workstations with CSV or Excel imports from Business Central, no credit card needed. Start the trial, or talk to sales to scope the integration.