連携 / 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で公開されています。最初のAPI呼び出しの手順は、連携チュートリアルで解説しています。
データのマッピング
| 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は5リソース込みで月額199 €から、月払いで利用できます。連携費用は、お客様の工程と要件に合わせ、ご利用プランとともに事前に見積もるため、開始前に総費用を把握できます。
SCM標準の計画機能との比較は、Dynamics 365 SCMの生産スケジューリングをご覧ください。概要は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 · 化学品・食品製造
SkyPlannerを導入した2021年から現在まで、納期遵守率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で保護します。
SCMのジョブスケジューリングを調整するのではなく、SkyPlannerと連携する理由は何ですか?
Planning Optimizationが有限能力を考慮するのは有限能力タイムフェンス内だけで、それより先は能力を無限として計画します(出典)。SCMのジョブスケジューリングは、予約済みの能力を避けながら製造オーダーを一件ずつ割り当て、段取りを工程の所要時間として扱います(出典)。また、Microsoftは、シフトによって能力が変わる場合に、有限能力でのマスタープランを推奨していません(出典)。SkyPlannerは段取り時間マトリクスを使って確定済みオーダーをすべてまとめてスケジューリングし、重要な変更があるたびにAutopilotが自動で再計画します。SkyPlannerチームが双方向連携を設定・サポートし、お客様のDynamicsパートナーがSCM側を担当することもできます。
計画製造オーダーもSkyPlannerでスケジューリングすべきですか?
通常は対象にしません。Planning Optimizationは実行のたびに計画製造オーダーを再生成します。SkyPlannerは、要件定義で合意したステータスの確定済み製造オーダーをスケジューリングします。
オンプレミスのSupply Chain Managementとも連携できますか?
オンプレミス環境では、Microsoftがその環境でサポートしているバッチデータAPIで連携します。SkyPlanner側はどちらの場合も同じREST APIを使用し、連携経路は要件定義で確認します。
連携を構築する前にSkyPlannerを試せますか?
はい。30日間の無料トライアルでは、Supply Chain ManagementからCSVまたはExcel形式でデータをインポートし、最大20リソースまで利用できます。クレジットカードは不要です。トライアルを開始するか、連携の要件定義について営業にご相談ください。