集成 / ERP / Microsoft Dynamics 365 Supply Chain Management
Dynamics 365 Supply Chain Management 集成指南:使用 SkyPlanner APS 进行生产排程
本 Dynamics 365 Supply Chain Management 集成指南面向合作伙伴和 IT 团队,介绍如何将 Microsoft Dynamics 365 Supply Chain Management 与 SkyPlanner APS 对接。SkyPlanner 通过 Dynamics 365 Supply Chain Management 的标准数据实体实现双向集成:
- 导入生产订单、工艺路线工序、工艺路线作业、BOM 行、资源、日历、已发布产品、现有库存和采购订单行。
- 将排程确定的开始时间、结束时间及所选资源回写到生产订单及其工艺路线工序。
- 通过工艺路线卡日记账回传操作员工时和数量。
- 排程发生变化时,SkyPlanner webhook 会即时推送。
SkyPlanner 团队会在实施阶段根据您的 Supply Chain Management 配置完成集成设置,并在上线后提供支持。本指南适用于希望参与集成的合作伙伴和开发人员,也适用于希望参照文档,自行基于 SkyPlanner REST API(API 参考)进行开发的人员。
Dynamics 365 SCM 集成方式
Supply Chain Management 通过数据实体对外提供数据。与排程相关的集成方式有四种:
- OData v4 REST 端点。
[Your organization's root URL]/data对外提供所有标记为 IsPublic 的数据实体,完整支持创建、读取、更新和删除操作。它支持$filter、$count、$orderby、$skip、$top、$select以及第一级$expand。分页由服务器控制,每页最多 10,000 条记录;批处理请求可通过变更集将多项写入操作分组。OData 采用同步方式。(来源) - 批量数据 API。Data management package REST API 和定期集成以异步方式传输大量数据。Microsoft 文档指出:”If the volume is more than a few hundred thousand records, use the batch data API.”(如果数据量超过几十万条记录,请使用批量数据 API。)本地部署也支持此 API。(来源)
- 业务事件。Finance and operations 应用将业务事件发布到 Azure Service Bus、Event Grid、HTTPS 端点或 Power Automate。(来源)
- 自定义服务和 OData 操作。X++ 自定义服务和绑定的 OData 操作可按需执行业务逻辑。
SkyPlanner 集成通过 OData 端点处理日常数据传输,并使用批量数据 API 完成大规模初始导入。无需在 Supply Chain Management 中安装任何组件。
身份认证
在 Microsoft Entra ID 中注册应用程序(服务主体)。在 Supply Chain Management 中,将该应用程序映射到具有集成所需安全角色的用户。集成需要读取生产、资源和库存数据,并写入生产订单排程和日记账。使用客户端凭据向 Entra ID 请求令牌。
集成可访问的数据由以下两项规则决定:
- 法人实体。除非请求中添加
?cross-company=true,否则 OData 只返回默认公司的数据。多站点工厂通过dataAreaId筛选数据。 - 公开名称。下文列出的实体名称是数据管理中的名称,可能与公开的 OData 集合名称不同,因此请从您环境的
/data/$metadata中读取实际名称。
SkyPlanner 的 REST API 使用 API 令牌进行身份认证(SkyPlanner Settings > API),并提供 Swagger/OpenAPI 文档。集成教程会逐步介绍最初几次调用的操作。
数据映射
| D365 SCM 实体 | SkyPlanner 对象 | 传输方向 | 同步频率 |
|---|---|---|---|
| 已发布产品(ItemNumber) | 产品和物料 | SCM → SkyPlanner | 初始导入,之后增量同步 |
| 生产 BOM 行(ProdProductionOrderBillOfMaterialsLineEntity)、BOM 行 | 产品结构、各订单所需物料 | SCM → SkyPlanner | 随每次订单同步 |
| 工艺路线、工艺路线版本、工艺路线工序、工序属性(RouteOperationPropertiesV2Entity) | 工序及其准备时间和加工时间 | SCM → SkyPlanner | 初始导入,之后在变更时同步 |
| 资源(OpResOperationsResourceEntity)、资源组、能力 | 工作中心、工作中心组、效率 | SCM → SkyPlanner | 初始导入,之后很少同步 |
| 工作时间日历、日历日期和时间段、日历分配 | 班次 | SCM → SkyPlanner | 每天同步,或在 SkyPlanner 中维护班次 |
| 生产订单头(ProdProductionOrderHeaderEntity) | 订单及其交期和状态 | SCM → SkyPlanner | 每隔几分钟,或由业务事件触发 |
| 工艺路线工序(ProdProductionOrderRouteOperationEntity)、工艺路线作业(ProdProductionOrderRouteJobEntity) | 生产任务及其时长和资源需求 | SCM → SkyPlanner | 随每次订单同步 |
| 现有库存 | 库存结存 | SCM → SkyPlanner | 每小时,或运行排程时 |
| 采购订单行及其交货日期 | 待到货物料;采购订单标记为 Delivered 时更新库存 | SCM → SkyPlanner | 每小时,或运行排程时 |
| 各工艺路线工序的排定开始及结束日期/时间、工序资源 | 各工序的计划开始时间、结束时间和工作中心 | SkyPlanner → SCM | 排程变更时,通过 SkyPlanner webhook 同步 |
| 工艺路线卡日记账(ProdRouteCardProductionJournalEntryEntity: RegisteredHours, ReportedGoodInventoryQuantity) | 工时记录和数量 | SkyPlanner → SCM | 若启用,则按每次报工或每个班次同步 |
| SkyPlanner 约束设置 | 准备时间矩阵、作为有限资源的工具、操作员人数、替代资源 | 在 SkyPlanner 中维护 | 实施阶段设置 |
集成模式
1. 主数据初始导入。导入资源、资源组、日历、已发布产品、工艺路线和 BOM。数据量达到数十万条记录时使用批量数据 API,否则使用 OData 分页。将每个 SCM 资源映射到一个 SkyPlanner 工作中心。不要只映射资源组:工序排程预留的是资源组,但车间实际使用的是具体资源。
2. 订单同步。读取状态属于 SkyPlanner 管理范围的已确认生产订单,通常为 Scheduled 和 Released 状态,并读取其工艺路线工序、工艺路线作业和 BOM 行。同时读取未结采购订单行。SkyPlanner 将已订购物料视为在采购订单交货日期可用,并在采购订单标记为 Delivered 时更新库存。
除非明确纳入集成范围,否则不要同步计划生产订单。Planning Optimization 每次运行都会重新生成这些订单。
3. 排程回写。对于排程引擎已安排或调整的每道工序,SkyPlanner 会将排定的开始及结束日期/时间和工序资源写入对应的工艺路线工序,字段名称以您环境中的 /data/$metadata 为准。变更通过 OData 批处理变更集提交,确保每次排程运行的结果作为一次一致的更新写入。
4. 车间报工。操作员通过 SkyPlanner Mobile Confirmations 或 Production Timer 记录作业,工时记录会让排程保持最新。工时和合格品数量可通过工艺路线卡日记账行回传。Report as finished 仍在您当前使用的系统中处理,即 SCM 或 Production floor execution。
每类过账只选用一个渠道。如果从 SkyPlanner 和 Production floor execution 同时登记相同工时,就会造成重复记录。
5. 数据管理归属与冲突处理规则。上线前应将以下规则书面明确:
| 数据 | 负责系统 |
|---|---|
| 产品、BOM、工艺路线、数量、订单状态、成本核算 | Supply Chain Management |
| 计划生产订单 | Planning Optimization |
| 工序顺序、排定的开始和结束时间、资源分配 | SkyPlanner |
| 准备时间矩阵、工具、操作员人数、替代资源 | SkyPlanner |
| 班次和缺勤 | 由一个系统负责,在范围评估时确定 |
| 工时和产出过账 | Supply Chain Management;若选用 SkyPlanner 工时记录,则从中获取数据 |
冲突主要来自 SCM 自身的作业排程。如果计划员在 SCM 中重新安排订单,就会覆盖 SkyPlanner 的排程日期。对于由 SkyPlanner 负责排程的订单,请在生产订单头上使用 IsProductionOrderSchedulingLocked。凡是在 SCM 中修改过的订单,都应视为新版本并重新同步;生产发生变化时,Autopilot 会自动重新排程。
项目包含哪些工作
实施通常在上线准备启动后的数周内完成。在此之前,您可以用自己的数据进行 30 天免费试用。通过数据管理导出项目或 Excel 加载项导出资源、工艺路线和未结生产订单,再以 CSV 或 Excel 格式导入,验证排程结果。
- 范围评估。确定映射表、由 SkyPlanner 管理的订单状态、同步频率和过账通道。
- 访问配置。注册 Entra ID 应用程序,将其映射到仅授予必要角色权限的 SCM 用户,并在
/data/$metadata中确认公共实体名称。先在沙盒环境中配置,再部署到生产环境。 - 初始加载。加载资源、日历、已发布产品、工艺路线和 BOM。
- 订单与采购订单同步。使用
$filter轮询已变更的记录;如果业务事件目录中有相应事件,也配合使用。 - 在 SkyPlanner 中配置约束。设置准备时间矩阵、工具、操作员人数,以及替代设备或人员。
- 排程回写。批量更新工艺路线工序,并锁定由 SkyPlanner 管理的订单,防止其被重新排程。
- 并行测试。将 SkyPlanner 与现有计划并行运行,对比日期,修正主数据。
- 上线。确认数据一致后,启用回写。
Dynamics 365 SCM 集成中需要提前考虑的问题
- 避免重复计算效率影响。SCM 按照以下公式计算:“Scheduling time = Time x 100 / Efficiency percentage.”(排程时间按效率百分比折算。)将效率映射到 SkyPlanner 工作中心效率时,只应用一次,不要在已经调整过的时间上再次应用。
- 日历分配在资源组上。需要读取各资源组和资源的日历分配,否则产能计算会出现偏差。
- 工序排程与作业排程的区别。采用工序排程的订单没有具体的开始和结束时间,也没有指定资源。同步时需包含工艺路线工序和资源需求,不能只同步日期。
- 有限产能标志。Finite capacity 设为 No 的资源在 SCM 中可能被超额安排。在 SkyPlanner 中,应将每项实际约束都建模为有限产能约束。
- 每道工序最多 32 个资源。SCM 的作业排程将每道工序的资源数量上限设为 32。在 SkyPlanner 中,替代资源通过工作中心组和替代工作中心配置。
- 分页与数据量。OData 每页最多返回 10,000 条记录,展开深度为一层。大批量初始加载应使用批量数据 API。
- 法人实体。如果不使用
cross-company=true和dataAreaId筛选条件,涉及多家公司的工厂只会同步默认公司的数据。
谁来配置集成
配置工作包括根据您的工艺路线、资源及 SCM 配置建立映射,以及在 SkyPlanner 中设置约束:准备时间矩阵、工具、操作员人数和替代资源。
- SkyPlanner 团队在上线准备期间完成配置,并在上线后提供支持,范围涵盖 SkyPlanner 端及双方约定的 SCM 数据实体。每家工厂使用 D365 SCM 的方式都不同,配置时需要将这些实际经验融入其中。
- 您的 Dynamics 合作伙伴可以参与。合作伙伴熟悉您的配置、扩展和安全角色,可以设置 Entra ID 应用程序及实体访问权限。SkyPlanner 提供 REST API、Swagger/OpenAPI 文档和 webhook。
- 您自己的开发人员也可以在此基础上开发,使用同一套有文档支持的 REST API,通过 API 令牌访问。有 API 令牌即可开始,SkyPlanner 团队会在需要时提供协助。
连接完成后,Arcturus 引擎根据 SCM 中的实时生产订单进行排程,并将排定日期写入工艺路线工序。SkyPlanner 每月 199 € 起,包含 5 个工作中心,按月计费。我们会根据您的流程和需求,提前将集成费用与所选套餐一并报价,让您在开始前了解全部成本。
阅读Dynamics 365 SCM 生产排程,了解 SCM 自带计划功能与 SkyPlanner 的对比。集成概览见 Dynamics 365 SCM 页面,其他 ERP 的集成信息见 ERP 集成中心。
制造企业对 SkyPlanner 的评价
2 小时每周节省的时间
“SkyPlanner 让我们的生产计划告别了 Excel 电子表格,实现了实时生产优化。”
Kalle Kalliomäki,供应链专员
UTU · 配电盘与开关设备
生产计划工作每周节省 2 小时,新的任务队列只需数秒即可下达到产线。
+90%生产效率提升
“生产效率提高了 90%。”
Abdul Rucyinga,IT 负责人
Laboratory & Allied · 制药
生产效率提高了 90%,为所有工作中心制定覆盖三个月的优化计划只需不到 30 分钟。
100%自 2021 年以来的准时交付率
“SkyPlanner 让我们看清产能情况,也让计划变得可预测。”
Dan Berglund,首席运营官兼首席财务官(COO/CFO)
Opes Corporation · 化工与食品制造
自 2021 年开始使用 SkyPlanner 以来,准时交付率始终保持在 100%。
数以 1,000 计自动排程的工单
“我们对生产的掌控与以往不同,对产能的理解也达到了全新的水平。”
Hannu Ryynänen,首席执行官
Mamec · 工业搅拌机、泵及高科技合同制造
数千张工单自动完成排程,整个组织都能实时查看生产情况。
常见问题
集成使用 D365 SCM 的哪种 API?
使用位于 /data 的 OData v4 REST 端点。该端点公开所有公共数据实体,完整支持创建、读取、更新和删除操作。大批量初始加载使用批量数据 API。如果您的业务事件目录中有相应事件,还可通过业务事件实现近实时触发。
需要在 Supply Chain Management 中安装任何组件吗?
不需要。集成通过 OData 使用标准数据实体。管理员注册 Microsoft Entra ID 应用程序,并将其映射到具备所需角色的 SCM 用户。
排定日期如何回写到 Supply Chain Management?
SkyPlanner 通过 OData 批量更改集,将排定的开始和结束日期/时间以及工序资源写入生产订单的工艺路线工序。由 SkyPlanner 管理的订单通过 IsProductionOrderSchedulingLocked 保护,防止被重新排程。
为什么要连接 SkyPlanner,而不是调整 SCM 的作业排程?
Planning Optimization 只在有限产能时间范围内考虑产能限制,超出该范围则按无限产能编制计划(来源)。SCM 作业排程每次安排一张生产订单,避开已预留的产能,并将准备时间计入工序时间(来源);Microsoft 也建议,当班次导致产能变化时,不要采用考虑有限产能的主计划(来源)。SkyPlanner 使用准备时间矩阵,将所有已确认订单一起排程,Autopilot 则在每次发生实质性变化时自动重新排程。SkyPlanner 团队负责双向集成的配置和支持,您的 Dynamics 合作伙伴可以负责 SCM 端。
SkyPlanner 应该对计划生产订单进行排程吗?
通常不应该。Planning Optimization 每次运行都会重新生成计划生产订单。SkyPlanner 对已确认的生产订单进行排程,具体涵盖哪些状态的订单,在范围评估时约定。
集成支持本地部署的 Supply Chain Management 吗?
本地部署通过批量数据 API 运行集成,这是 Microsoft 在该部署方式下支持的接口。无论采用哪种部署方式,SkyPlanner 端都使用同一套 REST API,具体集成路径会在范围评估时确认。