Integrations / ERP / Microsoft Dynamics 365 Supply Chain Management
Dynamics 365 Supply Chain Management Integration Guide for Production Scheduling with SkyPlanner APS
This Dynamics 365 Supply Chain Management integration guide shows partners and IT teams how to connect Microsoft Dynamics 365 Supply Chain Management to SkyPlanner APS. SkyPlanner integrates with Dynamics 365 Supply Chain Management in both directions, using its standard data entities:
- Production orders, route operations, route jobs, BOM lines, resources, calendars, released products, on-hand inventory and purchase order lines flow in.
- Scheduled start and end times and the chosen resource are written back to the production order and its route operations.
- Operator hours and quantities come back through the route card journal.
- SkyPlanner webhooks push schedule changes as they happen.
The SkyPlanner team configures the integration to your Supply Chain Management 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.
Dynamics 365 SCM integration options
Supply Chain Management exposes its data through data entities. Four options matter for scheduling:
- OData v4 REST endpoint.
[Your organization's root URL]/dataexposes every data entity marked IsPublic with full create, read, update and delete. It supports$filter,$count,$orderby,$skip,$top,$selectand first-level$expand. Paging is server-driven with a maximum of 10,000 records, and batch requests can group writes in changesets. OData is synchronous. (source) - Batch data API. The Data management package REST API and recurring integrations move large volumes asynchronously. Microsoft: “If the volume is more than a few hundred thousand records, use the batch data API.” It is also the API supported on-premises. (source)
- Business events. Finance and operations apps publish business events to Azure Service Bus, Event Grid, HTTPS endpoints or Power Automate. (source)
- Custom services and OData actions. X++ custom services and bound OData actions run business logic on demand.
The SkyPlanner integration runs on the OData endpoint for daily traffic and uses the batch data API for a large initial load. Nothing is installed in Supply Chain Management.
Authentication
Register an application in Microsoft Entra ID (service principal). In Supply Chain Management, map that application to a user with the security roles the integration needs. It reads production, resources and inventory, and it writes production order scheduling and journals. Tokens are requested from Entra ID with client credentials.
Two rules decide what the integration sees:
- Legal entities. OData returns the default company unless the request adds
?cross-company=true. Multi-site plants filter ondataAreaId. - Public names. The entity names below are data management names. The public OData collection names can differ, so read them from your environment’s
/data/$metadata.
On the SkyPlanner side, the REST API authenticates with an API token (SkyPlanner Settings > API) and is documented in Swagger/OpenAPI. The integration tutorial walks through the first calls.
Data mapping
| D365 SCM entity | SkyPlanner object | Direction | Frequency |
|---|---|---|---|
| Released products (ItemNumber) | Products and materials | SCM → SkyPlanner | Initial load, then delta |
| Production BOM lines (ProdProductionOrderBillOfMaterialsLineEntity), BOM lines | Product structure, materials per order | SCM → SkyPlanner | With each order sync |
| Route, route versions, route operations, operation properties (RouteOperationPropertiesV2Entity) | Process steps with setup and run times | SCM → SkyPlanner | Initial load, then on change |
| Resources (OpResOperationsResourceEntity), resource groups, capabilities | Workstations, workstation groups, efficiencies | SCM → SkyPlanner | Initial load, rarely after |
| Working time calendars, calendar days and time intervals, calendar assignments | Shifts | SCM → SkyPlanner | Daily, or shifts kept in SkyPlanner |
| Production order headers (ProdProductionOrderHeaderEntity) | Orders with due dates and status | SCM → SkyPlanner | Every few minutes or on business event |
| Route operations (ProdProductionOrderRouteOperationEntity), route jobs (ProdProductionOrderRouteJobEntity) | Jobs with durations and resource requirements | SCM → SkyPlanner | With each order sync |
| On-hand inventory | Stock balances | SCM → SkyPlanner | Hourly or on schedule run |
| Purchase order lines with delivery date | Incoming material; stock updates when the PO is marked Delivered | SCM → SkyPlanner | Hourly or on schedule run |
| Scheduled start and end date/time and the operations resource of each route operation | Planned start, end and workstation per operation | SkyPlanner → SCM | On schedule change, via SkyPlanner webhook |
| Route card journal (ProdRouteCardProductionJournalEntryEntity: RegisteredHours, ReportedGoodInventoryQuantity) | Timelogs and quantities | SkyPlanner → SCM | Per confirmation or per shift, if chosen |
| SkyPlanner constraint setup | Setting time matrix, tools as finite resources, operator counts, alternative resources | Maintained in SkyPlanner | Set up during onboarding |
Integration patterns
1. Initial master data load. Load resources, resource groups, calendars, released products, routes and BOMs. Use the batch data API when volumes run into hundreds of thousands of records, and OData paging otherwise. Map each SCM resource to a SkyPlanner workstation. Do not map resource groups alone: operations scheduling books groups, but the floor runs on resources.
2. Order sync. Read firmed production orders in the statuses SkyPlanner owns, typically Scheduled and Released, with their route operations, route jobs and BOM lines. Read open purchase order lines as well. SkyPlanner treats ordered material as available on the PO delivery date and updates stock when the PO is marked Delivered.
Leave planned production orders out unless they are explicitly in scope. Planning Optimization regenerates them on every run.
3. Schedule write-back. For every operation the engine placed or moved, SkyPlanner writes the scheduled start and end date/time and the operations resource to the route operation, using the field names in your environment’s /data/$metadata. Changes go in OData batch changesets, so one schedule run lands as one consistent update.
4. Shop-floor confirmations. Operators log work with SkyPlanner Mobile Confirmations or the Production Timer, and the timelogs keep the schedule current. Hours and good quantities can flow back as route card journal lines. Report as finished stays where you run it today, in SCM or Production floor execution.
Pick one channel for each posting. Registering the same hours from SkyPlanner and Production floor execution duplicates them.
5. Ownership and conflict rules. Write them down before go-live:
| Data | Owner |
|---|---|
| Products, BOMs, routes, quantities, order status, costing | Supply Chain Management |
| Planned production orders | Planning Optimization |
| Operation sequence, scheduled start and end, resource assignment | SkyPlanner |
| Setting time matrix, tools, operator counts, alternative resources | SkyPlanner |
| Shifts and absences | One system, chosen in scoping |
| Hours and output posting | Supply Chain Management, from SkyPlanner timelogs if chosen |
The main conflict source is SCM’s own job scheduling. If a planner reschedules an order in SCM, it overwrites SkyPlanner’s dates. Use IsProductionOrderSchedulingLocked on the production order header for orders SkyPlanner owns. Treat any order changed in SCM as a new version, re-sync it, and Autopilot reschedules automatically when production changes.
What the project contains
Implementation is normally completed within weeks after onboarding starts. Before that, the 30-day free trial runs on your own data. Export resources, routes and open production orders with a data management export project or the Excel add-in, import them as CSV or Excel and validate the schedule.
- Scoping. Fix the mapping table, the statuses SkyPlanner owns, sync frequencies and the posting channel.
- Access. Register the Entra ID application, map it to an SCM user with least-privilege roles, and confirm public entity names in
/data/$metadata. Sandbox first, then production. - Initial load. Resources, calendars, released products, routes, BOMs.
- Order and purchase order sync. Polling with
$filteron changed records, plus business events where your catalog has them. - Constraint setup in SkyPlanner. Setting time matrix, tools, operator counts and alternative machines or personnel.
- Schedule write-back. Batch updates on route operations, scheduling lock on owned orders.
- Parallel testing. Run SkyPlanner beside the current plan, compare dates, fix master data.
- Go-live. Switch on write-back once the data matches.
What to plan for in a Dynamics 365 SCM integration
- Efficiency doubles up. SCM books “Scheduling time = Time x 100 / Efficiency percentage.” Map efficiency to SkyPlanner workstation efficiency once, not on top of already adjusted times.
- Calendars sit on resource groups. Read the calendar assignment per resource group and resource, or capacity drifts.
- Operations vs job scheduling. Orders scheduled with operations scheduling have no start and end times and no specific resource. Sync route operations and resource requirements, not only the dates.
- Finite capacity flags. Resources with Finite capacity set to No may be overbooked in SCM. Model every real constraint as finite in SkyPlanner.
- 32 resources per operation. SCM caps job scheduling at 32 resources per operation. In SkyPlanner, alternatives live in workstation groups and alternative workstations.
- Paging and volume. OData pages at 10,000 records and expands one level deep. Large initial loads belong in the batch data API.
- Legal entities. Without
cross-company=trueanddataAreaIdfilters, a multi-company plant syncs only the default company.
Who configures the integration
The work covers mapping to your routes, resources and SCM setup, plus the constraint setup in SkyPlanner: 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 SCM data entities. Every plant runs D365 SCM differently, and this is where that know-how goes.
- Your Dynamics partner can take part. The partner knows your configuration, extensions and security roles, and can set up the Entra ID application and entity access. SkyPlanner provides the REST API, Swagger/OpenAPI documentation and webhooks.
- Your own developers can build on it against the same documented REST API with an API token. An API token is enough to start, and the SkyPlanner team assists when needed.
Once connected, the Arcturus engine schedules from live SCM production orders and scheduled dates land on the route operations. 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 how SCM’s own planning compares in Dynamics 365 SCM finite capacity scheduling. The overview is on the Dynamics 365 SCM 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.
100%delivery reliability since 2021
“SkyPlanner gives us visibility into capacity and makes planning predictable.”
Dan Berglund, COO/CFO
Opes Corporation · Chemical and food manufacturing
Delivery reliability has been 100% for the entire time SkyPlanner has been in use, since 2021.
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
Which D365 SCM API does the integration use?
The OData v4 REST endpoint at /data, which exposes all public data entities with full create, read, update and delete. Large initial loads use the batch data API. Business events add near real-time triggers where your catalog has them.
Do we need to install anything in Supply Chain Management?
No. The integration uses standard data entities over OData. Your administrator registers a Microsoft Entra ID application and maps it to an SCM user with the needed roles.
How are scheduled dates written back to Supply Chain Management?
SkyPlanner writes the scheduled start and end date/time and the operations resource to the production order route operations in OData batch changesets. Orders SkyPlanner owns are protected with IsProductionOrderSchedulingLocked.
Why connect SkyPlanner instead of tuning SCM job scheduling?
Planning Optimization is finite only inside the finite capacity time fence and plans at infinite capacity beyond it (source). SCM job scheduling places one production order at a time around capacity already reserved, with setup as time on the operation (source), and Microsoft advises against finite master planning when shifts change capacity (source). SkyPlanner schedules all firmed orders together with a setting time matrix, and Autopilot replans automatically on every meaningful change. The SkyPlanner team configures and supports the two-way integration, and your Dynamics partner can own the SCM side.
Should SkyPlanner schedule planned production orders?
Normally not. Planning Optimization regenerates planned production orders on every run. SkyPlanner schedules firmed production orders in the statuses agreed during scoping.
Does the integration work with on-premises Supply Chain Management?
On-premises deployments run the integration on the batch data API, which Microsoft supports there. SkyPlanner’s side is the same REST API either way, and the route is confirmed during scoping.
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 Supply Chain Management, no credit card needed. Start the trial, or talk to sales to scope the integration.