集成 / ERP / Microsoft Dynamics 365 Business Central
Business Central 集成指南:使用 SkyPlanner APS 进行生产排程
本指南面向 Business Central 合作伙伴和 IT 团队,介绍如何将 Microsoft Dynamics 365 Business Central 与 SkyPlanner APS 连接。SkyPlanner 通过 Business Central 自带的 Web 服务实现双向集成:
- 将生产订单、工艺路线、工作中心、物料和采购订单导入 SkyPlanner。
- 将计划开始和结束时间写入 Prod. Order Routing Lines。
- 将操作人员的工时记录回传,用于产出申报。
- 排程发生变化时,SkyPlanner 通过 webhook 实时推送。
SkyPlanner 团队会在实施准备阶段根据您的 Business Central 配置完成集成配置,并在上线后提供支持。本指南适用于希望参与集成的合作伙伴和开发人员,也适用于希望参照 SkyPlanner 的 REST API 文档(API 参考文档)自行开发的人员。
使用 Business Central 的两个标准接口,无需在 Business Central 端编写代码
集成使用 Business Central 自带的两个接口:
- API v2.0 用于业务和库存数据,提供
items、itemVariants、itemLedgerEntries、locations、unitsOfMeasure、salesOrders、salesOrderLines、purchaseOrders、purchaseOrderLines、vendors、customers和employees。该接口不包含制造实体,因此生产数据通过第二个接口获取。 - OData v4 Web 服务用于制造数据。在 Web Services 页面上,可以将任何 Business Central 页面发布为 OData v4 Web 服务。选择对象类型 Page、页面 ID 和服务名称,然后勾选 Published。端点随即生效,无需编写 AL 代码,也无需部署扩展。集成会发布已下达生产订单、Prod. Order Routing Lines、工作中心、机器中心和工艺路线的标准页面,通过
/ODataV4/Company('{name}')/{ServiceName}提供访问。
发布的页面支持读写。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,”(如果将可编辑页面作为 Web 服务公开,就可以通过 OData 调用访问和修改底层表中的数据),更新则使用 PATCH。计划日期正是通过这种方式写回 Business Central,使用的页面和校验逻辑与计划员手动操作时相同。
不要使用 SOAP。Microsoft 已弃用 SOAP Web 服务,并在 2026 年第 2 波发布(v29)中移除了将 Microsoft UI 页面发布为 SOAP 服务的功能。
身份验证
通过 Microsoft Entra ID 使用 OAuth 2.0,采用服务到服务(客户端凭据)流程:
- 在 Entra ID 中注册应用,并授予 Dynamics 365 Business Central 的应用程序权限
API.ReadWrite.All。 - 使用作用域
https://api.businesscentral.dynamics.com/.default请求令牌。 - 在 Business Central 中打开 Microsoft Entra Applications 页面,添加客户端 ID,按最小权限原则分配权限集并确认授权。不能将 SUPER 分配给 S2S 应用。
基础 URL:API v2.0 使用 https://api.businesscentral.dynamics.com/v2.0/{environment}/api/v2.0/companies({id})/{entity},已发布的页面使用 https://api.businesscentral.dynamics.com/v2.0/{environment}/ODataV4/Company('{name}')/{ServiceName}。同一个令牌可用于这两个接口。
Web 服务访问密钥(基本身份验证)已被弃用,Business Central 在线版自 2022 年 10 月起不再支持,且这种方式始终需要有许可证的用户。使用 OAuth 进行服务到服务集成不需要许可证。本地部署版从 18.11 和 19.5 版本起支持 S2S,前提是服务器已配置为使用 Microsoft Entra 身份验证。
SkyPlanner 端的 REST API 使用 JWT 身份验证,并提供 Swagger/OpenAPI 文档。集成教程会逐步指导您完成最初的调用。
事件、webhook 和轮询
Business Central 支持通过 POST /api/v2.0/subscriptions 为 items 和 salesOrders 等 API v2.0 实体创建 Webhook 订阅。规则如下:
- 创建订阅需要完成握手:您的端点必须返回
validationToken,并使用 200 OK 状态码。 - 订阅在三天后到期。使用 PATCH 续订时,会再次执行握手。
- 通知包含资源路径、
changeType和您设置的clientState,不包含完整记录。收到通知后,需再读取记录。 - 通知存在延迟:Business Central 在线版会在首次变更后等待 30 秒;如果这段时间内发生变更的记录超过 1,000 条,则会合并为一条
collection通知。 - 在线版每个环境最多支持 200 个 webhook 订阅。
每隔几分钟,通过已发布的页面和 purchaseOrders 轮询生产订单、工艺路线行和采购订单。仅筛选未结订单并使用分页,可使请求数量远低于 Business Central 的限制。
状态或排程发生变化时,SkyPlanner 会发送 webhook,因此回写采用事件驱动方式。
数据映射
| Business Central 对象(接口) | SkyPlanner 对象 | 方向 | 频率 |
|---|---|---|---|
Item、Item Variant、Unit of Measure(items、itemVariants、unitsOfMeasure,API v2.0) | 产品和物料 | BC → SkyPlanner | 首次加载,之后通过 Webhook 或增量轮询更新 |
| Production BOM Header/Line,Certified 版本(已发布的页面) | 产品结构、子产品、各产品所需物料 | BC → SkyPlanner | 首次加载,之后在变更时更新 |
| Routing Header/Line,Certified 版本(已发布的 Routing 页面):Operation No.、Setup、Run、Wait and Move Time、Concurrent Capacities、Send-Ahead Quantity | 工艺步骤及其持续时间、准备时间和收尾时间 | BC → SkyPlanner | 首次加载,之后在变更时更新 |
| Work Center、Machine Center:Capacity、Efficiency、Shop Calendar Code(已发布的 Work Center 和 Machine Center 页面) | 工作中心、工作中心组、效率 | BC → SkyPlanner | 首次加载,之后很少更新 |
| Shop Calendar、Work Shift、Calendar Entry、Absence(已发布的页面) | 班次、缺勤 | BC → SkyPlanner | 每天更新,或在 SkyPlanner 中单独维护班次 |
| Released Production Order、Prod. Order Line、Prod. Order Routing Line、Prod. Order Component(已发布的页面;可选纳入 Firm Planned) | 订单和生产任务,以及相应的交期和物料需求 | BC → SkyPlanner | 每隔几分钟轮询 |
salesOrders、salesOrderLines(API v2.0) | 客户交期及优先级相关信息 | BC → SkyPlanner | Webhook 或轮询 |
itemLedgerEntries(API v2.0) | 库存结余 | BC → SkyPlanner | 每小时轮询,或在运行排程时轮询 |
purchaseOrders、purchaseOrderLines(API v2.0),订单行上的 Expected Receipt Date | 采购订单/待到货物料及预计交货日期;采购订单标记为 Delivered 时更新库存 | BC → SkyPlanner | 每小时轮询,或在运行排程时轮询 |
| Prod. Order Routing Line:Starting Date-Time、Ending Date-Time、Type、No.(对已发布的 Prod. Order Routing 页面执行 PATCH) | 各工序的计划开始时间、结束时间和工作中心 | SkyPlanner → BC | 排程变更时,通过 SkyPlanner Webhook 更新 |
| Output Journal(Item Journal Line,Entry Type 为 Output) | 工时记录、数量和操作员确认 | SkyPlanner → BC | 启用自动过账时,每次确认后或每个班次更新 |
| Routing Tool、Routing Personnel(已发布的页面,可选用作初始数据) | 工具需求、每项生产任务所需的操作员人数 | BC → SkyPlanner | 首次加载,之后在 SkyPlanner 中维护 |
| Business Central 中不包含 | 换型时间矩阵、作为有限资源的工具、备选机器和人员 | 在 SkyPlanner 中维护 | 在上线实施期间设置 |
| Consumption Journal(未采用自动冲销时) | 物料消耗 | SkyPlanner → BC | 启用自动过账时,每次确认后或每个班次更新 |
集成模式
1. 首次加载主数据。从已发布的页面读取状态为 Certified 的工艺路线和生产 BOM,以及工作中心和机器中心;从 API v2.0 读取物料和计量单位。将各个工作中心或机器中心映射到 SkyPlanner 工作中心时,需要明确建模方式:例如,一个下设三个机器中心的工作中心,是映射为一个工作中心组,还是三个工作中心。
2. 订单同步。从已发布的页面读取状态为 Released 的生产订单及其工艺路线行和组件;如果也对 Firm Planned 订单进行排程,则一并读取。从 API v2.0 读取未结采购订单行。SkyPlanner 将已订购物料视为在采购订单交货日期可用,并在采购订单标记为 Delivered 时更新库存,因此排程时会同时检查现有库存和在途采购。
切勿对状态为 Planned 的生产订单进行排程。Microsoft 指出,Business Central 会 “deletes them the next time you run planning.”(在下次运行计划时将其删除)。Planning Worksheet 继续生成供应建议,SkyPlanner 则根据实际产能对已确定的订单进行排程。
3. 排程回写。将标准 Prod. Order Routing 页面发布为 OData v4 Web 服务。对于引擎安排或调整过的每道工序,SkyPlanner 都会向对应的工艺路线行发送 PATCH 请求,并携带 If-Match ETag。请求会设置 Starting Date-Time 和 Ending Date-Time;如果工序转移到了备选机器,还会设置 Type 和 No.。
PATCH 会执行页面和表的触发器,因此 Business Central 会用自身逻辑校验字段,与计划员编辑 Prod. Order Routing 页面时完全一致。生产订单行的 Starting and Ending Date-Time 随之更新。数量、状态和成本仍由 Business Central 管理。
4. 车间报工。操作人员通过 SkyPlanner Mobile Confirmations 或 Production Timer 记录工作,工时记录使排程保持最新。产出仍可像以往一样,在 Business Central 中通过 Production Journal 或 Output Journal 申报。
如果希望全自动过账产出和消耗,则会添加一个标准 Business Central API 页面,用于产出日记账过账。之后,SkyPlanner 会按工序过账准备时间、运行时间和产出数量。过账会更新 Capacity Ledger Entries,最后一道工序的产出过账后,物料计入库存。
产出过账只能选择一个渠道。同时从 SkyPlanner 和 Business Central 的 Production Journal 过账会造成重复记录。
5. 数据归属与冲突处理规则。上线前应以书面形式明确以下规则:
| 数据 | 负责管理的系统 |
|---|---|
| 物料、BOM、工艺路线、数量、订单状态 | Business Central |
| 工序顺序、开始和结束时间、工作中心分配 | SkyPlanner |
| 换型时间矩阵、工具和操作人员要求、替代资源 | SkyPlanner |
| 班次和缺勤 | 由一个系统管理,在范围评估时确定 |
| 产出和消耗 | Business Central;手动过账,或根据 SkyPlanner 工时记录自动过账 |
冲突主要来自生产订单上的 Refresh 和 Replan 操作。Microsoft 文档指出:”If you use the Refresh action to recalculate production order lines, Business Central deletes the existing production order lines and calculates new lines.”(使用 Refresh 操作重新计算生产订单行时,Business Central 会删除现有行并计算生成新行。)Replan 也可能改变产能需求,而重新计算组件会 “deletes previous changes in the components.”(删除此前对组件所做的更改)。
将刷新后的订单视为新版本,重新同步,再由 SkyPlanner 重新排程。启用 Autopilot 后,SkyPlanner 会在生产发生变化时自动重新排程。
典型项目步骤
实施通常在实施准备工作启动后的数周内完成。在此之前,您可以使用自己的数据进行 30 天免费试用。在 Business Central 列表页面使用 Open in Excel 或 Edit in Excel,导出工作中心、工艺路线和未结生产订单。以 CSV 或 Excel 格式导入这些数据,在开始任何集成工作之前验证排程。
项目本身包括以下步骤:
- 主数据映射。确定映射表、数据归属规则、同步频率和产出过账渠道。
- Web 服务配置。在 Web Services 页面发布生产订单、工艺路线行、组件、工作中心、机器中心、工艺路线、BOM 和日历页面,并注册 Entra 应用。只需配置,先在沙盒环境完成,再部署到生产环境。
- 首次加载。加载物料、计量单位、状态为 Certified 的 BOM 和工艺路线、工作中心和机器中心,以及日历。
- 订单和采购订单同步。通过轮询同步状态为 Released 的生产订单和未结采购订单,通过 webhook 同步销售订单。此步骤还包括令牌处理、订阅续订以及收到 429 响应后的重试。
- 在 SkyPlanner 中设置约束。配置换型时间矩阵、工具、每项生产任务所需的操作人员数量,以及替代机器或人员。Business Central 并未将这些信息作为可用于排程的数据保存。
- 排程回写。对已发布的 Prod. Order Routing 页面执行 PATCH;如果选择自动过账产出,也在此步骤添加。
- 并行测试。让 SkyPlanner 与现有计划并行运行,对比日期并修正主数据。
- 上线。确认数据一致后,启用回写。
Business Central 集成中的常见问题
- 工艺路线中的单位。Setup Time 按每张生产订单计算,Run Time 按每件产出物料计算,两者各有自己的 Unit of Measure Code。Wait Time 和 Move Time 不占用工作中心产能。如果工作中心的单位为 Days,一天表示 24 小时,而不是八小时的班次。必须在导入时换算,否则所有时长都会出错。
- 日历未及时更新。只有针对计划期运行 Calculate Work Center Calendar 后,才会生成产能数据。首次加载前,请检查 Calendar Entries Available Until 字段。
- 机器中心产能未被计入。关闭 Consolidated Calendar 时,计划只考虑工作中心自身的产能:”The machine center capacity is excluded.”(不包括机器中心产能。)应直接读取机器中心产能,而不是依赖工作中心的汇总值。
- Capacity 和 Efficiency。Business Central 按 Run Time / Efficiency / Capacity 计算时长,计算生成的日历条目已包含这两个因素。将 Efficiency 映射到 SkyPlanner 工作中心效率时,只能应用一次,不要重复计算。
- Alternate Work Center 仅供参考。Microsoft 指出,它 “isn’t automatically included in planning processes.”(不会自动纳入计划流程)。请在 SkyPlanner 中明确将这些替代选项建模为替代工作中心。
- 限流。在线版按用户实施限制,一个服务主体计为一个用户:在 5 分钟的滑动窗口内最多允许 6,000 次 OData 请求,同时最多允许 5 个并发请求。每页最多 20,000 条记录,每个
$batch最多包含 100 项操作,单项操作超过 8 分钟即超时。请求速率超限会返回 429。应使用批处理、分页和增量轮询,而不是每次重新加载全部数据。 - 许可证。制造功能仅在 Premium 体验中提供。Essentials 用户无法登录设置为 Premium 的公司。
Business Central 集成由谁配置和支持
这项工作包括根据您的工艺路线、工作中心和 Business Central 配置建立映射,以及设置 Business Central 未保存的约束:换型时间矩阵、工具、操作人员数量和替代资源。
- SkyPlanner 团队在实施准备阶段完成配置,并在上线后提供支持,范围涵盖 SkyPlanner 端和约定的 Business Central Web 服务。每家工厂使用 Business Central 的方式都不同,配置集成时正需要运用对这些差异的了解。集成基于 Business Central 的标准 API v2.0 和已发布的 Web 服务运行,这些接口随 Business Central 一同更新。
- 您的 Business Central 合作伙伴可以参与。合作伙伴了解您的配置和扩展,可与 SkyPlanner 团队一起审核已发布的页面、权限集和 Entra 应用。SkyPlanner 提供 REST API、Swagger/OpenAPI 文档和 webhook。
- 您的开发人员也可以自行开发集成,使用同一套有文档支持、采用 JWT 身份验证的 REST API。只需一个 API 密钥即可开始,SkyPlanner 团队会在需要时提供协助。公开产品文档见 SkyPlanner 文档,其中包括采购订单以及产品和物料 API。Laboratory & Allied 在对接 SAP Business One 时就选择了这种方式:在 SkyPlanner 的协助下,其内部 IT 团队基本独立完成了集成开发。使用 NetSuite 的 UTU 则将 SkyPlanner 与其 ERP 并行运行。
先通过 30 天免费试用验证排程,让集成从一份已符合工厂实际需求的排程开始。
连接后,Arcturus 引擎根据 Business Central 的实时订单进行排程,并将计划日期写入生产订单的工艺路线。SkyPlanner 每月 199 € 起,包含 5 个工作中心,按月计费。我们会根据您的流程和需求,提前提供集成及所选套餐的报价,让您在开始前了解全部费用。查看价格和功能,或阅读 Business Central 生产排程,了解它与 Business Central 自带计划功能的对比。集成概览见 Business Central 页面,其他 ERP 的集成信息见 ERP 集成中心。
制造企业对 SkyPlanner 的评价
2 小时每周节省的时间
“SkyPlanner 让我们的生产计划从 Excel 电子表格转向了实时生产优化。”
Kalle Kalliomäki,供应链专员
UTU · 配电盘与开关设备
每周用于生产计划的工作时间减少了 2 小时,新的任务队列只需几秒就能下达到产线。
+90%生产效率提升
“生产效率提高了 90%。”
Abdul Rucyinga,IT 负责人
Laboratory & Allied · 制药
生产效率提高了 90%,为所有工作中心编制一份覆盖三个月的优化计划,用时不到 30 分钟。
98%准时交付率,原先约为 50%
“SkyPlanner 对我们保持准时交付率起着决定性作用。”
Hannu Lahtinen,总经理
KJH-Comp · 钣金加工与合同制造
准时交付率从约 50% 提升至最高 98%,排程工作如今只需一名主管,而不再需要两名。
1,000s工单自动完成排程
“我们对生产的掌控方式变了,对产能的了解也达到了全新的水平。”
Hannu Ryynänen,首席执行官
Mamec · 工业搅拌机、泵及高科技合同制造
数千份工单自动完成排程,整个组织都能实时查看生产情况。
常见问题
Business Central API 包含生产订单吗?
标准 API v2.0 不包含生产订单、工艺路线、BOM 或工作中心实体。Business Central 改为通过 OData v4 Web 服务提供这些数据。标准生产页面可在 Web Services 页面上发布,无需编写代码,之后即可通过 OData 读写。
谁来构建 Business Central 集成?
SkyPlanner 团队会在实施期间,根据您的 Business Central 配置建立双向集成,并在上线后提供支持。Business Central 端使用 API v2.0 和已发布的 OData v4 Web 服务。您的 Business Central 合作伙伴或内部开发人员也可以依据 SkyPlanner 的 REST API 文档开发集成,只需一个 API 密钥即可开始。
需要在 Business Central 中安装扩展吗?
不需要。API v2.0 是标准功能,制造相关页面只需在 Web Services 页面上配置,即可发布为 Web 服务。只有需要全自动过账产出和消耗时,才会添加一个标准 API 页面。
集成应采用哪种身份验证方式?
通过 Microsoft Entra ID 使用 OAuth 2.0 客户端凭据,并在 Business Central 的 Microsoft Entra Applications 页面上注册。Web 服务访问密钥已弃用。本地部署版从 18.11 和 19.5 版本起也支持相同的服务到服务访问方式,前提是服务器已配置为使用 Microsoft Entra 身份验证。我们会在范围评估时确认适用于您当前版本的方案。
Business Central 能实时推送变更吗?
可以做到近实时。对于物料、销售订单等 API v2.0 实体,Webhook 订阅通知由 Business Central 在线版批量发送,在首次变更发生后约 30 秒送达。生产订单则通过每隔几分钟轮询一次来获取。反向传输时,SkyPlanner 自身的 Webhook 会在排程变更发生时立即推送。
工序日期如何写回 Business Central?
将标准 Prod. Order Routing 页面发布为 OData v4 Web 服务后,通过 PATCH 请求写回。请求会设置 Starting Date-Time、Ending Date-Time 以及工作中心或机器中心。Business Central 会使用自身逻辑验证这些值,与计划员直接编辑页面时完全一致。