生産計画データテンプレート
生産計画データテンプレート
- 収集を推奨する属性
- 追跡すべき主要なアクティビティ
- Microsoft Dynamics 365 Manufacturingからの抽出方法
生産計画の属性
| 名前 | 説明 | ||
|---|---|---|---|
| 生産オーダー ProductionOrderNumber | 生産オーダーを一意に識別する値であり、関連する計画・実行アクティビティを追跡するための主要なケースIDです。 | ||
| 説明 生産オーダー番号は、Microsoft Dynamics 365でProdIdと呼ばれることが多く、特定の製造ジョブに関連するすべてのイベント、材料、リソース、コストを結び付ける中心的な識別子です。1つの作業単位について、生産計画から実行、完了、原価計算までのライフサイクルをエンドツーエンドで分析できます。 プロセスマイニングでは、関連するイベントを1つのケースにまとめるために欠かせない属性です。生産オーダー番号でプロセスを分析すると、初期作成やスケジュール設定から完了、原価計算までの標準的な生産フローにおけるボトルネック、遅延、逸脱を特定できます。 重要な理由 これは基本となるケース識別子であり、関連するすべてのイベントをまとめ、分析用に生産計画プロセスをエンドツーエンドで再構成するために欠かせません。 入手先 Microsoft Dynamics 365 ManufacturingのProdTableテーブルにある「ProdId」フィールドです。 例 WO-000456WO-000457WO-000458 | |||
| アクティビティ名 ActivityName | 生産計画プロセス内で発生した特定の業務イベントまたは工程の名称です。 | ||
| 説明 アクティビティ名は、「生産オーダー作成」「生産用材料のピッキング完了」「生産開始」など、生産計画のライフサイクルにおける1つの工程を表します。これらのアクティビティがプロセスマップを構成します。 アクティビティの順序と所要時間を分析することで、プロセスの流れを可視化し、一般的な経路や手戻りループを特定し、各段階にかかる時間を測定できます。この属性は、プロセスの各時点で何が起きているかを把握するために欠かせません。 重要な理由 この属性はプロセスの各工程を定義し、プロセスマップの作成と、プロセスの流れ、ばらつき、ボトルネックの分析を可能にします。 入手先 通常はイベントログから取得するか、「ProdRouteTrans」「ProdJournalBOM」などのテーブルにおけるステータス変更やトランザクション種別、ProdTableのステータスフィールドの変更をマッピングして導出します。 例 生産オーダー作成生産オーダーのリリース生産開始生産完了報告 | |||
| イベント時刻 EventTime | アクティビティが発生した正確なタイムスタンプです。 | ||
| 説明 イベント時刻、つまりタイムスタンプは、特定のアクティビティが発生した正確な日付と時刻を記録します。サイクルタイムの計算、工程間の遅延の特定、時間の経過に伴うプロセスパフォーマンスの把握など、時間に基づくプロセスマイニング分析の基礎となるデータです。 生産計画では、計画リードタイム、生産開始の遅延、オーダー完了までの全体時間などの期間を測定するために使用します。正確で時系列に並んだタイムスタンプは、正しい意味のあるプロセスモデルを構築するために欠かせません。 重要な理由 このタイムスタンプは、イベントの順序付け、アクティビティ間の期間の計算、サイクルタイムやボトルネックの特定など、時間に基づく分析に欠かせません。 入手先 ProdTableの「createdDateTime」や、ProdRouteTrans、ProdJournalRoute、ProdJournalBOMのトランザクション日付フィールドなど、さまざまなトランザクションテーブルにあります。 例 2023-04-15T09:00:12Z2023-04-15T11:30:00Z2023-04-16T14:22:05Z | |||
| ソースシステム SourceSystem | データの抽出元となる記録システムです。 | ||
| 説明 イベントデータの発生元である情報システムを識別する属性です。このプロセスビューでは、値は一貫して「Microsoft Dynamics 365 Manufacturing」になります。 複数のシステムを統合している環境では、データの系譜の確認、データ品質の問題のトラブルシューティング、各システムが全体のプロセスにどのように関与しているかの把握に欠かせません。分析対象データの出所を明確にできます。 重要な理由 データの出所に関する重要なコンテキストを提供し、データガバナンス、検証、複数のエンタープライズシステムからのデータパイプライン管理に役立ちます。 入手先 データ抽出・変換プロセスで追加し、データセットの出所を示す静的な値です。 例 Microsoft Dynamics 365 ManufacturingD365 F&O | |||
| 最終データ更新日時 LastDataUpdate | このイベントのデータがソースシステムから最後に更新または抽出された時点を示すタイムスタンプです。 | ||
| 説明 ソースシステムから直近にデータを取得した日付と時刻を示す属性です。分析対象データの鮮度や最新性を把握するために欠かせないメタデータです。 データが最後に更新された時点を把握することで、アナリストや業務ユーザーはプロセスマイニングツールから得られる分析結果を信頼しやすくなります。ダッシュボードがリアルタイム情報を示しているのか、過去の時点のデータを示しているのかを確認でき、業務上の意思決定に役立ちます。 重要な理由 この属性はデータガバナンスに欠かせません。データの鮮度を把握し、プロセス分析の適時性を信頼できるようにします。 入手先 このタイムスタンプは、データの抽出、変換、ロード(ETL)プロセス中に生成され、各レコードに付与されます。 例 2023-05-20T05:00:00Z2023-05-21T05:00:00Z | |||
| ユーザー UserId | アクティビティを実行した、または担当したユーザーの識別子です。 | ||
| 説明 ユーザーIDは、オーダーのリリースや完了報告など、特定のプロセス工程を実行した従業員またはシステムアカウントを識別します。プロセス内で誰が作業を行っているかを把握できます。 ユーザー別にプロセスを分析することで、業務量の分布、トレーニング機会、個人またはチーム間のパフォーマンスの違い、特定ユーザーによる逸脱を調査できます。コンプライアンスや監査証跡の観点でも重要です。 重要な理由 ユーザーまたはチーム別のプロセスパフォーマンス分析、自動化の機会の特定、主要なプロセスアクティビティの監査証跡の作成に役立ちます。 入手先 さまざまなテーブルの「modifiedBy」や「createdBy」などのフィールド、または「ProdJournalTable」などのトランザクションログテーブルにあるユーザーフィールドにあります。 例 j.smithm.jonesAX_BATCH_SVC | |||
| 実績数量 ActualQuantity | 注文について、生産が完了し、完成品として報告された品目の数量です。 | ||
| 説明 実績数量は、特定の製造オーダーについて完成し、品質検査に合格した単位数を表します。この値は、生産が「完成として報告」された時点で記録されます。 この属性は、生産歩留まりと効率の分析に使います。実績数量と計画数量を比較すると、スクラップ率の計算や生産ロスの把握が可能です。また、スループット分析や設備稼働率のダッシュボードにも欠かせない項目です。 重要な理由 生産歩留まり、スクラップ率、実際のスループットを計算するために必要であり、製造の効率とパフォーマンスを把握できます。 入手先 通常、注文が完成として報告された際に、「ProdTable」の「QtyGood」フィールド、または関連する仕訳転記テーブルから取得します。 例 100985000 | |||
| 生産オーダーステータス ProductionOrderStatus | 生産オーダーの現在のライフサイクル上のステータスを示します。 | ||
| 説明 生産オーダーステータスは、製造ライフサイクルにおけるオーダーの進捗を示します。Dynamics 365で一般的に使用されるステータスには、「Created」「Estimated」「Scheduled」「Released」「Started」「Reported as finished」「Ended」があります。この属性により、各オーダーがその時点でどの段階にあるかを把握できます。 プロセスマイニングでは、ステータス変更を分析してアクティビティを定義し、プロセスの流れを把握します。特定の状態にあるオーダーの絞り込み、各ステータスにとどまった時間の分析、滞留または遅延しているオーダーの特定にも利用できます。 重要な理由 この属性はオーダーの進捗を大まかに把握するためのもので、フィルタリング、適合性チェック、各生産段階にかかった時間の分析に欠かせません。 入手先 ProdTableテーブルの「ProdStatus」フィールドです。 例 スケジュール済みリリース済み開始済み終了済み | |||
| 生産タイプ ProductionType | 標準生産、手直し、プロジェクトベースなど、生産オーダーの分類です。 | ||
| 説明 Production Typeは、目的に基づいて注文を分類します。たとえば、「Standard」注文は通常の在庫生産用、「Rework」注文は以前に生産した品目の不具合を修正するためのもの、「Project」注文は特定の顧客プロジェクトに関連付けられています。 この属性は、比較可能な分析ビューを作成するうえで重要です。Rework注文のプロセスは、Standard注文とは本質的に異なります。Production Typeでプロセス分析を分けることで、意味のある比較が可能になり、それぞれのタイプに固有の課題やフローを把握しやすくなります。 重要な理由 この属性を使うと分析を分けられます。「Standard」や「Rework」など、注文タイプによってプロセスや期待されるパフォーマンスが異なるためです。 入手先 これは「ProdTable」テーブルの「ProdType」フィールドです。 例 標準手直しプロジェクト | |||
| 生産優先度 ProductionPriority | 製造オーダーの緊急度または優先順位を示す評価値です。 | ||
| 説明 生産優先度は、生産現場での作業順序を管理する計画担当者やスケジューラーが使うフィールドです。優先度の高い注文は前倒しで処理される場合があり、他の注文の計画スケジュールに影響することがあります。 この属性を分析すると、高優先度または前倒し注文によって生産計画が変更される頻度を把握できます。注文のライフサイクル全体で優先度の変化を追跡すると、需要や計画の不安定さを明らかにできます。「前倒し生産の傾向」ダッシュボードと「前倒し生産率」KPIにも使われます。 重要な理由 前倒し注文の頻度と影響を把握できます。これは、計画の不安定さや場当たり的な業務管理の兆候となる場合があります。 入手先 「ProdTable」の標準フィールドまたはカスタムフィールドである可能性があります。設定は会社ごとに異なることがよくあります。 例 通常高緊急 | |||
| 生産拠点 ProductionPlant | 生産オーダーを実行する製造拠点または工場です。 | ||
| 説明 生産拠点は、製造プロセスを担う物理的な場所または施設を示します。生産パフォーマンスを分類・比較するための重要な組織上の軸です。 プロセスマイニングでは、異なる拠点のパフォーマンスを比較できます。拠点間でサイクルタイム、リソース利用率、標準プロセスの遵守状況を比較し、ベストプラクティスを特定したり、業務改善が必要な拠点を見つけたりできます。能力利用率の分析にも欠かせません。 重要な理由 異なる製造拠点のパフォーマンス比較やベンチマーキングが可能になり、ベストプラクティスや拠点固有の問題を特定できます。 入手先 ProdTableテーブルの「InventSiteId」フィールドです。 例 SITE-ASITE-BMain-WH | |||
| 製品番号 ProductNumber | 製造対象の品目を一意に識別する値です。 | ||
| 説明 製品番号、つまりItem IDは、生産オーダーで製造する完成品を指定します。生産プロセスを対象製品に結び付け、関連する部品表とルート指示を参照できるようにします。 製品番号別にプロセスを分析すると、製造ライフサイクルにおける製品固有の違いを明らかにできます。特定の製品でサイクルタイムが長い、手戻りが多い、遅延が頻発するといった傾向を把握し、製品エンジニアやプロセスエンジニアへの有用な情報を提供できます。 重要な理由 製造する製品に基づくプロセスのばらつきを分析し、製品固有のボトルネックや品質問題を特定できます。 入手先 ProdTableテーブルの「ItemId」フィールドです。 例 FG-1001FG-2050ASSY-500B | |||
| 計画完了日時 PlannedEndDate | 生産オーダーの完了予定日と時刻です。 | ||
| 説明 計画完了日時は、スケジュールエンジンが決定する生産オーダーの目標完了時刻です。工程時間、リソースカレンダー、リードタイムを考慮し、完成品の準備が整う時期を予測します。 プロセス分析では、納期どおりの完了状況を評価するために欠かせない属性です。計画完了日時と実際の完了タイムスタンプ(「生産完了報告」または「生産オーダー終了」アクティビティ)を比較することで、納期どおりの生産完了率KPIを計算し、納期遅延の組織的な原因を特定できます。 重要な理由 納期どおりの完了率を測定し、生産スケジュールの精度を分析するための基準となります。 入手先 ProdTableテーブルの「SchedEnd」フィールドです。 例 2023-04-25T17:00:00Z2023-04-26T17:00:00Z2023-04-27T17:00:00Z | |||
| 計画開始日時 PlannedStartDate | 生産オーダーの開始予定日と時刻です。 | ||
| 説明 計画開始日時は、スケジュール設定プロセスの主要な出力であり、オーダーの生産作業を開始する目標時刻を示します。材料の可用性、リソース能力、需要の期限に基づいて決定されます。 スケジュール遵守の分析に欠かせない属性です。計画開始日時と実際の生産開始時刻(「生産開始」アクティビティのタイムスタンプ)を比較することで、定時性、遅延の原因、生産スケジュール遵守率などのKPIを測定できます。 重要な理由 スケジュール遵守を測定し、計画から実際の生産開始までの遅延を特定するための基準となります。 入手先 ProdTableテーブルの「SchedStart」フィールドです。 例 2023-04-18T08:00:00Z2023-04-19T08:00:00Z2023-04-20T08:00:00Z | |||
| 予定どおりの開始 ProductionScheduleAdherence | 製造オーダーが計画開始日以前に開始された場合にtrueとなるブール型フラグです。 | ||
| 説明 この計算属性は、生産開始時のスケジュール遵守状況を、単純な二値で示します。実際の開始タイムスタンプ(「Production Started」イベント)と「PlannedStartDate」属性を比較します。 「生産スケジュール遵守率」など、明確で簡潔なダッシュボードやKPIの作成に役立ちます。分析ツールで日付を直接比較しなくても、予定どおりに開始した注文と遅延した注文の割合を簡単にフィルタリング・集計し、遅延した注文の特徴を分析できます。 重要な理由 スケジュール遵守状況のレポート作成とKPI計算を簡単にし、予定どおりの注文と遅延注文を容易にフィルタリング・集計できます。 入手先 計算指標です。ロジックは「Production Started」EventTime <= PlannedStartDateです。 例 truefalse | |||
| 品質オーダー番号 QualityOrderNumber | 製造オーダーに関連付けられた品質管理オーダーの識別子です。 | ||
| 説明 品質検査が必要な場合、Dynamics 365では通常、品質オーダーが生成されます。この属性は、生産プロセスと品質保証プロセスを関連付け、対応する品質オーダーのIDを記録します。 この関連付けにより、品質管理の工程を含む、より詳細なエンドツーエンドのプロセスビューを作成できます。品質検査が生産リードタイムに与える影響、品質プロセスの遅延、製品や生産ラインごとの品質検査頻度を分析できます。 重要な理由 生産プロセスと品質保証プロセスをつなぎ、品質検査が全体のリードタイムに与える影響を分析できます。 入手先 品質管理テーブル(例:「InventQualityOrderTable」)に保存され、製造オーダーとの関連付けが必要です。 例 QO-00123QO-00124QO-00125 | |||
| 改訂番号 ProductionOrderRevisionNumber | 生産計画が初回作成後に調整された回数です。 | ||
| 説明 この属性は、スケジュール設定またはリリース後に、数量、日付、ルーティングなど製造オーダーに加えられた改訂や大きな変更の回数を追跡します。数値が高いほど、計画が不安定であることを示します。 「生産計画改訂率」KPIの直接的な指標です。分析すると、頻繁な需要変更や初期計画の精度不足など、計画が不安定になる原因を特定できます。また、非効率につながりやすい手戻りや再スケジュールの負荷を定量化できます。 重要な理由 計画の安定性を直接測定し、「生産計画改訂率」KPIを支援します。変更や手戻りが過剰なプロセスを明らかにできます。 入手先 派生属性です。ケースごとに「Production Order Adjusted」アクティビティの発生回数を数える必要があります。 例 012 | |||
| 材料の可用性 MaterialAvailabilityStatus | 製造オーダーに必要な原材料が利用可能かどうかを示します。 | ||
| 説明 この属性は、生産に必要な部品の準備状況を追跡します。「Available」、「On Order」、「Shortage」などのステータスを表す場合があります。製造オーダーを計画どおりに開始できるかをスケジューラーが判断するうえで、重要な情報です。 プロセスマイニングでは、生産開始の遅延原因を特定するために欠かせません。このステータスと「Production Order Released」から「Production Started」までの時間を関連付けることで、材料不足がスケジュール遵守率や全体のサイクルタイムに与える影響を定量化できます。「材料可用性による遅延影響」ダッシュボードにも直接つながります。 重要な理由 材料不足による生産開始の遅延を把握・定量化するための重要な項目です。サプライチェーンのパフォーマンスと製造効率を関連付けて分析できます。 入手先 通常、単一のフィールドではありません。「InventSum」テーブルを使い、製造オーダーの部品表(BOM)に含まれるすべての品目の手持ち在庫を確認して導出します。 例 完全利用可能一部不足利用不可 | |||
| 生産ライン ProductionLine | 製造オーダーに割り当てられた特定の生産ライン、作業区、またはリソースグループです。 | ||
| 説明 生産ラインは、製造工程を担当する特定の機械、セル、またはリソースのグループを示します。生産工場よりも詳細な粒度で把握できます。 生産ライン別にプロセスを分析することは、詳細な能力と稼働率の分析に欠かせません。過負荷の作業区を特定し、同じ製品を生産するライン間の効率を比較できます。また、工場単位では見えにくい、リソース固有のボトルネックも特定できます。 重要な理由 リソースの稼働率とパフォーマンスを細かく分析できるため、過負荷の作業区や効率の低いラインを特定できます。 入手先 通常、生産ルートトランザクションの「WrkCtrId」フィールド(「ProdRoute」または「ProdRouteTrans」テーブル)に記録されています。 例 LINE-01LINE-02CNC-A | |||
| 生産開始遅延 ProductionStartDelay | 注文がリリースされてから、実際に生産が開始されるまでの経過時間です。 | ||
| 説明 この計算期間は、生産現場での待機時間またはキュー時間を測定します。「Production Order Released」アクティビティから「Production Started」アクティビティまでの時間差です。 計画が完了し、注文が実行可能になった後に発生する遅延を特定できるため、「リソース割り当て遅延分析」ダッシュボードに欠かせないKPIです。値が大きい場合、リソースの可用性、材料の準備、生産現場への情報伝達に問題がある可能性があります。業務改善の対象を明確にできます。 重要な理由 開始可能になってから実際に開始するまでの遅延を正確に測定し、リソースの可用性や生産現場の準備状況に関するボトルネックを特定できます。 入手先 計算指標です:Timestamp(「Production Started」) - Timestamp(「Production Order Released」)。 例 0日4時間15分1日2時間0分0日1時間30分 | |||
| 終了時刻 EndTime | アクティビティが完了した時点を示す正確なタイムスタンプです。 | ||
| 説明 終了時刻は、特定のアクティビティが完了した時点を示します。開始時刻が開始を示すのに対し、終了時刻は、その工程に実際にかかった時間や処理時間を把握するために必要です。 プロセスマイニングでは、アクティビティの開始時刻と終了時刻の両方があると、待機時間と処理時間をより細かく分析できます。アクティビティを実際に処理していた時間と、次の工程の開始を待っていた時間を区別できるため、詳細なボトルネック分析に役立ちます。 重要な理由 アクティビティの処理時間を計算し、待機時間と区別できます。その結果、ボトルネックをより正確に分析できます。 入手先 派生値であることがよくあります。たとえば、「Production Started」の終了時刻を「Operation Completed」の開始時刻として扱う場合があります。ログによっては、終了タイムスタンプが明示的に記録されています。 例 2023-04-15T09:30:45Z2023-04-15T12:00:00Z2023-04-16T15:00:10Z | |||
| 計画数量 PlannedQuantity | 生産を計画している品目の数量です。 | ||
| 説明 計画数量は、特定の製造オーダーで生産する目標単位数です。通常は、販売注文の需要、安全在庫の要件、またはマスタープランニングによって決まります。 この属性は、歩留まりやスクラップなどのパフォーマンス指標の基準になります。計画数量と生産実績数量を比較することで、計画担当者は生産効率と材料差異を確認できます。能力計画や所要量計画にも欠かせない基本データです。 重要な理由 実際の生産数量と比較して、生産歩留まりとスクラップ率を測定するための基準数量です。 入手先 これは「ProdTable」テーブルの「QtySched」フィールドです。 例 1005000250 | |||
生産計画のアクティビティ
| アクティビティ | 説明 | ||
|---|---|---|---|
| 生産オーダーのスケジュール設定 | このアクティビティは、生産オーダーの作業に具体的なリソース、日付、時刻を割り当てるスケジュール設定を示します。作業のスケジュール設定や、より詳細なジョブのスケジュール設定が含まれる場合があります。 | ||
| 重要な理由 スケジュール設定は、能力計画とリソース管理に欠かせません。オーダーのスケジュール設定にかかった時間と、リリースまでの間隔を分析することで、計画上の制約や能力上の制約を明らかにできます。 入手先 ProdTableの生産オーダーステータスが「Scheduled」に変わった時点で記録します。ユーザーがスケジュール設定機能を実行すると発生します。 取得 ProdTableのProdStatusフィールドが「Scheduled」に変わった時点のタイムスタンプを検出します。 イベントタイプ inferred | |||
| 生産オーダーのリリース | このアクティビティは、生産オーダーが承認され、製造現場で実行できる状態になったことを示します。ジョブカードやルートカードなどのドキュメントを発行する重要なマイルストーンです。 | ||
| 重要な理由 これは、計画から実行への正式な引き継ぎです。「Scheduled」から「Released」までの時間は承認の遅延や最終確認の状況を示し、「Released」から「Started」までの時間は製造現場の準備状況を測定します。 入手先 ProdTableの生産オーダーステータスが「Released」に変わった時点で記録します。ユーザーによる手動操作または自動処理によって発生します。 取得 ProdTableのProdStatusフィールドが「Released」に変わった時点のタイムスタンプを検出します。 イベントタイプ inferred | |||
| 生産オーダー作成 | このアクティビティは、特定数量の製品に対する需要を正式な生産オーダーとして登録する処理を示します。通常は、計画生産オーダーが確定され、システム上に一意のIDを持つ正式なレコードが作成された時点で記録されます。 | ||
| 重要な理由 これは生産プロセスの主な開始イベントです。この作成時点から後続の手順までの時間を分析することで、計画全体のリードタイムと効率を測定できます。 入手先 このイベントは、ProdTableにある生産オーダーレコードの作成タイムスタンプから推定します。初期ステータスは通常、「Created」です。 取得 ProdStatusが「Created」のProdTableに新しいエントリが作成された時点のタイムスタンプを取得します。 イベントタイプ inferred | |||
| 生産オーダー終了 | これは最後のアクティビティで、生産オーダーの財務上の締め処理を示します。すべてのコストが計算・転記され、オーダーに対する追加のトランザクションを実行できなくなります。 | ||
| 重要な理由 物理面と財務面の両方で、オーダーが実際に完了したことを示します。「Reported as Finished」から「Ended」までの遅延は、原価計算や財務上の締め処理に関する問題を示す場合があります。 入手先 ProdTableのProdStatusフィールドが「Ended」に設定された時点で取得される最後のステータス変更です。原価計算を実行してオーダーを終了すると発生します。 取得 ProdTableのProdStatusフィールドが「Ended」に変わった時点のタイムスタンプを検出します。 イベントタイプ inferred | |||
| 生産完了報告 | 指定数量の製品の製造が物理的に完了し、完成品が在庫に入ったことを示します。在庫トランザクションを発生させる重要なステータス更新です。 | ||
| 重要な理由 物理的な生産の終了を示します。納期どおりの完了率、実際の生産期間、スループットを計算するために欠かせません。 入手先 ProdTableの生産オーダーステータスが「Reported as finished」に変わった時点で記録します。「Report as Finished」仕訳を転記すると発生します。 取得 ProdTableのProdStatusフィールドが「Reported as finished」に変わった時点のタイムスタンプを検出します。 イベントタイプ inferred | |||
| 生産開始 | 製造現場でオーダーの実際の生産作業が始まったことを示します。通常は、製造現場端末から最初の作業またはジョブが開始された時点、あるいは仕訳が転記された時点で記録されます。 | ||
| 重要な理由 このアクティビティから、生産の実際の開始時刻を把握できます。開始遅延、スケジュール遵守、実際のリードタイムを計算するうえで重要です。 入手先 ProdTableの生産オーダーステータスが「Started」に変わった時点で記録します。通常は、最初の作業に対するジョブカードまたはルートカード仕訳の転記によって発生します。 取得 ProdTableのProdStatusフィールドが「Started」に変わった時点のタイムスタンプを検出します。 イベントタイプ inferred | |||
| 作業完了 | 生産ルート上の個別の製造作業または工程が完了したことを示します。1つの生産オーダーに対して、通常はこのイベントが複数回発生します。 | ||
| 重要な理由 工程間の時間を分析することで、生産プロセス内のボトルネックを特定できます。製造現場の流れをより詳細に把握できます。 入手先 各工程についてProdJournalRouteのルートカード仕訳が転記された時点で取得される明示的なイベントで、その工程の完了を示します。 取得 生産オーダーに関連付けられた各ProdJournalRouteレコードの転記タイムスタンプを取得します。 イベントタイプ explicit | |||
| 品質オーダー生成 | 生産オーダーの成果物を検査するため、品質オーダーが作成されたことを示します。生産品に対する品質保証プロセスの開始イベントです。 | ||
| 重要な理由 品質プロセスを追跡することは、全体のリードタイムを把握するうえで重要です。品質検査の遅延によって、製品の出荷や後続プロセスでの使用が妨げられる場合があります。 入手先 生産オーダーを参照するInventQualityOrderTableのレコード作成に基づく明示的なイベントです。 取得 生産オーダーIDに紐づくInventQualityOrderTableの品質オーダー作成タイムスタンプを取得します。 イベントタイプ explicit | |||
| 品質検査合格 | 生産実行に関連する品質オーダーの検査と承認が正常に完了したことを示します。生産品が必要な品質基準を満たしていることを確認します。 | ||
| 重要な理由 品質プロセスにおける重要なマイルストーンです。品質オーダーの生成から検査合格までの期間によって、品質保証チームの処理効率を把握できます。 入手先 InventQualityOrderTableレコードのステータスが「Pass」に変わったことから推定します。具体的なステータス値はシステムによって異なる場合があります。 取得 関連するInventQualityOrderTableレコードのステータスが「Pass」に更新された時点のタイムスタンプを検出します。 イベントタイプ inferred | |||
| 生産オーダーのキャンセル | 完了前に生産オーダーがキャンセルされたことを示します。プロセスが正常に完了しなかった場合の終了状態です。 | ||
| 重要な理由 キャンセルを追跡することで、需要の変更や計画ミスなど、プロセスが失敗した理由を特定できます。キャンセル率が高い場合、組織的な問題が存在する可能性があります。 入手先 ステータス変更から推定される、もう1つの終了状態です。具体的なステータスは異なる場合がありますが、通常はオーダーステータスを以前の状態に戻し、キャンセル済みとして記録します。 取得 キャンセルを示すステータス変更を検出します。特定には、システムの詳細な分析が必要になる場合があります。 イベントタイプ inferred | |||
| 生産オーダーの調整 | リリース後の生産オーダーに対して行われた、数量変更や日付変更などの重要な変更を示します。このイベントは、変更前後の主要フィールドを比較して推定します。 | ||
| 重要な理由 調整が頻繁に発生している場合、計画が安定していない、または需要が変動している可能性があり、非効率や手戻りにつながります。これにより、こうした変更の頻度と影響を定量化できます。 入手先 オーダーステータスが「Released」になった後、変更ログを分析するか、QtySchedやSchedEndなどのフィールドについてProdTableレコードのスナップショットを比較して推定します。 取得 「Released」イベントのタイムスタンプ後にProdTableで主要フィールド(数量や日付など)に変更があったかを特定します。 イベントタイプ calculated | |||
| 生産オーダー見積 | 生産オーダーに必要な材料消費量とコストの見積もり計算を示します。これは、作業を進める前に財務面と材料面の要件を把握するための重要な計画手順です。 | ||
| 重要な理由 見積もりの遅延は、計画段階で大きなボトルネックになる可能性があります。このアクティビティを追跡することで、コスト計画と材料計画における非効率な点を特定できます。 入手先 ProdTableの生産オーダーステータスが「Estimated」に変わった時点で記録します。ユーザーがオーダーに対して「Estimate」機能を実行すると発生します。 取得 ProdTableのProdStatusフィールドが「Estimated」に変わった時点のタイムスタンプを検出します。 イベントタイプ inferred | |||
| 生産用材料のピッキング完了 | 生産オーダーに必要な原材料が倉庫からピッキングされ、消費できる状態になったことを示します。原材料のピッキング作業またはピッキングリスト仕訳の転記が完了した時点で記録されます。 | ||
| 重要な理由 このアクティビティは、生産開始に向けた重要なゲートです。スケジュール設定から材料のピッキングまでの遅延を分析することで、倉庫業務や材料の可用性に関する問題を明らかにできます。 入手先 通常は、生産オーダーに紐づく倉庫管理テーブル(WHSWorkTable)または在庫仕訳(InventJournalTrans)に記録された明示的なイベントです。 取得 生産オーダーに関連付けられたピッキングリスト仕訳の転記タイムスタンプを取得します。 イベントタイプ explicit | |||
抽出ガイド
ステップ
- Data Management Workspaceへの移動:Microsoft Dynamics 365 Finance and Operationsにログインします。検索バーで
Data managementワークスペースを検索し、移動します。 - 新しいエクスポートプロジェクトの作成:ワークスペースで
Exportタイルを選択し、新しいデータエクスポートプロジェクトを作成します。ProcessMind_Production_Ordersなど、内容が分かるプロジェクト名を入力します。 - エクスポートファイル形式の選択:プロジェクト設定で、CSVやExcelなど、エクスポートに使用するデータ形式を選択します。
Entityオプションを設定し、形式の詳細を指定します。パフォーマンスと互換性の観点から、CSVを推奨します。 - 必要なデータエンティティの追加:生産指図に関するすべてのイベントを取得できるよう、必要なデータエンティティをプロジェクトに追加します。次の各エンティティを追加します:
生産指図、生産指図ルートトランザクション、在庫品質指図、生産ピッキングリスト仕訳明細。各エンティティで、クエリセクションに記載されている関連フィールドをすべて選択します。 - データフィルターの適用:各エンティティで
フィルターオプションを使い、エクスポート対象のデータを絞り込みます。最低限、正しい法人を選択するためにCompanyでフィルターします。データ量を扱いやすい範囲に抑えるため、生産指図エンティティのCreation dateなど、主要な日付フィールドに期間フィルターを設定することを強く推奨します。たとえば、直近6か月を指定します。 - 増分エクスポートの設定(任意):継続的に分析する場合は、増分エクスポートを設定します。ソースエンティティの変更を追跡すると、前回のエクスポート以降に追加または変更されたレコードだけを抽出でき、エクスポート時間を大幅に短縮できます。
- エクスポートジョブの実行:プロジェクトの設定が完了したら、アクションペインで
Exportをクリックしてエクスポートを開始します。すぐに実行することも、定期バッチジョブとしてスケジュールすることもできます。 - エクスポートファイルのダウンロード:エクスポートジョブが正常に完了したら、ジョブ履歴に移動します。対象エンティティごとのデータファイルが含まれるZIP形式のパッケージをダウンロードします。
- データのイベントログへの変換:エクスポートされたファイルは、生のテーブルデータであり、整形済みのイベントログではありません。Pythonスクリプト、ExcelまたはPower BIのPower Query、ETLツールなどの外部ツールを使い、これらのファイルのデータを処理して結合します。クエリセクションに記載された変換ロジックを適用し、各エンティティの日付フィールドとステータスフィールドをピボットして、アクティビティごとに1行のイベントログファイルを作成します。
- 最終イベントログの構成:変換後のCSVファイルに、
ProductionOrderNumber、ActivityName、EventTime、SourceSystem、LastDataUpdateの必須列と、推奨される属性が含まれていることを確認します。ヘッダー行を含む形式に整え、ProcessMindにアップロードできる状態にします。
設定
- 主要データエンティティ:この抽出では、複数のエンティティをエクスポートし、後で結合します。主なエンティティは、
生産指図(ProdTable)、Production order route transactions(ProdRouteTrans)、Inventory quality orders(InventQualityOrderTable)です。 - 日付範囲のフィルタリング:データ量を管理するため、必ず日付フィルターを適用してください。
生産指図エンティティのCreation date(CREATEDDATETIME)を対象に、過去3~6か月でフィルターする方法が一般的です。これにより、システムに過度な負荷をかけず、直近のプロセスを漏れなく取得できます。 - 会社フィルター:分析対象とする特定の会社または法人に対して、フィルターを設定することが重要です。エクスポートプロジェクト内で各エンティティの
フィルターオプションから設定します。 - 全件プッシュと増分プッシュ:初回の抽出では、全件プッシュが必要です。以降の更新では、パフォーマンスを高め、データ量を抑えるため、エンティティで変更追跡を設定し、増分エクスポートを実行することを強く推奨します。
- 前提条件:エクスポートを実行するユーザーには、適切なセキュリティロールが必要です。通常は、
Data management administrator、または必要なデータエンティティへのアクセス権限を持つロールが該当します。
a サンプルクエリ sql
/*
This is not a runnable script but a configuration and transformation plan for the Dynamics 365 Data Management Framework.
**Step 1: Configure the Export Project**
Export the following entities with the specified fields:
1. **Entity: Production orders (ProdTable)**
* `ProductionOrderNumber` (PRODID)
* `ProductionOrderStatus` (PRODSTATUS)
* `CreationDate` (CREATEDDATETIME)
* `LastUpdateDateStatusEstimate` (LASTUPDATEDATESTATUSESTIMATE)
* `LastUpdateDateStatusScheduled` (LASTUPDATEDATESTATUSSCHEDULED)
* `ReleaseDate` (RELEASEDATETIME)
* `StartDate` (STARTEDDATETIME)
* `ReportedFinishedDate` (REPORTEDFINISHEDDATETIME)
* `LastUpdateDateStatusEnded` (LASTUPDATEDATESTATUSENDED)
* `ModifiedDateTime` (MODIFIEDDATETIME)
* `CreatedByUser` (CREATEDBY)
* `ProductionSite` (INVENTSITEID)
* `ProductNumber` (ITEMID)
* `ProductionType` (PRODTYPE)
* `Quantity` (QTYsched)
* `ActualQuantity` (QTYCALC)
* `DeliveryDate` (DLVDATE)
2. **Entity: Production order route transactions (ProdRouteTrans)**
* `ProductionOrderNumber` (PRODID)
* `OperationNumber` (OPRNUM)
* `TransactionDate` (TRANSDATE)
* `TransactionTime` (TRANSTIME)
* `CreatedDateTime` (CREATEDDATETIME)
* `CreatedByUser` (CREATEDBY)
3. **Entity: Inventory quality orders (InventQualityOrderTable)**
* `QualityOrderNumber` (INVENTQUALITYORDERID)
* `ReferenceType` (REFTYPE)
* `ReferenceNumber` (PRODID)
* `QualityOrderStatus` (STATUS)
* `CreationDate` (CREATEDDATETIME)
* `ModifiedDateTime` (MODIFIEDDATETIME)
4. **Entity: Production picking list journal lines (ProdJournalBOM)**
* `JournalId` (JOURNALID)
* `ProductionOrderNumber` (PRODID)
* `PostedDateTime` (POSTEDDATETIME)
* `CreatedByUser` (CREATEDBY)
**Step 2: Apply Transformation Logic (Post-Export)**
Use a script or ETL tool to transform the exported files into a single event log CSV. For each row in the source files, generate events as described below.
*/
-- Production Order Created
SELECT
PRODID AS ProductionOrderNumber,
'Production Order Created' AS ActivityName,
CREATEDDATETIME AS EventTime,
PRODSTATUS AS ProductionOrderStatus,
DLVDATE AS PlannedStartDate,
-- [Logic to calculate PlannedEndDate] AS PlannedEndDate,
CREATEDBY AS UserId,
INVENTSITEID AS ProductionPlant,
ITEMID AS ProductNumber,
PRODTYPE AS ProductionType,
QTYCALC AS ActualQuantity,
-- [Your field for Production Priority] AS ProductionPriority
FROM ProdTable
WHERE CREATEDDATETIME IS NOT NULL
UNION ALL
-- Production Order Estimated
SELECT
PRODID AS ProductionOrderNumber,
'Production Order Estimated' AS ActivityName,
LASTUPDATEDATESTATUSESTIMATE AS EventTime,
-- Other attributes from ProdTable...
FROM ProdTable
WHERE LASTUPDATEDATESTATUSESTIMATE IS NOT NULL
UNION ALL
-- Production Order Scheduled
SELECT
PRODID AS ProductionOrderNumber,
'Production Order Scheduled' AS ActivityName,
LASTUPDATEDATESTATUSSCHEDULED AS EventTime,
-- Other attributes from ProdTable...
FROM ProdTable
WHERE LASTUPDATEDATESTATUSSCHEDULED IS NOT NULL
UNION ALL
-- Materials Picked For Production (based on the first picking list journal posting)
SELECT
PRODID AS ProductionOrderNumber,
'Materials Picked For Production' AS ActivityName,
MIN(POSTEDDATETIME) AS EventTime, -- Use the earliest posting time for a given order
-- Other attributes from ProdTable...
FROM ProdJournalBOM
WHERE POSTEDDATETIME IS NOT NULL
GROUP BY PRODID
UNION ALL
-- Production Order Released
SELECT
PRODID AS ProductionOrderNumber,
'Production Order Released' AS ActivityName,
RELEASEDATETIME AS EventTime,
-- Other attributes from ProdTable...
FROM ProdTable
WHERE RELEASEDATETIME IS NOT NULL
UNION ALL
-- Production Order Adjusted (inferred from modification after release)
SELECT
PRODID AS ProductionOrderNumber,
'Production Order Adjusted' AS ActivityName,
MODIFIEDDATETIME AS EventTime,
-- Other attributes from ProdTable...
FROM ProdTable
WHERE MODIFIEDDATETIME > RELEASEDATETIME AND PRODSTATUS NOT IN ('Ended', 'Cancelled') -- Example logic
UNION ALL
-- Production Started
SELECT
PRODID AS ProductionOrderNumber,
'Production Started' AS ActivityName,
STARTEDDATETIME AS EventTime,
-- Other attributes from ProdTable...
FROM ProdTable
WHERE STARTEDDATETIME IS NOT NULL
UNION ALL
-- Operation Completed
SELECT
PRODID AS ProductionOrderNumber,
'Operation Completed' AS ActivityName,
CREATEDDATETIME AS EventTime,
-- Other attributes from ProdTable linked on PRODID...
FROM ProdRouteTrans
WHERE CREATEDDATETIME IS NOT NULL
UNION ALL
-- Production Reported As Finished
SELECT
PRODID AS ProductionOrderNumber,
'Production Reported As Finished' AS ActivityName,
REPORTEDFINISHEDDATETIME AS EventTime,
-- Other attributes from ProdTable...
FROM ProdTable
WHERE REPORTEDFINISHEDDATETIME IS NOT NULL
UNION ALL
-- Quality Order Generated
SELECT
PRODID AS ProductionOrderNumber,
'Quality Order Generated' AS ActivityName,
CREATEDDATETIME AS EventTime,
-- Other attributes from ProdTable linked on PRODID...
FROM InventQualityOrderTable
WHERE REFTYPE = 'Production' AND CREATEDDATETIME IS NOT NULL
UNION ALL
-- Quality Inspection Passed
SELECT
PRODID AS ProductionOrderNumber,
'Quality Inspection Passed' AS ActivityName,
MODIFIEDDATETIME AS EventTime,
-- Other attributes from ProdTable linked on PRODID...
FROM InventQualityOrderTable
WHERE REFTYPE = 'Production' AND STATUS = 'Pass' AND MODIFIEDDATETIME IS NOT NULL
UNION ALL
-- Production Order Ended
SELECT
PRODID AS ProductionOrderNumber,
'Production Order Ended' AS ActivityName,
LASTUPDATEDATESTATUSENDED AS EventTime,
-- Other attributes from ProdTable...
FROM ProdTable
WHERE LASTUPDATEDATESTATUSENDED IS NOT NULL
UNION ALL
-- Production Order Cancelled
SELECT
PRODID AS ProductionOrderNumber,
'Production Order Cancelled' AS ActivityName,
MODIFIEDDATETIME AS EventTime,
-- Other attributes from ProdTable...
FROM ProdTable
WHERE PRODSTATUS = 'Stopped' -- Or the equivalent 'Cancelled' status enum value in your system ステップ
- Dynamics 365でBYODを設定:Dynamics 365 Finance and Operations環境で「Bring your own database」機能が設定されていることを確認します。Azure SQL Databaseを設定し、Dynamics 365からのデータエクスポートを構成します。
- 必要なエンティティを公開:「Data management」ワークスペースから「Data entities」に移動します。次の主要エンティティを検索し、BYODデータベースに公開します:ProdTable、ProdRouteTrans、InventPickingListJour、InventQualityOrderTable。定期エクスポート用に設定してください。
- データ同期を確認:公開したエンティティのデータが、対象のAzure SQL Databaseに正常かつ定期的に同期されていることを確認します。エクスポートジョブの履歴にエラーがないか確認してください。
- BYODデータベースに接続:SQL Server Management Studio(SSMS)やAzure Data StudioなどのSQLクライアントを使い、Dynamics 365のデータが保存されているAzure SQL Databaseに接続します。
- SQLクエリを準備:新しいクエリウィンドウを開きます。このドキュメントに記載された完全なSQLクエリをコピーします。
- クエリパラメーターを設定:クエリ内のプレースホルダー変数を確認します。
{StartDate}、{EndDate}、{CompanyCode}を、希望する期間と分析対象の会社のDataAreaIdに置き換えます。 - クエリを実行:変更したSQLクエリをBYODデータベースに対して実行します。実行時間は、データ量と指定した期間によって異なります。
- 結果を確認:クエリが完了したら、抽出したすべてのアクティビティについて、想定した列とデータが含まれていることを確認します。この結果セットがイベントログです。
- イベントログをエクスポート:クエリ結果をCSVファイルにエクスポートします。多くのSQLクライアントには、結果を直接ファイルに保存する機能があります。
- ProcessMind用に整形:エクスポートしたCSVファイルがUTF-8でエンコードされ、列見出しがProcessMindで必要な属性名(CaseId、Activity、Timestampなど)と一致していることを確認します。提供されたクエリでは、正しい別名がすでに設定されています。
設定
- 主要なデータエンティティ:このクエリでは、主に次のエンティティをBYODインスタンスにエクスポートしておく必要があります。
PRODTABLE:製造オーダーのヘッダー情報とステータスを保持します。PRODROUTETRANS:個々の製造工程と完了状況の詳細を提供します。INVENTPICKINGLISTJOUR:製造オーダーの材料ピッキングを記録します。INVENTQUALITYORDERTABLE:生産に関連する品質保証オーダーを追跡します。
- 期間:クエリのパフォーマンスを管理するため、まずは3~6か月など、限られた期間で開始することを推奨します。クエリでは、製造オーダーの作成日(
PRODTABLEのCREATEDDATETIME)を使って絞り込みます。 - 会社コードフィルター:
DATAREAIDフィールドを使って、特定の法人または会社のデータを絞り込みます。'{CompanyCode}'プレースホルダーを、対象のID(例:'usmf')に置き換えてください。 - 前提条件:この方法では、BYODを設定するためのDynamics 365 Finance and Operationsのシステム管理者権限と、Azure SQL Databaseでクエリを実行するためのContributor権限が必要です。
- パフォーマンス:数年分または複数会社の大規模なデータセットを扱う場合は、負荷の低い時間帯にクエリを実行してください。抽出を短い期間に分け、後で結果を結合する方法もあります。
a サンプルクエリ sql
SELECT
p.PRODID AS ProductionOrderNumber,
'Production Order Created' AS ActivityName,
p.CREATEDDATETIME AS EventTime,
'Dynamics 365 BYOD' AS SourceSystem,
GETUTCDATE() AS LastDataUpdate,
p.PRODSTATUS AS ProductionOrderStatus,
p.SCHEDSTART AS PlannedStartDate,
p.SCHEDEND AS PlannedEndDate,
p.CREATEDBY AS UserId,
p.INVENTSITEID AS ProductionPlant,
p.ITEMID AS ProductNumber,
p.PRODTYPE AS ProductionType,
p.QTYCALC AS ActualQuantity, -- Using calculated quantity at creation
p.PRODPRIO AS ProductionPriority
FROM PRODTABLE p
WHERE p.CREATEDDATETIME >= '{StartDate}' AND p.CREATEDDATETIME <= '{EndDate}' AND p.DATAREAID = '{CompanyCode}'
UNION ALL
SELECT
p.PRODID AS ProductionOrderNumber,
'Production Order Estimated' AS ActivityName,
p.COSTCALCDATETIME AS EventTime,
'Dynamics 365 BYOD' AS SourceSystem,
GETUTCDATE() AS LastDataUpdate,
p.PRODSTATUS AS ProductionOrderStatus,
p.SCHEDSTART AS PlannedStartDate,
p.SCHEDEND AS PlannedEndDate,
p.MODIFIEDBY AS UserId,
p.INVENTSITEID AS ProductionPlant,
p.ITEMID AS ProductNumber,
p.PRODTYPE AS ProductionType,
p.QTYCALC AS ActualQuantity,
p.PRODPRIO AS ProductionPriority
FROM PRODTABLE p
WHERE p.COSTCALCDATETIME IS NOT NULL AND p.PRODSTATUS >= 2 AND p.CREATEDDATETIME >= '{StartDate}' AND p.CREATEDDATETIME <= '{EndDate}' AND p.DATAREAID = '{CompanyCode}'
UNION ALL
SELECT
p.PRODID AS ProductionOrderNumber,
'Production Order Scheduled' AS ActivityName,
p.SCHEDDATE AS EventTime,
'Dynamics 365 BYOD' AS SourceSystem,
GETUTCDATE() AS LastDataUpdate,
p.PRODSTATUS AS ProductionOrderStatus,
p.SCHEDSTART AS PlannedStartDate,
p.SCHEDEND AS PlannedEndDate,
p.MODIFIEDBY AS UserId,
p.INVENTSITEID AS ProductionPlant,
p.ITEMID AS ProductNumber,
p.PRODTYPE AS ProductionType,
p.QTYCALC AS ActualQuantity,
p.PRODPRIO AS ProductionPriority
FROM PRODTABLE p
WHERE p.SCHEDDATE IS NOT NULL AND p.PRODSTATUS >= 3 AND p.CREATEDDATETIME >= '{StartDate}' AND p.CREATEDDATETIME <= '{EndDate}' AND p.DATAREAID = '{CompanyCode}'
UNION ALL
SELECT
p.PRODID AS ProductionOrderNumber,
'Materials Picked For Production' AS ActivityName,
pl.LEDGERVOUCHERPOSTEDDATETIME AS EventTime,
'Dynamics 365 BYOD' AS SourceSystem,
GETUTCDATE() AS LastDataUpdate,
p.PRODSTATUS AS ProductionOrderStatus,
p.SCHEDSTART AS PlannedStartDate,
p.SCHEDEND AS PlannedEndDate,
pl.CREATEDBY AS UserId,
p.INVENTSITEID AS ProductionPlant,
p.ITEMID AS ProductNumber,
p.PRODTYPE AS ProductionType,
p.QTYGOOD AS ActualQuantity,
p.PRODPRIO AS ProductionPriority
FROM INVENTPICKINGLISTJOUR pl
JOIN PRODTABLE p ON pl.INVENTREFID = p.PRODID AND pl.DATAREAID = p.DATAREAID
WHERE pl.LEDGERVOUCHERPOSTEDDATETIME IS NOT NULL AND p.CREATEDDATETIME >= '{StartDate}' AND p.CREATEDDATETIME <= '{EndDate}' AND p.DATAREAID = '{CompanyCode}'
UNION ALL
SELECT
p.PRODID AS ProductionOrderNumber,
'Production Order Released' AS ActivityName,
p.RELEASEDATE AS EventTime,
'Dynamics 365 BYOD' AS SourceSystem,
GETUTCDATE() AS LastDataUpdate,
p.PRODSTATUS AS ProductionOrderStatus,
p.SCHEDSTART AS PlannedStartDate,
p.SCHEDEND AS PlannedEndDate,
p.MODIFIEDBY AS UserId,
p.INVENTSITEID AS ProductionPlant,
p.ITEMID AS ProductNumber,
p.PRODTYPE AS ProductionType,
p.QTYGOOD AS ActualQuantity,
p.PRODPRIO AS ProductionPriority
FROM PRODTABLE p
WHERE p.RELEASEDATE IS NOT NULL AND p.PRODSTATUS >= 4 AND p.CREATEDDATETIME >= '{StartDate}' AND p.CREATEDDATETIME <= '{EndDate}' AND p.DATAREAID = '{CompanyCode}'
UNION ALL
SELECT
p.PRODID AS ProductionOrderNumber,
'Production Order Adjusted' AS ActivityName,
p.MODIFIEDDATETIME AS EventTime,
'Dynamics 365 BYOD' AS SourceSystem,
GETUTCDATE() AS LastDataUpdate,
p.PRODSTATUS AS ProductionOrderStatus,
p.SCHEDSTART AS PlannedStartDate,
p.SCHEDEND AS PlannedEndDate,
p.MODIFIEDBY AS UserId,
p.INVENTSITEID AS ProductionPlant,
p.ITEMID AS ProductNumber,
p.PRODTYPE AS ProductionType,
p.QTYGOOD AS ActualQuantity,
p.PRODPRIO AS ProductionPriority
FROM PRODTABLE p
WHERE p.RELEASEDATE IS NOT NULL AND p.MODIFIEDDATETIME > p.RELEASEDATE AND p.PRODSTATUS IN (4, 5) AND p.CREATEDDATETIME >= '{StartDate}' AND p.CREATEDDATETIME <= '{EndDate}' AND p.DATAREAID = '{CompanyCode}'
UNION ALL
SELECT
p.PRODID AS ProductionOrderNumber,
'Production Started' AS ActivityName,
p.STARTEDUPDATETIME AS EventTime,
'Dynamics 365 BYOD' AS SourceSystem,
GETUTCDATE() AS LastDataUpdate,
p.PRODSTATUS AS ProductionOrderStatus,
p.SCHEDSTART AS PlannedStartDate,
p.SCHEDEND AS PlannedEndDate,
p.MODIFIEDBY AS UserId,
p.INVENTSITEID AS ProductionPlant,
p.ITEMID AS ProductNumber,
p.PRODTYPE AS ProductionType,
p.QTYGOOD AS ActualQuantity,
p.PRODPRIO AS ProductionPriority
FROM PRODTABLE p
WHERE p.STARTEDUPDATETIME IS NOT NULL AND p.PRODSTATUS >= 5 AND p.CREATEDDATETIME >= '{StartDate}' AND p.CREATEDDATETIME <= '{EndDate}' AND p.DATAREAID = '{CompanyCode}'
UNION ALL
SELECT
prt.PRODID AS ProductionOrderNumber,
'Operation Completed' AS ActivityName,
prt.TRANSDATE AS EventTime,
'Dynamics 365 BYOD' AS SourceSystem,
GETUTCDATE() AS LastDataUpdate,
p.PRODSTATUS AS ProductionOrderStatus,
p.SCHEDSTART AS PlannedStartDate,
p.SCHEDEND AS PlannedEndDate,
prt.CREATEDBY AS UserId,
p.INVENTSITEID AS ProductionPlant,
p.ITEMID AS ProductNumber,
p.PRODTYPE AS ProductionType,
p.QTYGOOD AS ActualQuantity,
p.PRODPRIO AS ProductionPriority
FROM PRODROUTETRANS prt
JOIN PRODTABLE p ON prt.PRODID = p.PRODID AND prt.DATAREAID = p.DATAREAID
WHERE prt.POSTINGTYPE = 8 AND prt.TRANSDATE IS NOT NULL AND p.CREATEDDATETIME >= '{StartDate}' AND p.CREATEDDATETIME <= '{EndDate}' AND p.DATAREAID = '{CompanyCode}'
UNION ALL
SELECT
p.PRODID AS ProductionOrderNumber,
'Production Reported As Finished' AS ActivityName,
p.LASTUPDDATEPRINT AS EventTime,
'Dynamics 365 BYOD' AS SourceSystem,
GETUTCDATE() AS LastDataUpdate,
p.PRODSTATUS AS ProductionOrderStatus,
p.SCHEDSTART AS PlannedStartDate,
p.SCHEDEND AS PlannedEndDate,
p.MODIFIEDBY AS UserId,
p.INVENTSITEID AS ProductionPlant,
p.ITEMID AS ProductNumber,
p.PRODTYPE AS ProductionType,
p.QTYGOOD AS ActualQuantity,
p.PRODPRIO AS ProductionPriority
FROM PRODTABLE p
WHERE p.PRODSTATUS = 6 AND p.LASTUPDDATEPRINT IS NOT NULL AND p.CREATEDDATETIME >= '{StartDate}' AND p.CREATEDDATETIME <= '{EndDate}' AND p.DATAREAID = '{CompanyCode}'
UNION ALL
SELECT
p.PRODID AS ProductionOrderNumber,
'Quality Order Generated' AS ActivityName,
qo.CREATEDDATETIME AS EventTime,
'Dynamics 365 BYOD' AS SourceSystem,
GETUTCDATE() AS LastDataUpdate,
p.PRODSTATUS AS ProductionOrderStatus,
p.SCHEDSTART AS PlannedStartDate,
p.SCHEDEND AS PlannedEndDate,
qo.CREATEDBY AS UserId,
p.INVENTSITEID AS ProductionPlant,
p.ITEMID AS ProductNumber,
p.PRODTYPE AS ProductionType,
p.QTYGOOD AS ActualQuantity,
p.PRODPRIO AS ProductionPriority
FROM INVENTQUALITYORDERTABLE qo
JOIN PRODTABLE p ON qo.INVENTREFID = p.PRODID AND qo.DATAREAID = p.DATAREAID
WHERE qo.INVENTREFTYPE = 9 AND p.CREATEDDATETIME >= '{StartDate}' AND p.CREATEDDATETIME <= '{EndDate}' AND p.DATAREAID = '{CompanyCode}'
UNION ALL
SELECT
p.PRODID AS ProductionOrderNumber,
'Quality Inspection Passed' AS ActivityName,
qo.MODIFIEDDATETIME AS EventTime,
'Dynamics 365 BYOD' AS SourceSystem,
GETUTCDATE() AS LastDataUpdate,
p.PRODSTATUS AS ProductionOrderStatus,
p.SCHEDSTART AS PlannedStartDate,
p.SCHEDEND AS PlannedEndDate,
qo.MODIFIEDBY AS UserId,
p.INVENTSITEID AS ProductionPlant,
p.ITEMID AS ProductNumber,
p.PRODTYPE AS ProductionType,
p.QTYGOOD AS ActualQuantity,
p.PRODPRIO AS ProductionPriority
FROM INVENTQUALITYORDERTABLE qo
JOIN PRODTABLE p ON qo.INVENTREFID = p.PRODID AND qo.DATAREAID = p.DATAREAID
WHERE qo.INVENTREFTYPE = 9 AND qo.STATUS = 2 AND p.CREATEDDATETIME >= '{StartDate}' AND p.CREATEDDATETIME <= '{EndDate}' AND p.DATAREAID = '{CompanyCode}'
UNION ALL
SELECT
p.PRODID AS ProductionOrderNumber,
'Production Order Ended' AS ActivityName,
p.LASTUPDDATEPRINT AS EventTime,
'Dynamics 365 BYOD' AS SourceSystem,
GETUTCDATE() AS LastDataUpdate,
p.PRODSTATUS AS ProductionOrderStatus,
p.SCHEDSTART AS PlannedStartDate,
p.SCHEDEND AS PlannedEndDate,
p.MODIFIEDBY AS UserId,
p.INVENTSITEID AS ProductionPlant,
p.ITEMID AS ProductNumber,
p.PRODTYPE AS ProductionType,
p.QTYGOOD AS ActualQuantity,
p.PRODPRIO AS ProductionPriority
FROM PRODTABLE p
WHERE p.PRODSTATUS = 7 AND p.LASTUPDDATEPRINT IS NOT NULL AND p.CREATEDDATETIME >= '{StartDate}' AND p.CREATEDDATETIME <= '{EndDate}' AND p.DATAREAID = '{CompanyCode}'
UNION ALL
SELECT
p.PRODID AS ProductionOrderNumber,
'Production Order Cancelled' AS ActivityName,
p.MODIFIEDDATETIME AS EventTime,
'Dynamics 365 BYOD' AS SourceSystem,
GETUTCDATE() AS LastDataUpdate,
p.PRODSTATUS AS ProductionOrderStatus,
p.SCHEDSTART AS PlannedStartDate,
p.SCHEDEND AS PlannedEndDate,
p.MODIFIEDBY AS UserId,
p.INVENTSITEID AS ProductionPlant,
p.ITEMID AS ProductNumber,
p.PRODTYPE AS ProductionType,
p.QTYGOOD AS ActualQuantity,
p.PRODPRIO AS ProductionPriority
FROM PRODTABLE p
WHERE p.PRODSTATUS = 0 AND p.CREATEDDATETIME >= '{StartDate}' AND p.CREATEDDATETIME <= '{EndDate}' AND p.DATAREAID = '{CompanyCode}'; ステップ
- Power BI Desktop、またはPower Queryを含む承認済みの別のツールが利用可能であり、必要なMicrosoft Dynamics 365 Manufacturingのデータエンティティを読み取る権限がユーザーに付与されていることを確認します。環境URL、法人または会社の範囲、承認済みの認証方式も確認してください。
- Power BI Desktopで「データを取得」を選択し、承認済みのDynamics 365コネクタ、または組織固有のOData接続やDataverse接続を選択します。管理者が設定した[Your Dynamics 365 environment connection]と[Your credentials]を使用してください。すべての導入環境で特定のエンティティ、エンドポイント、メニュー経路が利用できるとは限りません。
- 生産オーダーヘッダーエンティティ、生産オーダーの作業またはルートエンティティ、資材ピッキングまたはピッキングリストエンティティ、生産転記エンティティ、品質オーダーエンティティ、およびステータス変更の特定に必要な承認済みの監査、履歴、変更追跡エンティティを選択します。クエリ内の各ソース参照を、環境で利用可能な対応するエンティティまたはクエリに置き換えてください。
- 抽出範囲を設定します。[Start date parameter]、[End date parameter]、[Your company or legal entity filter]を適用してください。必要な工場、製品、オーダータイプ、ステータスの生産オーダーにクエリを限定します。作成、見積もり、スケジューリング、ピッキング、リリース、調整、開始、作業完了、完成報告、品質、終了、キャンセルを区別するために必要なソースのタイムスタンプを保持してください。
- Power Queryで、ソース列名とデータ型を標準化します。イベントのタイムスタンプを一貫した日時型に変換し、識別子、ステータス値、会社値、工場値、製品番号、ユーザー、数量、優先度を正規化します。ソースフィールドが利用できない場合は、値を推測せずnull値を返してください。ケース識別子には生産オーダー番号を使用します。
- アクティビティごとに1つのイベントテーブルを作成します。各テーブルでは、ProductionOrderNumber、ActivityName、EventTime、SourceSystem、LastDataUpdate、ProductionOrderStatus、PlannedStartDate、PlannedEndDate、UserId、ProductionPlant、ProductNumber、ProductionType、ActualQuantity、ProductionPriorityを返す必要があります。アクティビティ名は、必須の13個の名前のいずれかと一致する固定値にしてください。
- Production Order Adjustedは、承認済みの変更前後の履歴、監査、変更追跡ソースからのみ特定します。数量、予定日、ステータス、工場、製品、優先度などの関連フィールドを比較してください。該当する変更ごとに、記録された変更タイムスタンプを使用して調整行を出力します。現在の生産オーダースナップショットだけから調整を推測しないでください。
- 13個すべてのアクティビティテーブルをUNION ALLで結合します。生産オーダー番号がない行、またはイベントタイムスタンプがない行は削除します。ただし、正当な作業完了、調整、品質イベントの繰り返しは重複排除しないでください。ProductionOrderNumberとEventTimeで並べ替え、利用可能な場合は決定的な第2ソートキーを設定します。
- 結果のテーブルをPower BIに読み込むか、CSVまたはProcessMindが対応する別のイベントログ形式でエクスポートします。エクスポートするヘッダーが、ProductionOrderNumber、ActivityName、EventTime、SourceSystem、LastDataUpdate、ProductionOrderStatus、PlannedStartDate、PlannedEndDate、UserId、ProductionPlant、ProductNumber、ProductionType、ActualQuantity、ProductionPriorityと完全に一致することを確認してください。
- ProcessMindにアップロードする前に、必須の各アクティビティが明示的なイベントログ行として含まれていること、タイムスタンプのタイムゾーンが統一されていること、ProductionOrderNumberに値があること、LastDataUpdateが抽出の更新を示していることを確認します。ProcessMindはイベントログをそのまま読み込み、不足しているイベントを生成しません。
設定
- 接続:Dynamics 365環境で承認されたPower Queryコネクタと認証方式を使用します。[Your Dynamics 365 environment connection]と[Your credentials]は、組織で承認された値に置き換えてください。
- ソースエンティティ:環境で利用可能な生産オーダーヘッダー、作業またはルート、資材ピッキングまたはピッキングリスト、生産転記、品質オーダー、承認済みの監査または変更追跡エンティティを選択します。エンティティ名と利用可否は導入環境によって異なるため、メタデータブラウザーで確認してください。
- 日付範囲:まず3~6か月の範囲から始めます。可能な場合はソースでEventTimeフィルターを適用し、長期にわたる生産オーダーや過去のステータス遷移を検証する場合は範囲を広げてください。
- 会社と工場のフィルター:[Your company or legal entity filter]を適用し、必要に応じて生産工場のフィルターも適用します。環境に複数の法人があり、オーダー番号が重複する可能性がある場合は、汎用の会社フィルターを使用しないでください。
- 生産オーダーのフィルター:必要な生産オーダータイプ、製品、工場、ステータス、オーダー番号範囲でフィルターします。プロセス分析に必要な場合は、キャンセル済みまたは終了済みのオーダーを除外しないでください。
- イベントの取り込み:作業完了、資材ピッキング、品質、調整の繰り返しイベントを保持します。ログを生産オーダーごとに1行へ集約しないでください。
- タイムゾーン:すべてのソースタイムスタンプを、文書化した1つのタイムゾーンに変換します。ソースで提供されている場合は、元のタイムスタンプまたはタイムゾーンオフセットを保持してください。
- 更新メタデータ:すべての行のLastDataUpdateに、更新または抽出のタイムスタンプを設定します。データセット全体を1回の更新で抽出する場合は、1つの更新タイムスタンプを使用してもかまいません。
- パフォーマンス:日付、会社、工場、オーダーのフィルターをソース側に適用します。必要な列だけを選択し、不要なマージを避け、再利用するソースクエリをステージングし、大規模なデータセットでは増分更新を検討してください。
- 前提条件:Power BI Desktopまたは承認済みのPower Queryホスト、Dynamics 365環境へのネットワークアクセス、選択したすべてのエンティティに対する有効な読み取り権限、必要に応じてDynamics 365 Manufacturing、倉庫、品質、監査、変更追跡へのアクセス権が必要です。
- 設定に依存するデータ:必要なイベントソースが有効になっていない場合は、[Configure based on your system]を使用し、不足しているソースを記録してください。履歴イベントの代わりに現在のステータススナップショットを使用しないでください。
a サンプルクエリ sql
let
StartDate = #datetime(2026, 1, 1, 0, 0, 0),
EndDate = #datetime(2026, 6, 30, 23, 59, 59),
CompanyFilter = "[Your company or legal entity filter]",
SourceSystemValue = "Microsoft Dynamics 365 Manufacturing",
RefreshTime = DateTimeZone.RemoveZone(DateTimeZone.UtcNow()),
ProductionOrderHeader = [Your production order header query],
ProductionOrderOperation = [Your production order operation or route query],
MaterialPicking = [Your material picking or picking list query],
ProductionPosting = [Your production posting query],
QualityOrder = [Your quality order query],
ProductionOrderHistory = [Your approved production order audit or change tracking query],
Header = Table.SelectRows(ProductionOrderHeader, each [EventTime] >= StartDate and [EventTime] <= EndDate and [Company] = CompanyFilter),
Operations = Table.SelectRows(ProductionOrderOperation, each [EventTime] >= StartDate and [EventTime] <= EndDate and [Company] = CompanyFilter),
Picking = Table.SelectRows(MaterialPicking, each [EventTime] >= StartDate and [EventTime] <= EndDate and [Company] = CompanyFilter),
Posting = Table.SelectRows(ProductionPosting, each [EventTime] >= StartDate and [EventTime] <= EndDate and [Company] = CompanyFilter),
Quality = Table.SelectRows(QualityOrder, each [EventTime] >= StartDate and [EventTime] <= EndDate and [Company] = CompanyFilter),
History = Table.SelectRows(ProductionOrderHistory, each [EventTime] >= StartDate and [EventTime] <= EndDate and [Company] = CompanyFilter),
Created = Table.SelectRows(Header, each [EventType] = "Created" or [EventType] = "Firmed"),
Estimated = Table.SelectRows(Header, each [EventType] = "Estimated"),
Scheduled = Table.SelectRows(Operations, each [EventType] = "Scheduled"),
Picked = Table.SelectRows(Picking, each [EventType] = "Picked" or [EventType] = "Posted"),
Released = Table.SelectRows(Header, each [EventType] = "Released"),
Adjusted = Table.SelectRows(History, each [ChangedField] = "Quantity" or [ChangedField] = "PlannedStartDate" or [ChangedField] = "PlannedEndDate" or [ChangedField] = "Status" or [ChangedField] = "ProductionPlant" or [ChangedField] = "ProductNumber" or [ChangedField] = "ProductionPriority"),
Started = Table.SelectRows(Posting, each [EventType] = "Started"),
OperationCompleted = Table.SelectRows(Operations, each [EventType] = "Completed"),
ReportedFinished = Table.SelectRows(Posting, each [EventType] = "Reported as finished" or [EventType] = "Finished"),
QualityGenerated = Table.SelectRows(Quality, each [EventType] = "Generated" or [EventType] = "Created"),
QualityPassed = Table.SelectRows(Quality, each [EventType] = "Passed" or [EventType] = "Validated"),
Ended = Table.SelectRows(Header, each [EventType] = "Ended"),
Cancelled = Table.SelectRows(Header, each [EventType] = "Cancelled"),
ToEvent = (InputTable as table, Activity as text) as table =>
let
Selected = Table.SelectColumns(InputTable, {"ProductionOrderNumber", "EventTime", "ProductionOrderStatus", "PlannedStartDate", "PlannedEndDate", "UserId", "ProductionPlant", "ProductNumber", "ProductionType", "ActualQuantity", "ProductionPriority"}, MissingField.UseNull),
Named = Table.AddColumn(Selected, "ActivityName", each Activity, type text),
Source = Table.AddColumn(Named, "SourceSystem", each SourceSystemValue, type text),
Updated = Table.AddColumn(Source, "LastDataUpdate", each RefreshTime, type datetime),
Ordered = Table.ReorderColumns(Updated, {"ProductionOrderNumber", "ActivityName", "EventTime", "SourceSystem", "LastDataUpdate", "ProductionOrderStatus", "PlannedStartDate", "PlannedEndDate", "UserId", "ProductionPlant", "ProductNumber", "ProductionType", "ActualQuantity", "ProductionPriority"}),
Valid = Table.SelectRows(Ordered, each [ProductionOrderNumber] <> null and [ProductionOrderNumber] <> "" and [EventTime] <> null)
in
Valid,
EventsCreated = ToEvent(Created, "Production Order Created"),
EventsEstimated = ToEvent(Estimated, "Production Order Estimated"),
EventsScheduled = ToEvent(Scheduled, "Production Order Scheduled"),
EventsPicked = ToEvent(Picked, "Materials Picked For Production"),
EventsReleased = ToEvent(Released, "Production Order Released"),
EventsAdjusted = ToEvent(Adjusted, "Production Order Adjusted"),
EventsStarted = ToEvent(Started, "Production Started"),
EventsOperationCompleted = ToEvent(OperationCompleted, "Operation Completed"),
EventsReportedFinished = ToEvent(ReportedFinished, "Production Reported As Finished"),
EventsQualityGenerated = ToEvent(QualityGenerated, "Quality Order Generated"),
EventsQualityPassed = ToEvent(QualityPassed, "Quality Inspection Passed"),
EventsEnded = ToEvent(Ended, "Production Order Ended"),
EventsCancelled = ToEvent(Cancelled, "Production Order Cancelled"),
EventLog = Table.Combine({EventsCreated, EventsEstimated, EventsScheduled, EventsPicked, EventsReleased, EventsAdjusted, EventsStarted, EventsOperationCompleted, EventsReportedFinished, EventsQualityGenerated, EventsQualityPassed, EventsEnded, EventsCancelled}),
Typed = Table.TransformColumnTypes(EventLog, {{"ProductionOrderNumber", type text}, {"ActivityName", type text}, {"EventTime", type datetime}, {"SourceSystem", type text}, {"LastDataUpdate", type datetime}, {"ProductionOrderStatus", type text}, {"PlannedStartDate", type datetime}, {"PlannedEndDate", type datetime}, {"UserId", type text}, {"ProductionPlant", type text}, {"ProductNumber", type text}, {"ProductionType", type text}, {"ActualQuantity", type number}, {"ProductionPriority", type text}}),
Sorted = Table.Sort(Typed, {{"ProductionOrderNumber", Order.Ascending}, {"EventTime", Order.Ascending}, {"ActivityName", Order.Ascending}})
in
Sorted 始める準備はできていますか
この詳細なテンプレートがあれば、生産計画データの抽出と分析を始めるために必要なものがそろいます。今日から業務を最適化し、効率を高めてください。
効率を最大化:今すぐ生産計画を効率化
ボトルネックを特定し、生産サイクルタイムを30%以上短縮します。
クレジットカードは不要です。数分で設定できます。