輸送管理データテンプレート
輸送管理データテンプレート
- 収集を推奨する項目
- 追跡すべき主要アクティビティ
- 抽出の手引き
輸送管理属性
| 名前 | 説明 | ||
|---|---|---|---|
| アクティビティ名 ActivityName | 出荷の輸送プロセス内で発生した特定のイベントまたはマイルストーンの名前です。 | ||
| 説明 この属性は、「出荷計画済み」、「商品集荷済み」、「商品配送済み」など、輸送ライフサイクルにおける単一のステップを記述します。各アクティビティは、出荷を完了に近づける個別のビジネスイベントを表します。 これらのアクティビティの順序と期間を分析することがプロセスマイニングの核心です。これにより、実際のプロセスフローの発見、ステップ間のボトルネックの特定、標準作業手順への順守の測定が可能になります。アクティビティフローの変動は、例外、手戻り、または最適な経路からの逸脱を浮き彫りにすることができます。 その重要性 プロセスマップ内のステップを定義し、貨物の移動、ボトルネック、および逸脱の視覚化と分析を可能にします。 取得元 この情報は、Oracle Transportation Management内の追跡イベントテーブルまたはステータス変更ログから導出されます。特定の活動名は、イベントコードと説明から連結される場合があります。 例 出荷計画済み貨物集荷済み通関済み商品配送済み | |||
| イベント日時 EventTime | 特定の輸送アクティビティまたはイベントが発生した正確な日時です。 | ||
| 説明 このタイムスタンプは、「運送業者割り当て済み」や「配送証明受領済み」などのアクティビティがシステムに記録された正確な瞬間を示します。タイムスタンプは、各出荷のイベントの時系列順序を確立するため、プロセスマイニングにとって不可欠です。 これらのタイムスタンプの精度は、すべての時間ベースの分析にとって重要です。これらはアクティビティ間のサイクル時間を計算し、プロセス期間を測定し、遅延を特定し、サービスレベル契約に対するパフォーマンスを評価するために使用されます。イベント時間を分析することで、プロセス内で時間がどこで失われているかを特定するのに役立ちます。 その重要性 このタイムスタンプは、イベントを時系列で並べ、サイクル時間や遅延などのすべてのパフォーマンスメトリックを計算するために不可欠です。 取得元 OTMの追跡イベントまたはステータス履歴テーブル内のイベントに関連付けられたタイムスタンプフィールドから取得されます。 例 2023-10-26T08:00:00Z2023-10-27T14:30:00Z2023-10-28T09:15:00Z | |||
| 出荷 ShipmentId | 単一の出荷を識別する一意の識別子であり、関連するすべての輸送アクティビティを追跡するための主要なケースIDとして機能します。 | ||
| 説明 出荷IDは、荷送人から荷受人への単一の貨物移動を一意に識別します。この属性はプロセス分析の基礎であり、計画、予約、集荷、輸送、配送、請求などの関連するすべてのイベントを単一のケースにグループ化します。 プロセスマイニングでは、出荷IDごとにイベントを分析することで、輸送ライフサイクル全体の完全なエンドツーエンドビューが可能になります。これにより、総サイクル時間、納期遵守パフォーマンス、出荷あたりのコストなどの主要なメトリクスを計算し、プロセスの効率と顧客サービスレベルを包括的に理解することができます。 その重要性 これは、すべてのプロセスステップを結びつけ、個々の出荷ごとの輸送プロセス全体を完全に分析することを可能にする、不可欠なケースIDです。 取得元 これはOracle Transportation Managementの主キーであり、通常は出荷または注文管理テーブルで見つかります。特定のテーブル名とフィールド名については、OTMのドキュメントを参照してください。 例 SH-0012345SH-0012346SH-0012347 | |||
| 出荷費用 ShipmentCost | 出荷の輸送にかかった総運賃または請求された財務金額です。 | ||
| 説明 この属性は、運送業者料金、燃料サーチャージ、その他の付帯料金を含む、出荷に関連する総財務費用を表します。これは、輸送プロセスの財務パフォーマンスを測る主要な指標です。 出荷費用を分析することで、出荷あたりの平均運送業者コストKPIの計算が可能になります。運送業者、ルート、輸送モード、または出荷タイプ別にセグメント化することで、コスト削減の機会を特定できます。また、運賃請求の不一致分析においても、計画と実際のコストを比較するために使用されます。 その重要性 輸送費を分析し、コスト削減の機会を特定し、プロセス非効率の財務的影響を測定するために必要な財務データを提供します。 取得元 この情報は通常、OTMの出荷における財務または原価計算セクションで見つかり、多くの場合、運賃評価と決済後に設定されます。 例 250.751200.00545.50 | |||
| 希望納期 RequestedDeliveryDate | 顧客によって要求された、またはサービスレベル契約(SLA)の目標として合意された配送日時です。 | ||
| 説明 この属性は、出荷の目標配送タイムスタンプを捕捉します。これは顧客へのコミットメントを表し、納期遵守パフォーマンスを測定するための主要なベンチマークとして機能します。 プロセスマイニングでは、この日付が実際の配送タイムスタンプ(「商品配送済み」アクティビティから取得)と比較され、出荷が納期通りであったか遅延したかが判断されます。これは納期遵守率KPIの基礎であり、配送パフォーマンス概要ダッシュボードにとって不可欠です。逸脱を分析することで、遅延の体系的な原因を特定し、顧客満足度を向上させるのに役立ちます。 その重要性 これは、納期遵守パフォーマンスを測定するための主要なベンチマークであり、顧客満足度と卓越した運用にとって重要なKPIです。 取得元 この情報は通常、OTM内の注文または出荷レベルに保存され、多くの場合、配送日や予約に関連するフィールドにあります。 例 2023-11-15T17:00:00Z2023-11-20T12:00:00Z2023-11-22T09:00:00Z | |||
| 輸送モード TransportationMode | 出荷に使用される輸送方法で、トラック、鉄道、海上、航空などが含まれます。 | ||
| 説明 この属性は、出荷を輸送モードによって分類します。一般的なモードには、トラック貸切便(FTL)、混載便(LTL)、海上、航空、鉄道などがあります。これは、コスト、輸送時間、複雑さに影響を与える出荷の基本的な特性です。 分析において、輸送モードはセグメンテーションのための重要な要素です。これにより、異なるモード間のプロセスパフォーマンスとコストを比較できます。例えば、どのモードが輸送中の遅延により発生しやすいか、または1マイルあたりのコストが高いかを特定するのに役立ち、物流ネットワークに関する戦略的な意思決定を支援します。 その重要性 輸送モード(トラック、航空、海上、鉄道物流)別にパフォーマンスとコスト分析をセグメント化し、各モードに特化した洞察を明らかにすることを可能にします。 取得元 これはOTMの出荷レベルにおける標準的な属性であり、多くの場合、専用の「モード」または「輸送タイプ」フィールドで見つかります。 例 FTLLTL海上貨物航空貨物 | |||
| 遅延理由 DelayReason | 貨物の進行における遅延の原因を説明するコードまたは記述です。 | ||
| 説明 出荷が遅延した場合、この属性は「天候」、「通関保留」、「港湾混雑」、「機械故障」などの理由を提供します。この情報は、OTMでの運送業者からの更新または手動入力から取得されます。 この属性は、遅延配送の根本原因分析に不可欠です。遅延理由を分類しカウントすることで、企業はサプライチェーンにおける最も頻繁な問題を特定できます。これにより、特定のルートにより信頼性の高い運送業者を選定したり、通関を加速するために書類を改善したりするなど、的を絞った改善イニシアチブが可能になります。 その重要性 遅延出荷の根本原因に関する重要な洞察を提供し、一般的な問題を軽減し、納期遵守率を改善するための的を絞った対策を可能にします。 取得元 通常、OTM内の追跡イベント詳細に記録されます。特定の例外または遅延イベントコードに関連付けられている場合があります。 例 天候遅延税関検査港湾混雑交通渋滞 | |||
| 運送業者名 CarrierName | 出荷品の輸送を担当する運送業者またはサービスプロバイダーの名前です。 | ||
| 説明 この属性は、貨物の輸送を実行するために割り当てられた物流パートナーを識別します。例としては、主要な運送会社、地元の宅配業者、または外航船会社が含まれます。 運送業者ごとのパフォーマンス分析は、輸送プロセスマイニングの主要な目標です。この属性により、出荷をセグメント化して、納期遵守率、出荷あたりのコスト、輸送時間、遅延や請求の不一致などの問題の頻度といった指標で運送業者を比較できます。これらの洞察は、運送業者選定、契約交渉、およびパフォーマンス管理にとって不可欠です。 その重要性 異なる運送会社間のパフォーマンスベンチマークを可能にし、運送会社の選定、交渉、コスト削減の最適化に不可欠です。 取得元 OTM内の出荷詳細で、割り当てられた運送会社またはサービスプロバイダーの記録からリンクされています。出荷およびサービスプロバイダーに関連するテーブルに保存されている場合があります。 例 FedEx FreightUPS Supply Chain SolutionsMaersk LineKnight-Swift Transportation | |||
| エンドツーエンドサイクルタイム EndToEndCycleTime | 最初の輸送依頼から最終的な商品配送までの、出荷の総期間です。 | ||
| 説明 この計算されたメトリックは、出荷ケースの総経過時間を測定します。通常、「輸送要求受領」アクティビティと「商品配送済み」アクティビティ間の時間差として計算されます。 この属性は、平均エンドツーエンドサイクル時間KPIの基礎となります。これは、輸送プロセス全体の効率性を包括的に測定するものです。この期間を分析することで、長期化している出荷を特定し、プロセス改善イニシアチブの影響を測定するためのベースラインを提供します。 その重要性 プロセス全体の速度を示す単一かつ重要な指標を提供し、長期化している出荷を特定し、時間の経過とともに改善を追跡するのに役立ちます。 取得元 この属性はソースシステムにはありません。プロセスマイニング分析またはデータ変換中にケースレベルで計算されます。 例 5日4時間12日8時間30分2 days 1 hour | |||
| ソースシステム SourceSystem | イベントデータがどこから発生したか、例えばOracle Transportation Managementなどのシステムを特定します。 | ||
| 説明 この属性は、データが生成されたソースアプリケーションを指定します。複雑な物流環境では、データはOTM、倉庫管理システム(WMS)、EDIを介した運送業者のシステム、またはその他の統合プラットフォームから提供される場合があります。 ソースシステムを理解することは、データガバナンス、品質評価、およびトラブルシューティングにとって重要です。データのコンテキストを理解し、データ粒度や適時性のばらつきを説明するのに役立ちます。分析では、特定の信頼できるシステムのみから発生するイベントをフィルタリングするために使用できます。 その重要性 データの出所に関する重要なコンテキストを提供します。これは、データの検証やマルチシステム環境での分析にとって重要です。 取得元 これは通常、データ抽出プロセス中に、レコードの出所を示すために追加される静的な値です。 例 Oracle OTMOTM CloudSAP TM | |||
| ユーザー名 UserName | 特定のアクティビティを実行した、または責任を負うユーザーの名前またはIDです。 | ||
| 説明 この属性は、「出荷計画済み」や「運送業者割り当て済み」など、特定のイベントを実行した個別のユーザーまたはシステムエージェントを識別します。この情報は、プロセスにおけるリソースの関与について説明責任と洞察を提供します。 プロセスマイニングでは、ユーザー別にアクティビティを分析することで、作業負荷の分散を理解し、トレーニングニーズを特定し、異なるユーザーやチームのパフォーマンスを比較するのに役立ちます。また、手動で実行されたアクティビティとシステムによって自動的に実行されたアクティビティを区別するためにも使用できます。 その重要性 個々のユーザーやチームごとの作業負荷とパフォーマンスの分析を可能にし、説明責任を明確にします。 取得元 OTMの履歴またはログテーブル内のステータス変更やイベントに関連付けられたユーザーIDフィールド(例: INSERT_USER)から取得されます。 例 JSMITHLOGISTICS_PLANNER_ASYSTEM_AUTO | |||
| 仕向国 DestinationCountry | 出荷が配送される予定の国です。 | ||
| 説明 この属性は、荷受人の所在地に基づいて、出荷の最終仕向国を特定します。これは、地理的なプロセス分析において出発国を補完します。 出発地と同様に、仕向国別に分析することは、さまざまな貿易ルートにおけるパフォーマンスの違いを理解するために不可欠です。特に、通関時間、ラストマイル配送パフォーマンス、および地域固有の運送業者の有効性を分析する上で重要です。これにより、異なる仕向市場の要件に合わせて物流戦略を調整するのに役立ちます。 その重要性 特定の貿易ルートにおけるパフォーマンスを分析し、仕向地市場での通関、運送会社、規制に関連する課題を理解するために不可欠です。 取得元 OTMのロケーションマスターデータに保存されている、貨物の目的地または荷受人の住所詳細から派生します。 例 CANFRAJPNBRA | |||
| 最終データ更新 LastDataUpdate | このイベントのデータがソースシステムから最後に更新または抽出されたことを示すタイムスタンプです。 | ||
| 説明 この属性は、Oracle Transportation Managementからデータが最後に取得された日時を記録します。これはビジネスイベントが発生した時刻ではなく、分析されているデータの鮮度を反映します。 このタイムスタンプは、プロセスマイニング分析の適時性を理解するために不可欠です。ユーザーがリアルタイムの情報を見ているのか、特定の時点のスナップショットを見ているのかを知るのに役立ちます。データ更新サイクルを管理し、意思決定が最新の情報に基づいていることを確認するために不可欠です。 その重要性 データの鮮度を示し、ユーザーが分析の現時点での状況と次回のデータ更新がいつ予定されているかを認識できるようにします。 取得元 これは通常、データ取り込みまたはETLプロセス中に追加されるシステム生成のタイムスタンプです。 例 2023-11-01T02:00:00Z2023-11-02T02:00:00Z | |||
| 出荷ステータス ShipmentStatus | 「計画済み」、「輸送中」、「配送済み」など、出荷のライフサイクルにおける全体的な現在のステータスです。 | ||
| 説明 この属性は、出荷が全体プロセスの中でどこにあるかを示す大まかな概要を提供します。時点のイベントであるアクティビティとは異なり、ステータスは出荷ケースの状態を表します。 プロセスマイニングはアクティビティの流れに焦点を当てますが、全体的なステータスはケースのフィルタリングやダッシュボードでのコンテキスト提供に役立ちます。例えば、分析では「完了済み」の出荷のみに焦点を当てたり、なぜ多くの出荷が「輸送中」ステータスで異常に長く滞留しているのかを調査したりすることができます。 その重要性 出荷の進捗状況を大まかに把握でき、分析においてケースをフィルタリングしたりセグメント化したりするのに役立ちます。 取得元 OTMの主要な出荷記録で利用可能であり、ワークフローにおける現在の状態を表します。 例 計画済みBOOKED輸送中配達済み | |||
| 出荷タイプ ShipmentType | サービスレベル、商品タイプ、事業単位などによる貨物の分類です。 | ||
| 説明 この属性は、出荷のビジネス固有の分類を提供します。例えば、「標準」、「速達」、「危険物」、「会社間」などです。この分類は、異なるビジネスルール、優先順位、または分析ビューを適用するのに役立ちます。 プロセスマイニングで「出荷タイプ」をディメンションとして使用することで、異なる種類の出荷のプロセスを比較できます。これにより、特定のタイプが遅延を起こしやすいか、コストが高いか、または非標準的なプロセス経路をたどるかどうかが明らかになります。これらの洞察は、各出荷タイプの特定のニーズにより良く対応するためにプロセスを調整するのに役立ちます。 その重要性 ビジネスコンテキストに基づいて分析をセグメント化することが可能になり、異なる種類の貨物が異なるプロセスに従っているか、または異なるパフォーマンスレベルを持っているかを理解するのに役立ちます。 取得元 これは通常、OTMの出荷または注文レコード上の構成可能なフィールドまたは属性です。 例 標準緊急処理国際国内 | |||
| 定時配送か IsOnTimeDelivery | 貨物が希望配送日以前に配達されたかどうかを示す計算済みのフラグです。 | ||
| 説明 このブール属性は、「商品配送済み」アクティビティのタイムスタンプを「Requested Delivery Date」と比較して導き出されます。配送が定刻または早かった場合は「true」、遅延した場合は「false」となります。 この属性は納期遵守率KPIを直接支え、配送パフォーマンス概要ダッシュボードの主要な構成要素です。各出荷について明確な二値の結果を提供することで、配送パフォーマンスの分析を簡素化し、定刻配送と遅延配送を容易にフィルタリング、集計、可視化できます。 その重要性 この計算されたフラグは、納期遵守KPIの測定を簡素化し、納期通りと遅延出荷の容易なフィルタリングと分析を可能にします。 取得元 この属性はソースシステムにはありません。「商品配送済み」アクティビティのタイムスタンプを「RequestedDeliveryDate」属性と比較することで、データ変換中に計算されます。 例 truefalse | |||
| 発信国 OriginCountry | 出荷の旅が始まる国です。 | ||
| 説明 この属性は、荷送人の所在地に基づいて、出荷の出発国を指定します。これは、物流分析に使用される地理情報の重要な要素です。 出発国別にプロセスを分析することは、パフォーマンスの地域差を理解するのに役立ちます。例えば、通関時間、運送業者コスト、輸送期間は、出発国によって大きく異なる場合があります。このセグメンテーションは、国際物流を管理し、地域固有のボトルネックを特定するために不可欠です。 その重要性 輸送プロセスの地理的分析を可能にし、地域固有のボトルネック、コスト、パフォーマンスの変動を特定するのに役立ちます。 取得元 OTMのロケーションマスターデータに保存されている、貨物の発地または荷送人の住所詳細から派生します。 例 米国DEUCHNMEX | |||
| 経路変更されたか IsRerouted | 最初の予約後に貨物の経路が変更されたかどうかを示すフラグです。 | ||
| 説明 この属性は、出荷が計画および予約された後に重要な再ルーティングイベントが発生した場合に「true」に設定されるブールフラグです。これは、顧客の要求、予期せぬ混乱、または最適化の機会が原因である可能性があります。 この属性は、出荷再ルーティング率KPIおよび再ルーティングと緊急対応の洞察ダッシュボードを直接サポートします。再ルーティングの頻度を追跡することは、計画または実行における根本的な問題を特定するのに役立ちます。これは運用上の不安定性と関連コストを浮き彫りにし、管理者が高価で破壊的な変更を最小限に抑える方法を見つけることを可能にします。 その重要性 経路変更などの運用上の例外の頻度と影響を定量化するのに役立ち、計画および実行プロセスにおける非効率性を浮き彫りにします。 取得元 このフラグは、イベントログ内の特定の再ルーティングイベントを検出するか、最終ルートを初期計画ルートと比較することで導き出されます。 例 truefalse | |||
| 通関業者 CustomsAgent | 出荷の通関手続きを管理する責任を負う通関業者または代理店です。 | ||
| 説明 国際貨物の場合、この属性は通関書類と手続きを担当する第三者代理店または社内チームを特定します。この代理店のパフォーマンスは、全体の輸送時間に大きな影響を与える可能性があります。 通関業者別の通関サイクルタイムを分析することは、彼らのパフォーマンスをベンチマークするのに役立ちます。特定の国や特定の商品タイプでどの代理店が最も効率的であるかを特定できます。この洞察は、最適な通関パートナーを選択し、パフォーマンスの低い代理店と協力してプロセスを改善するために貴重です。 その重要性 通関ブローカーのパフォーマンス測定を可能にし、最も効率的なパートナーを特定し、通関関連の遅延を削減するのに役立ちます。 取得元 この情報は、OTMの国際出荷詳細において、サービスプロバイダーまたは当事者としての役割で保存される場合があります。 例 グローバル通関サービスLivingston InternationalFlexport | |||
| 運賃請求書の不一致 FreightBillDiscrepancy | 運賃請求書の監査中に不一致が発見されたかどうかを示すフラグです。 | ||
| 説明 このブール属性は、運送業者から受領した運賃請求書がOTMで計算された予想コストと一致しない場合に「true」に設定されます。不一致は、誤った料金、付帯料金、またはその他の請求エラーから生じる可能性があります。 この属性は、運賃請求不一致率KPIの基礎となります。運送業者、ルート、または出荷タイプ別にこれらのフラグの頻度を分析することは、請求エラーの根本原因を特定するのに役立ちます。これは、データ精度の向上、監査プロセスの合理化、および過払いの防止に向けた取り組みを支援します。 その重要性 請求エラーのある貨物にフラグを立てることで、運賃請求の不一致分析を直接サポートし、過払い金の削減と財務管理の改善に貢献します。 取得元 これは通常、OTM内の運賃決済および請求書照合プロセス中に設定されるステータスまたはフラグです。 例 truefalse | |||
輸送管理アクティビティ
| アクティビティ | 説明 | ||
|---|---|---|---|
| 出荷計画済み | このアクティビティは、OTM計画エンジンによって1つまたは複数の注文リリースが実行可能な出荷として正常に計画されたことを表します。これは、システムが出荷のステータスを「計画済み」、例えば「PLANNING_PLANNED FINAL」に変更したときに記録されます。 | ||
| その重要性 これは、需要フェーズと実行フェーズを分ける重要なマイルストーンです。このアクティビティまでの時間を分析することで、計画の効率とエンジンパフォーマンスのボトルネックを特定するのに役立ちます。 取得元 SHIPMENTテーブルのShipmentオブジェクトのステータス履歴から推測されます。計画完了を示すステータスへの変更を探します。 取得 SHIPMENT.SHIPMENT_STATUS_VALUE_GIDが「計画済み」ステータスに変更されたタイムスタンプを特定します。 イベントタイプ inferred | |||
| 商品配送済み | このアクティビティは、出荷品が最終目的地の荷受人に正常に配送されたことを表します。これは、出荷の最終停止地点に実際の到着時刻がマークされたときに記録されます。 | ||
| その重要性 これは、納期遵守パフォーマンスとエンドツーエンドのサイクル時間を測定するための主要なマイルストーンです。輸送実行プロセスの集大成となります。 取得元 貨物に関連付けられたSHIPMENT_STOPテーブルの最終ストップレコードにおけるACTUAL_ARRIVALフィールドの入力から推測されます。 取得 出荷の イベントタイプ inferred | |||
| 支払処理済み | これは最終アクティビティであり、運送業者へのサービス料金の支払いが正常に処理されたことを表します。このイベントは出荷の財務的締めくくりを示します。 | ||
| その重要性 このアクティビティは輸送ライフサイクルを締めくくります。運送業者への支払い処理時間を測定し、運送業者との関係を効果的に管理するために不可欠です。 取得元 関連するバウチャーまたは請求書のステータスが「支払い済み」に移行したことから推測されます。このデータはVOUCHERまたはBILLテーブルにあります。 取得 VOUCHER.VOUCHER_STATUS_IDが「支払い済み」に変更されたタイムスタンプを特定します。 イベントタイプ inferred | |||
| 貨物集荷済み | このアクティビティは、運送業者が発送元から貨物を集荷したときの物理的輸送の開始を示します。このイベントは、出荷の最初の停止地点が「DEPARTED」とマークされたときに取得されます。 | ||
| その重要性 これは輸送中フェーズの始まりを示す重要なマイルストーンです。運送業者の集荷パフォーマンスと実際の輸送時間を追跡するために不可欠です。 取得元 SHIPMENT_STOPテーブルの最初のストップのステータスが「出発済み」に変更されたこと、または集荷を示す出荷ステータスイベントを追跡することから推測されます。 取得 出荷の イベントタイプ inferred | |||
| 輸送要求受領 | このアクティビティは、通常は注文リリースとして、システム内で輸送ニーズが作成されたことを示します。このイベントは、Oracle Transportation Managementで新しい注文リリースレコードが作成されたときに取得され、出荷の初期需要を表します。 | ||
| その重要性 プロセスにおける出発点として、この活動はエンドツーエンドの総サイクルタイムを測定し、需要パターンを理解するために不可欠です。依頼から計画までの時間を分析するのに役立ちます。 取得元 これは、 取得
イベントタイプ explicit | |||
| 配送証明を受領 | これは、署名済み文書など、配送が完了したことの正式な確認の受領と記録を表します。これは多くの場合、出荷に添付される特定の文書タイプとして記録されます。 | ||
| その重要性 貨物受領書(POD)は請求処理や紛争解決に不可欠です。その受領を追跡することで、プロセスのコンプライアンスを確保し、財務決済サイクルを加速できます。 取得元 これは明示的なイベントであるか、出荷にリンクされたPODドキュメントの作成日から推測される場合があります。 取得 出荷に関連付けられた「POD」ドキュメントタイプの作成タイムスタンプを使用してください。 イベントタイプ explicit | |||
| 出荷キャンセル済み | 計画された出荷が途中で中止され、そのライフサイクルが早期に終了したことを示します。これは、出荷オブジェクトのステータスが「キャンセル済み」に変更されたときに記録されます。 | ||
| その重要性 キャンセルを追跡することは、プロセス例外や失敗を理解するために重要です。これにより、需要の変化や計画エラーなど、キャンセルの理由を特定するのに役立ちます。 取得元 SHIPMENTテーブルのShipmentオブジェクトのステータス履歴から推測されます。「PLANNING_CANCELED」のようなステータスへの変更を探します。 取得 SHIPMENT.SHIPMENT_STATUS_VALUE_GIDが「キャンセル済み」ステータスに変更されたタイムスタンプを特定します。 イベントタイプ inferred | |||
| 出荷予約済み | 運送業者との正式な予約確認を表し、入札が成功した後に行われます。これは通常、出荷ステータスが「SECURE RESOURCES_BOOKED」またはそれに相当するステータスに更新されたときに記録されます。 | ||
| その重要性 これは運送業者からのコミットメントを確認し、出荷を正式に実行フェーズに移行させます。出荷計画サイクル時間KPIを測定するための重要なステップです。 取得元 SHIPMENTテーブルのShipmentオブジェクトのステータス変更から推測され、運送会社が割り当てられた後に確定済みまたは予約済みのステータスに移行した時期を追跡します。 取得 SHIPMENT.SHIPMENT_STATUS_VALUE_GIDが「予約済み」ステータスに変更されたタイムスタンプを特定します。 イベントタイプ inferred | |||
| 出荷輸送中 | 貨物が集荷され、現在目的地へ向かって積極的に移動中であることを示します。これは単一の時間点ではなく、「貨物集荷済み」活動の直後にこの状態の開始が捕捉されます。 | ||
| その重要性 このアクティビティは、輸送フェーズの開始を示します。これは配送の進捗状況を監視し、輸送中の遅延を特定するために不可欠です。「輸送中遅延ホットスポット」ダッシュボードの基盤となります。 取得元 これは「商品集荷済み」と同じイベントですが、新しいフェーズの開始を示すためにプロセスモデルではしばしば別のアクティビティとして表されます。最初の停止地点の出発から導出されます。 取得 「商品集荷済み」と同じです:最初の イベントタイプ inferred | |||
| 通関済み | 国際貨物の場合、この活動は商品が国境または港で通関を無事に通過した時点を表します。これは通常、特定の出荷イベントまたはステータス更新を通じて捕捉されます。 | ||
| その重要性 通関は国際物流における大きな遅延の一般的な原因です。この活動を追跡することで、通関サイクルタイムを測定し、最適化するのに役立ちます。 取得元 このイベントは通常、手動で入力された、または統合された「通関」出荷イベントを介して取得されます。 取得 SHIPMENT_STATUSテーブルから「通関済み」イベントのタイムスタンプを特定します。 イベントタイプ explicit | |||
| 運賃請求書が監査された | このアクティビティは、運送業者の請求書が出荷詳細と照合・検証される運賃請求監査プロセスの完了を示します。出荷の請求ステータスが「VOUCHER_AUDITED」または同様の状態に移行したときに記録されます。 | ||
| その重要性 監査は財務管理と請求の不一致を特定するために不可欠です。この活動を分析することで、監査から支払いまでのプロセスを効率化し、「運賃請求書の不一致率」KPIをサポートします。 取得元 貨物に関連付けられたBillオブジェクトのステータス変更から推測されます。監査完了に関連するステータス更新については、BILLテーブルを確認してください。 取得 BILL.BILL_STATUS_VALUE_GIDが「監査済み」ステータスに変更されたタイムスタンプを特定します。 イベントタイプ inferred | |||
| 運送会社が割り当てられた | これは、出荷が特定の運送業者に入札され、承諾された時点を示します。これは、出荷の入札ステータスが「TENDER_ACCEPTED」または同様の状態に変化したことを観察することによって取得されます。 | ||
| その重要性 これを追跡することは、運送業者の選定と入札プロセスの効率性を分析するのに役立ちます。ここでの遅延は、出荷が移動を開始する前に全体的なスケジュールに大きな影響を与える可能性があります。 取得元 SHIPMENT_TENDERテーブルのステータス履歴から推測され、特にステータスが運送会社による受諾を示したタイムスタンプを探します。 取得 出荷の入札履歴における「TENDER_ACCEPTED」へのステータス変更のタイムスタンプを使用してください。 イベントタイプ inferred | |||
| 配送予約がスケジュールされた | このアクティビティは、荷受人との特定の配送日時がスケジュールされたことを示します。このイベントは、出荷の最終停止地点における予約データから取得されます。 | ||
| その重要性 これは最終配送を調整する上で重要なステップです。到着から予定配送までの時間を分析することで、ラストマイルオペレーションにおけるボトルネックを明らかにできます。 取得元 SHIPMENT_STOPテーブルにある、貨物の最終ストップ(配送場所)の予約日時フィールドの入力から推測されます。 取得 配送停止地点の予約フィールドが最初に設定されたときのタイムスタンプを使用してください。 イベントタイプ inferred | |||
| 集荷予約が設定されました | このアクティビティは、集荷の特定の日時がスケジュールされ、記録されたことを示します。これは多くの場合、出荷の停止レベルにおける予約関連データから取得されます。 | ||
| その重要性 予約のスケジュール設定は重要な調整ステップです。これを分析することで、スケジューリングの効率性と、集荷の定時性への影響を理解できます。 取得元 SHIPMENT_STOPテーブルにある、貨物の最初のストップ(集荷場所)の予約日時フィールドの入力から推測されます。 取得 集荷停止地点の予約フィールドが最初に設定されたときのタイムスタンプを使用してください。 イベントタイプ inferred | |||
抽出ガイド
ステップ
- BI Publisherへのアクセス: Oracle Transportation Management (OTM) にログインします。「ビジネスプロセス自動化(Business Process Automation)」から「レポート(Reporting)」を選択し、「レポートマネージャー(Report Manager)」をクリックして、Oracle BI Publisherのインターフェースを開きます。
- データモデルの作成: BI Publisherで「新規(New)」ボタンをクリックし、「データモデル(Data Model)」を選択します。データモデルエディタが開き、レポートのデータソースを定義できるようになります。
- SQLクエリの定義: データモデルエディタ内で、データセット図のプラスアイコンをクリックし、「SQLクエリ」を選択します。データセット名(例: 「OTM_Process_Mining_DS」)を入力し、データソースにOTMデータベースを選択します。本ドキュメントの「query」セクションにあるSQLクエリをすべてコピーし、SQLクエリのテキストボックスに貼り付けます。
- パラメータの追加: クエリ内の日付範囲とドメイン名のパラメータ(:P_START_DATE, :P_END_DATE, :P_DOMAIN_NAME)は、BI Publisherによって自動的に検出されます。日付パラメータのデータ型を「Date」に設定するなど、必要に応じてプロパティを構成してください。
- データモデルの保存: 保存アイコンをクリックします。BI Publisherカタログ内の保存先を選択し、「OTM Shipment Process Extraction」などの分かりやすい名前を付けて保存します。
- レポートの作成: カタログに戻り、「新規(New)」から「レポート(Report)」を選択します。レポート作成ウィザードで「データモデルの使用(Use Data Model)」を選択し、先ほど保存したデータモデルを指定します。
- レポートレイアウトの構成: ウィザードに従ってレイアウトを作成します。形式はシンプルな「表(Table)」で十分です。データセットのすべての列をテーブルにドラッグ&ドロップしてください。グループ化や集計は行わないでください。
- レポートの保存: レイアウト構成後、最終ステップに進んでレポートを保存します。データモデルと同様の名前を付けてください。
- レポートの実行: 作成したレポートを開きます。パラメータ(開始日、終了日、ドメイン名)の入力画面が表示されるので、抽出したい範囲を入力します。
- データの出力: レポートが実行されデータが表示されたら、「アクション(Actions)」メニューから「エクスポート(Export)」を選択し、CSV形式を選びます。これにより、イベントログを含むCSVファイルがダウンロードされます。
- アップロードの準備: ダウンロードしたCSVファイルを開き、列見出しが必須属性(
ShipmentId,ActivityName,EventTime)および推奨属性と一致していることを確認します。EventTime列が統一された日時形式であることを確認すれば、ProcessMindへのアップロード準備は完了です。
設定
- データソース: クエリは、通常 GLOGOWNER という名称の主要なOTM運用データベーススキーマに対して実行する必要があります。
- レポートパラメータ:
P_START_DATE: レポート対象期間の開始日。形式は「YYYY-MM-DD」としてください。P_END_DATE: レポート対象期間の終了日。形式は「YYYY-MM-DD」としてください。P_DOMAIN_NAME: データを抽出する特定のOTMドメイン。「[Your Domain Name]」に置き換えて使用してください。
- 日付範囲: 初回分析では、データ量とパフォーマンスのバランスを考慮し、3〜6ヶ月分のデータを抽出することをお勧めします。本運用では、月次または四半期ごとのバッチでの抽出を検討してください。
- 権限: レポートを実行するOTMユーザーには、データモデルやレポートを作成・修正するための BI PUBLISHER DATA MODEL DEVELOPER および BI PUBLISHER REPORT DEVELOPER などの特定のロールが必要です。また、基盤となるデータベーステーブルへの読み取り専用アクセス権も必要です。
- パフォーマンス: このクエリは複数の大規模なテーブルを結合します。データ量が多い環境では、システムパフォーマンスへの影響を避けるため、負荷の低い時間帯にレポートを実行することを強くお勧めします。レポートが適時に完了するよう、日付範囲は必要最小限に留めてください。
a クエリ例 config
WITH SHIPMENTS_BASE AS (
SELECT
S.SHIPMENT_GID AS ShipmentId,
SP.SERVPROV_NAME AS CarrierName,
S.TOTAL_ACTUAL_COST AS ShipmentCost,
TM.TRANSPORT_MODE_NAME AS TransportationMode,
(
SELECT MAX(ORL.LATE_DELIVERY_DATE)
FROM SHIPMENT_S_SHIP_UNIT SSU
JOIN S_SHIP_UNIT SU ON SSU.S_SHIP_UNIT_GID = SU.S_SHIP_UNIT_GID
JOIN ORDER_RELEASE ORL ON SU.ORDER_RELEASE_GID = ORL.ORDER_RELEASE_GID
WHERE SSU.SHIPMENT_GID = S.SHIPMENT_GID
) AS RequestedDeliveryDate,
S.DOMAIN_NAME
FROM SHIPMENT S
LEFT JOIN SERVPROV SP ON S.SERVPROV_GID = SP.SERVPROV_GID
LEFT JOIN TRANSPORT_MODE TM ON S.TRANSPORT_MODE_GID = TM.TRANSPORT_MODE_GID
WHERE S.INSERT_DATE BETWEEN TO_DATE(:P_START_DATE, 'YYYY-MM-DD') AND TO_DATE(:P_END_DATE, 'YYYY-MM-DD') + 1
AND S.DOMAIN_NAME = :P_DOMAIN_NAME
)
-- 1. Transportation Request Received
SELECT
SB.ShipmentId,
'Transportation Request Received' AS ActivityName,
MIN(ORL.INSERT_DATE) AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_S_SHIP_UNIT SSU ON SB.ShipmentId = SSU.SHIPMENT_GID
JOIN S_SHIP_UNIT SU ON SSU.S_SHIP_UNIT_GID = SU.S_SHIP_UNIT_GID
JOIN ORDER_RELEASE ORL ON SU.ORDER_RELEASE_GID = ORL.ORDER_RELEASE_GID
WHERE SB.DOMAIN_NAME = ORL.DOMAIN_NAME
GROUP BY SB.ShipmentId, SB.CarrierName, SB.RequestedDeliveryDate, SB.ShipmentCost, SB.TransportationMode
UNION ALL
-- 2. Shipment Planned
SELECT
SB.ShipmentId,
'Shipment Planned' AS ActivityName,
SS.STATUS_CHANGE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_STATUS SS ON SB.ShipmentId = SS.SHIPMENT_GID
WHERE SS.STATUS_CODE_GID = 'PLANNING_PLANNED FINAL'
UNION ALL
-- 3. Carrier Assigned
SELECT
SB.ShipmentId,
'Carrier Assigned' AS ActivityName,
ST.UPDATE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_TENDER ST ON SB.ShipmentId = ST.SHIPMENT_GID
WHERE ST.TENDER_STATUS_GID = 'TENDER_ACCEPTED'
UNION ALL
-- 4. Shipment Booked
SELECT
SB.ShipmentId,
'Shipment Booked' AS ActivityName,
SS.STATUS_CHANGE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_STATUS SS ON SB.ShipmentId = SS.SHIPMENT_GID
WHERE SS.STATUS_CODE_GID = 'SECURE RESOURCES_BOOKED'
UNION ALL
-- 5. Pickup Appointment Scheduled
SELECT
SB.ShipmentId,
'Pickup Appointment Scheduled' AS ActivityName,
SST.APPOINTMENT_START_TIME AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_STOP SST ON SB.ShipmentId = SST.SHIPMENT_GID
WHERE SST.STOP_NUM = 1 AND SST.APPOINTMENT_START_TIME IS NOT NULL
UNION ALL
-- 6. Goods Picked Up
SELECT
SB.ShipmentId,
'Goods Picked Up' AS ActivityName,
SST.ACTUAL_DEPARTURE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_STOP SST ON SB.ShipmentId = SST.SHIPMENT_GID
WHERE SST.STOP_NUM = 1 AND SST.ACTUAL_DEPARTURE_DATE IS NOT NULL
UNION ALL
-- 7. Shipment In Transit
SELECT
SB.ShipmentId,
'Shipment In Transit' AS ActivityName,
SST.ACTUAL_DEPARTURE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_STOP SST ON SB.ShipmentId = SST.SHIPMENT_GID
WHERE SST.STOP_NUM = 1 AND SST.ACTUAL_DEPARTURE_DATE IS NOT NULL
UNION ALL
-- 8. Customs Cleared
SELECT
SB.ShipmentId,
'Customs Cleared' AS ActivityName,
SE.EVENT_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
SE.EVENT_REMARK_TEXT AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_EVENT SE ON SB.ShipmentId = SE.SHIPMENT_GID
WHERE SE.EVENT_CODE = '[Your Customs Cleared Event Code]'
UNION ALL
-- 9. Delivery Appointment Scheduled
SELECT
SB.ShipmentId,
'Delivery Appointment Scheduled' AS ActivityName,
SST.APPOINTMENT_START_TIME AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_STOP SST ON SB.ShipmentId = SST.SHIPMENT_GID
WHERE SST.STOP_NUM = (SELECT MAX(SST2.STOP_NUM) FROM SHIPMENT_STOP SST2 WHERE SST2.SHIPMENT_GID = SB.ShipmentId)
AND SST.APPOINTMENT_START_TIME IS NOT NULL
UNION ALL
-- 10. Goods Delivered
SELECT
SB.ShipmentId,
'Goods Delivered' AS ActivityName,
SST.ACTUAL_ARRIVAL_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_STOP SST ON SB.ShipmentId = SST.SHIPMENT_GID
WHERE SST.STOP_NUM = (SELECT MAX(SST2.STOP_NUM) FROM SHIPMENT_STOP SST2 WHERE SST2.SHIPMENT_GID = SB.ShipmentId)
AND SST.ACTUAL_ARRIVAL_DATE IS NOT NULL
UNION ALL
-- 11. Proof of Delivery Received
SELECT
SB.ShipmentId,
'Proof of Delivery Received' AS ActivityName,
SE.EVENT_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
SE.EVENT_REMARK_TEXT AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_EVENT SE ON SB.ShipmentId = SE.SHIPMENT_GID
WHERE SE.EVENT_CODE = '[Your POD Received Event Code]'
UNION ALL
-- 12. Freight Bill Audited
SELECT
SB.ShipmentId,
'Freight Bill Audited' AS ActivityName,
B.UPDATE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN BILL B ON SB.ShipmentId = B.SHIPMENT_GID
WHERE B.BILL_STATUS_GID = 'VOUCHER_AUDITED'
UNION ALL
-- 13. Payment Processed
SELECT
SB.ShipmentId,
'Payment Processed' AS ActivityName,
B.UPDATE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN BILL B ON SB.ShipmentId = B.SHIPMENT_GID
WHERE B.BILL_STATUS_GID = '[Your Payment Processed Bill Status]'
UNION ALL
-- 14. Shipment Cancelled
SELECT
SB.ShipmentId,
'Shipment Cancelled' AS ActivityName,
S.UPDATE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT S ON SB.ShipmentId = S.SHIPMENT_GID
WHERE S.SHIPMENT_STATUS_GID = 'SHIPMENT_CANCELLED' ステップ
- データベース接続の確立: Oracle Transportation Managementデータベースの読み取り専用認証情報と接続詳細(ホスト、ポート、サービスID)を取得します。
GLOGOWNERスキーマへのアクセス権が必要です。 - SQLクライアントの設定: Oracle SQL Developer、DBeaver、ToadなどのSQLクライアントツールを用意し、前のステップで取得した接続情報を設定します。
- クエリの準備: 本ドキュメントに記載されているSQLクエリをすべてコピーし、SQLクライアントのクエリエディタに貼り付けます。
- クエリパラメータの設定: クエリ内の
WHERE句にあるプレースホルダーを探します。[START_DATE]、[END_DATE]、[YOUR_DOMAIN_NAME]を、抽出したい条件に合わせて実際の値に置き換えてください。例として、3〜6ヶ月の期間を指定し、分析対象の運用ドメインを入力します。 - クエリの実行: 修正したSQLクエリを実行します。指定した期間やシステムのデータ量によっては、完了まで数分かかる場合があります。
- 結果の確認: 実行完了後、クライアント上で出力結果を軽く確認し、データが正しく取得されていること、特に
ShipmentId、ActivityName、EventTimeなどの主要な列に値が入っていることを確認します。 - CSVへのエクスポート: 全結果をCSVファイルとして書き出します。標準的な設定(カンマ区切り、テキストのダブルクォート囲み、エンコードはUTF-8)を使用してください。
- 列見出しの最終確認: アップロード前に、CSVの列見出しが指定の属性名(
ShipmentId、ActivityName、EventTime、CarrierName、RequestedDeliveryDate、ShipmentCost、TransportationMode、DelayReason)と完全に一致しているか確認します。 - ProcessMindへのアップロード: 準備したCSVファイルをProcessMindにアップロードして、分析を開始しましょう。
設定
- データベーススキーマ: このクエリは、通常
GLOGOWNERと呼ばれる標準的なOracle Transportation Managementデータベーススキーマ向けに設計されています。 - 必要な権限: クエリ内で参照されるテーブルへの読み取り専用アクセス権を持つデータベースユーザーが必要です。対象テーブルには、
SHIPMENT、SHIPMENT_STOP、ORDER_RELEASE、SHIPMENT_STATUS、SERVPROV、SHIPMENT_COST、DOCUMENT、BILL、VOUCHERが含まれます。 - ドメインフィルタリング: マルチテナント形式のOTM環境では、
DOMAIN_NAMEによるフィルタリングが不可欠です。クエリ内のプレースホルダー[YOUR_DOMAIN_NAME]を、分析対象となる適切なビジネスエンティティの設定に書き換えてください。 - 日付範囲: パフォーマンスとデータ量を適切に管理するため、開始日と終了日を指定する必要があります。
SHIPMENT.INSERT_DATEのようなインデックス付きカラムでのフィルタリングを推奨します。初回分析では、3〜6ヶ月程度の期間を指定するのが一般的です。 - ステータスコードのカスタマイズ: クエリでは、一般的なデフォルトのステータスコード(例:
PLANNING_PLANNED FINAL、TENDER_ACCEPTED)を使用しています。お使いのOTM環境で独自のステータスコードを運用している場合は、システムの構成に合わせてWHERE句の値を調整してください。
a クエリ例 sql
WITH ShipmentBase AS (
SELECT s.SHIPMENT_GID, s.SERVPROV_GID, s.LATE_DELIVERY_DATE, s.TRANSPORT_MODE_GID, sc.TotalShipmentCost
FROM GLOGOWNER.SHIPMENT s
LEFT JOIN (
SELECT sc.SHIPMENT_GID, SUM(sc.COST) as TotalShipmentCost
FROM GLOGOWNER.SHIPMENT_COST sc
GROUP BY sc.SHIPMENT_GID
) sc ON s.SHIPMENT_GID = sc.SHIPMENT_GID
WHERE s.INSERT_DATE BETWEEN TO_DATE('[START_DATE]', 'YYYY-MM-DD') AND TO_DATE('[END_DATE]', 'YYYY-MM-DD')
AND s.DOMAIN_NAME = '[YOUR_DOMAIN_NAME]'
),
OrderReleaseInfo AS (
SELECT ssu.SHIPMENT_GID, MIN(orl.INSERT_DATE) as Earliest_OR_Date
FROM GLOGOWNER.S_SHIP_UNIT ssu
JOIN GLOGOWNER.S_SHIP_UNIT_LINE ssul ON ssu.S_SHIP_UNIT_GID = ssul.S_SHIP_UNIT_GID
JOIN GLOGOWNER.ORDER_RELEASE_LINE orl ON ssul.ORDER_RELEASE_LINE_GID = orl.ORDER_RELEASE_LINE_GID
GROUP BY ssu.SHIPMENT_GID
)
-- 1. Transportation Request Received
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Transportation Request Received' AS "ActivityName",
ori.Earliest_OR_Date AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN OrderReleaseInfo ori ON sb.SHIPMENT_GID = ori.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE ori.Earliest_OR_Date IS NOT NULL
UNION ALL
-- 2. Shipment Planned
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Shipment Planned' AS "ActivityName",
ss.INSERT_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STATUS ss ON sb.SHIPMENT_GID = ss.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE ss.STATUS_CODE_GID = 'PLANNING_PLANNED FINAL'
UNION ALL
-- 3. Carrier Assigned
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Carrier Assigned' AS "ActivityName",
ss.INSERT_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STATUS ss ON sb.SHIPMENT_GID = ss.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE ss.STATUS_CODE_GID = 'TENDER_ACCEPTED'
UNION ALL
-- 4. Shipment Booked
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Shipment Booked' AS "ActivityName",
ss.INSERT_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STATUS ss ON sb.SHIPMENT_GID = ss.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE ss.STATUS_CODE_GID = 'SECURE RESOURCES_BOOKED'
UNION ALL
-- 5. Pickup Appointment Scheduled
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Pickup Appointment Scheduled' AS "ActivityName",
stp.APPT_START_TIME AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STOP stp ON sb.SHIPMENT_GID = stp.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE stp.STOP_NUM = 1 AND stp.APPT_START_TIME IS NOT NULL
UNION ALL
-- 6. Goods Picked Up
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Goods Picked Up' AS "ActivityName",
stp.ACTUAL_DEPARTURE_TIME AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STOP stp ON sb.SHIPMENT_GID = stp.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE stp.STOP_NUM = 1 AND stp.ACTUAL_DEPARTURE_TIME IS NOT NULL
UNION ALL
-- 7. Shipment In Transit
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Shipment In Transit' AS "ActivityName",
stp.ACTUAL_DEPARTURE_TIME AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STOP stp ON sb.SHIPMENT_GID = stp.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE stp.STOP_NUM = 1 AND stp.ACTUAL_DEPARTURE_TIME IS NOT NULL
UNION ALL
-- 8. Customs Cleared
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Customs Cleared' AS "ActivityName",
se.EVENT_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
se.REMARK_TEXT AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_EVENT se ON sb.SHIPMENT_GID = se.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE se.EVENT_CODE_GID = '[Your Customs Cleared Event Code]'
UNION ALL
-- 9. Delivery Appointment Scheduled
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Delivery Appointment Scheduled' AS "ActivityName",
stp.APPT_START_TIME AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STOP stp ON sb.SHIPMENT_GID = stp.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE stp.STOP_NUM = (SELECT MAX(s2.STOP_NUM) FROM GLOGOWNER.SHIPMENT_STOP s2 WHERE s2.SHIPMENT_GID = stp.SHIPMENT_GID)
AND stp.APPT_START_TIME IS NOT NULL
UNION ALL
-- 10. Goods Delivered
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Goods Delivered' AS "ActivityName",
stp.ACTUAL_ARRIVAL_TIME AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STOP stp ON sb.SHIPMENT_GID = stp.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE stp.STOP_NUM = (SELECT MAX(s2.STOP_NUM) FROM GLOGOWNER.SHIPMENT_STOP s2 WHERE s2.SHIPMENT_GID = stp.SHIPMENT_GID)
AND stp.ACTUAL_ARRIVAL_TIME IS NOT NULL
UNION ALL
-- 11. Proof of Delivery Received
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Proof of Delivery Received' AS "ActivityName",
d.INSERT_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.DOCUMENT d ON sb.SHIPMENT_GID = d.OBJECT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE d.OBJECT_TYPE_GID = 'SHIPMENT' AND d.DOCUMENT_TYPE_GID = 'POD'
UNION ALL
-- 12. Freight Bill Audited
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Freight Bill Audited' AS "ActivityName",
b.UPDATE_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.BILL b ON sb.SHIPMENT_GID = b.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE b.APPROVAL_STATUS_GID = 'VOUCHER_AUDITED'
UNION ALL
-- 13. Payment Processed
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Payment Processed' AS "ActivityName",
v.UPDATE_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.BILL b ON sb.SHIPMENT_GID = b.SHIPMENT_GID
JOIN GLOGOWNER.VOUCHER v ON b.BILL_GID = v.BILL_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE v.VOUCHER_STATUS_GID = 'VOUCHER_PAID' -- This status may vary based on configuration
UNION ALL
-- 14. Shipment Cancelled
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Shipment Cancelled' AS "ActivityName",
ss.INSERT_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STATUS ss ON sb.SHIPMENT_GID = ss.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE ss.STATUS_CODE_GID LIKE '%CANCELLED%';