Ihr Transportation Management Daten Template
Ihr Transportation Management Daten Template
- Empfohlene Attribute zur Erfassung
- Wichtige Aktivitäten zur Verfolgung
- Extraktionsanleitung
Transportmanagement-Attribute
| Name | Beschreibung | ||
|---|---|---|---|
| Aktivitätsname ActivityName | Der Name eines spezifischen Ereignisses oder Meilensteins, der innerhalb des Transportprozesses für eine Sendung aufgetreten ist. | ||
| Beschreibung Dieses Attribut beschreibt einen einzelnen Schritt im Transportlebenszyklus, wie z.B. 'Sendung geplant', 'Ware abgeholt' oder 'Ware geliefert'. Jede Aktivität repräsentiert ein eigenständiges Geschäftsereignis, das die Sendung der Fertigstellung näherbringt. Die Analyse der Sequenz und Dauer dieser Aktivitäten ist der Kern des Process Mining. Sie ermöglicht die Entdeckung des tatsächlichen Prozessflusses, die Identifizierung von Engpässen zwischen den Schritten und die Messung der Einhaltung von Standardarbeitsanweisungen. Variationen im Aktivitätsfluss können Ausnahmen, Nacharbeiten oder Abweichungen vom optimalen Pfad hervorheben. Bedeutung Es definiert die Schritte in der Prozesskarte und ermöglicht die Visualisierung und Analyse der Sendungsreise, Bottlenecks und Abweichungen. Datenquelle Diese Information wird aus Tracking-Event-Tabellen oder Statusänderungs-Logs innerhalb von Oracle Transportation Management abgeleitet. Der spezifische Aktivitätsname kann aus Ereigniscodes und Beschreibungen zusammengefügt werden. Beispiele Sendung geplantWaren abgeholtZoll abgefertigtWaren geliefert | |||
| Ereigniszeit EventTime | Das genaue Datum und die Uhrzeit, zu der eine spezifische Transportaktivität oder ein Ereignis aufgetreten ist. | ||
| Beschreibung Dieser Timestamp markiert den genauen Zeitpunkt, an dem eine Aktivität, wie 'Spediteur zugewiesen' oder 'Liefernachweis erhalten', im System erfasst wurde. Timestamps sind grundlegend für Process Mining, da sie die chronologische Abfolge von Ereignissen für jede Sendung festlegen. Die Genauigkeit dieser Timestamps ist entscheidend für alle zeitbasierten Analysen. Sie werden verwendet, um Zykluszeiten zwischen Aktivitäten zu berechnen, Prozessdauern zu messen, Verzögerungen zu identifizieren und die Leistung im Vergleich zu Service Level Agreements zu bewerten. Die Analyse der Ereigniszeit hilft, genau zu bestimmen, wo im Prozess Zeit verloren geht. Bedeutung Dieser Timestamp ist unerlässlich für die chronologische Anordnung von Ereignissen und die Berechnung aller Leistungsmetriken, wie Zykluszeiten und Verzögerungen. Datenquelle Stammt aus den Timestamp-Feldern, die mit Ereignissen in den Tracking-Event- oder Statusverlaufstabellen von OTM verknüpft sind. Beispiele 2023-10-26T08:00:00Z2023-10-27T14:30:00Z2023-10-28T09:15:00Z | |||
| Sendung ShipmentId | Die eindeutige Kennung für eine einzelne Sendung, die als primäre Case-ID für die Verfolgung aller zugehörigen Transportaktivitäten dient. | ||
| Beschreibung Die Sendungs-ID identifiziert eindeutig eine einzelne Warenbewegung von einem Versender zu einem Empfänger. Dieses Attribut ist der Eckpfeiler der Prozessanalyse und gruppiert alle zugehörigen Ereignisse wie Planung, Buchung, Abholung, Transit, Lieferung und Fakturierung in einem einzigen Case. Im Process Mining ermöglicht die Analyse von Ereignissen nach Sendungs-ID eine vollständige End-to-End-Sicht auf den Transportlebenszyklus. Es wird verwendet, um wichtige Kennzahlen wie die Gesamtzykluszeit, die pünktliche Lieferleistung und die Kosten pro Sendung zu berechnen, was ein umfassendes Verständnis der Prozesseffizienz und der Kundenservice-Levels ermöglicht. Bedeutung Dies ist die essentielle Case-ID, die alle Prozessschritte verbindet und eine vollständige Analyse des gesamten Transportwegs für jede einzelne Sendung ermöglicht. Datenquelle Dies ist ein Primärschlüssel in Oracle Transportation Management, typischerweise in Sendungs- oder Auftragsverwaltungstabellen zu finden. Konsultieren Sie die OTM-Dokumentation für spezifische Tabellen- und Feldnamen. Beispiele SH-0012345SH-0012346SH-0012347 | |||
| Angefordertes Lieferdatum RequestedDeliveryDate | Das vom Kunden angeforderte oder als Service Level Agreement (SLA)-Ziel vereinbarte Lieferdatum und die Lieferzeit. | ||
| Beschreibung Dieses Attribut erfasst den Zieldatum-Timestamp für die Lieferung einer Sendung. Es repräsentiert die gegenüber dem Kunden eingegangene Verpflichtung und dient als primärer Maßstab für die Messung der Pünktlichkeit der Lieferung. Im Process Mining wird dieses Datum mit dem tatsächlichen Liefer-Timestamp (aus der Aktivität 'Ware geliefert') verglichen, um festzustellen, ob eine Sendung pünktlich oder verspätet war. Dies ist die Grundlage für den KPI der pünktlichen Lieferrate und unerlässlich für das Dashboard der Lieferleistungsübersicht. Die Analyse von Abweichungen hilft, systemische Ursachen von Verzögerungen zu identifizieren und die Kundenzufriedenheit zu verbessern. Bedeutung Dies ist der primäre Maßstab für die Messung der pünktlichen Lieferleistung, ein kritischer KPI für Kundenzufriedenheit und operative Exzellenz. Datenquelle Diese Information wird typischerweise auf Bestell- oder Sendungsebene innerhalb von OTM gespeichert, oft in Feldern, die sich auf Lieferdaten oder Termine beziehen. Beispiele 2023-11-15T17:00:00Z2023-11-20T12:00:00Z2023-11-22T09:00:00Z | |||
| Carrier-Name CarrierName | Der Name des Transportspediteurs oder Dienstleisters, der für den Transport der Sendung verantwortlich ist. | ||
| Beschreibung Dieses Attribut identifiziert den Logistikpartner, der mit der Ausführung des Warentransports beauftragt wurde. Beispiele sind große Frachtunternehmen, lokale Kurierdienste oder Reedereien. Die Leistungsanalyse nach Spediteur ist ein primäres Ziel des Transport-Process-Mining. Dieses Attribut ermöglicht die Segmentierung von Sendungen, um Spediteure anhand von Metriken wie Pünktlichkeit der Lieferung, Kosten pro Sendung, Transitzeit und Häufigkeit von Problemen wie Verzögerungen oder Abrechnungsdifferenzen zu vergleichen. Diese Erkenntnisse sind entscheidend für die Spediteurauswahl, Vertragsverhandlungen und das Leistungsmanagement. Bedeutung Ermöglicht Performance-Benchmarking über verschiedene Carrier hinweg, was entscheidend für die Optimierung der Carrier-Auswahl, Verhandlung und Kostenreduzierung ist. Datenquelle Gefunden in den Sendungsdetails innerhalb von OTM, verknüpft mit den zugewiesenen Carrier- oder Dienstleister-Datensätzen. Es kann in Tabellen gespeichert sein, die sich auf Sendungen und Dienstleister beziehen. Beispiele FedEx FreightUPS Supply Chain SolutionsMaersk LineKnight-Swift Transportation | |||
| Sendungskosten ShipmentCost | Die gesamten Frachtkosten oder der finanzielle Betrag, der für den Transport der Sendung berechnet wird. | ||
| Beschreibung Dieses Attribut repräsentiert die gesamten finanziellen Kosten, die mit einer Sendung verbunden sind, einschließlich Spediteurgebühren, Treibstoffzuschlägen und anderen Zusatzgebühren. Es ist ein Schlüsselmaßstab für die finanzielle Leistung des Transportprozesses. Die Analyse der Sendungskosten ermöglicht die Berechnung des KPI für die durchschnittlichen Spediteurkosten pro Sendung. Sie kann nach Spediteur, Route, Transportmodus oder Sendungstyp segmentiert werden, um Kosteneinsparungspotenziale zu identifizieren. Sie wird auch in der Frachtrechnungsdiskrepanzanalyse verwendet, um geplante und tatsächliche Kosten zu vergleichen. Bedeutung Stellt die finanziellen Daten bereit, die zur Analyse der Transportausgaben, zur Identifizierung von Kosteneinsparungspotenzialen und zur Messung der finanziellen Auswirkungen von Prozessineffizienzen benötigt werden. Datenquelle Diese Information ist typischerweise in den Finanz- oder Kostenabschnitten einer Sendung in OTM zu finden, oft nach der Frachtbewertung und Abrechnung ausgefüllt. Beispiele 250.751200.00545.50 | |||
| Transportmodus TransportationMode | Die für die Sendung verwendete Transportmethode, wie LKW, Bahn, See oder Luft. | ||
| Beschreibung Dieses Attribut kategorisiert die Sendung nach dem Transportmodus. Gängige Modi sind Komplettladung (FTL), Teilladung (LTL), Seefracht, Luftfracht und Bahnfracht. Dies ist ein grundlegendes Merkmal einer Sendung, das Kosten, Transitzeit und Komplexität beeinflusst. In der Analyse ist der Transportmodus eine kritische Dimension für die Segmentierung. Er ermöglicht den Vergleich von Prozessleistung und Kosten über verschiedene Modi hinweg. Zum Beispiel kann er helfen zu identifizieren, welche Modi anfälliger für Transitverzögerungen sind oder höhere Kosten pro Meile verursachen, was strategische Entscheidungen über Logistiknetzwerke unterstützt. Bedeutung Ermöglicht die Segmentierung der Performance- und Kostenanalyse nach Transportart, wodurch spezifische Einblicke in Lkw-, Luft-, See- oder Schienenlogistik gewonnen werden können. Datenquelle Dies ist ein Standardattribut auf Sendungsebene in OTM, oft in einem dedizierten 'Modus'- oder 'Transporttyp'-Feld zu finden. Beispiele FTLLTLOCEANAIR | |||
| Verzögerungsgrund DelayReason | Ein Code oder eine Beschreibung, die die Ursache einer Verzögerung im Sendungsfortschritt erklärt. | ||
| Beschreibung Wenn sich eine Sendung verzögert, gibt dieses Attribut den Grund dafür an, wie z.B. „Wetterbedingungen“, „Zollverzögerung“, „Hafenstau“ oder „mechanisches Versagen“. Diese Informationen stammen aus den Aktualisierungen der Spediteure oder aus manuellen Eingaben im OTM-System. Dieses Attribut ist entscheidend für die Ursachenanalyse verspäteter Lieferungen. Indem Unternehmen die Verzögerungsgründe kategorisieren und zählen, können sie die häufigsten Probleme in ihrer Lieferkette identifizieren. Dies ermöglicht gezielte Verbesserungsinitiativen, wie die Auswahl zuverlässigerer Spediteure für bestimmte Routen oder die Optimierung der Dokumentation zur Beschleunigung der Zollabfertigung. Bedeutung Bietet entscheidenden Einblick in die Grundursachen verspäteter Sendungen, ermöglicht gezielte Maßnahmen zur Minderung häufiger Probleme und zur Verbesserung der Pünktlichkeit. Datenquelle Typischerweise in den Tracking-Event-Details innerhalb von OTM erfasst. Es kann mit spezifischen Ausnahme- oder Verzögerungsereigniscodes verknüpft sein. Beispiele WEATHER_DELAYCUSTOMS_INSPECTIONPORT_CONGESTIONTRAFFIC | |||
| Benutzername UserName | Der Name oder die ID des Benutzers, der eine bestimmte Aktivität ausgeführt hat oder dafür verantwortlich ist. | ||
| Beschreibung Dieses Attribut identifiziert den einzelnen Benutzer oder Systemagenten, der ein spezifisches Ereignis ausgeführt hat, wie z.B. 'Sendung geplant' oder 'Spediteur zugewiesen'. Diese Information schafft Verantwortlichkeit und Einblick in die Ressourcenbeteiligung im Prozess. Im Process Mining hilft die Analyse von Aktivitäten nach Benutzern, die Arbeitslastverteilung zu verstehen, Schulungsbedarfe zu identifizieren und die Leistung verschiedener Benutzer oder Teams zu vergleichen. Es kann auch verwendet werden, um zwischen manuell durchgeführten Aktivitäten und solchen, die automatisch vom System ausgeführt werden, zu unterscheiden. Bedeutung Schafft Verantwortlichkeit und ermöglicht die Analyse von Arbeitslast und Leistung nach individuellem Benutzer oder Team. Datenquelle Stammt aus Benutzer-ID-Feldern (z.B. INSERT_USER), die mit Statusänderungen oder Ereignissen in den Historien- oder Logtabellen von OTM verknüpft sind. Beispiele JSMITHLOGISTICS_PLANNER_ASYSTEM_AUTO | |||
| End-to-End-Zykluszeit EndToEndCycleTime | Die Gesamtdauer der Sendung von der ersten Transportanfrage bis zur endgültigen Warenlieferung. | ||
| Beschreibung Diese berechnete Metrik misst die gesamte verstrichene Zeit für einen Sendungs-Case. Sie wird typischerweise als Zeitdifferenz zwischen der Aktivität 'Transportanfrage erhalten' und der Aktivität 'Ware geliefert' berechnet. Dieses Attribut ist die Grundlage für den KPI der durchschnittlichen End-to-End-Zykluszeit. Es bietet ein umfassendes Maß für die Effizienz des gesamten Transportprozesses. Die Analyse dieser Dauer hilft, langwierige Sendungen zu identifizieren und bietet eine Basislinie zur Messung der Auswirkungen von Prozessverbesserungsinitiativen. Bedeutung Bietet eine einzige, entscheidende Messgröße für die Gesamtprozessgeschwindigkeit, hilft langwierige Sendungen zu identifizieren und Verbesserungen im Laufe der Zeit zu verfolgen. Datenquelle Dieses Attribut ist nicht im Quellsystem vorhanden. Es wird auf Case-Ebene während der Process Mining Analyse oder Datentransformation berechnet. Beispiele 5 Tage 4 Stunden12 Tage 8 Stunden 30 Minuten2 Tage 1 Stunde | |||
| Frachtrechnungsdiskrepanz FreightBillDiscrepancy | Eine Flag, die anzeigt, ob eine Diskrepanz bei der Prüfung der Frachtrechnung gefunden wurde. | ||
| Beschreibung Dieses boolesche Attribut wird auf 'true' gesetzt, wenn die vom Spediteur erhaltene Frachtrechnung nicht mit den in OTM berechneten erwarteten Kosten übereinstimmt. Diskrepanzen können aufgrund falscher Tarife, Nebenkosten oder anderer Abrechnungsfehler entstehen. Dieses Attribut ist die Grundlage für den KPI der Frachtrechnungsdiskrepanzrate. Die Analyse der Häufigkeit dieser Flags nach Spediteur, Route oder Sendungstyp hilft, die Grundursachen von Abrechnungsfehlern zu identifizieren. Dies unterstützt Initiativen zur Verbesserung der Daten genauigkeit, zur Rationalisierung des Auditprozesses und zur Verhinderung von Überzahlungen. Bedeutung Unterstützt direkt die Frachtrechnungs-Diskrepanzanalyse, indem Sendungen mit Abrechnungsfehlern gekennzeichnet werden, was hilft, Überzahlungen zu reduzieren und Finanzkontrollen zu verbessern. Datenquelle Dies ist typischerweise ein Status oder Flag, der während des Frachtabrechnungs- und Rechnungsabgleichsprozesses innerhalb von OTM gesetzt wird. Beispiele truefalsch | |||
| Herkunftsland OriginCountry | Das Land, in dem die Reise der Sendung beginnt. | ||
| Beschreibung Dieses Attribut gibt das Startland der Sendung an, basierend auf dem Standort des Versenders. Es ist eine wichtige geografische Information, die für die logistische Analyse verwendet wird. Die Analyse von Prozessen nach Ursprungsland hilft, regionale Leistungsunterschiede zu verstehen. Zum Beispiel können Zollabfertigungszeiten, Spediteurkosten und Transitdauern je nach Ursprungsland erheblich variieren. Diese Segmentierung ist entscheidend für die Verwaltung internationaler Logistik und die Identifizierung regionsspezifischer Engpässe. Bedeutung Ermöglicht eine geografische Analyse des Transportprozesses, die hilft, regionalspezifische Bottlenecks, Kosten und Performance-Variationen zu identifizieren. Datenquelle Abgeleitet aus den Adressdetails des Ursprungsorts der Sendung oder des Versenders, die in den Stammdaten des OTM-Standorts gespeichert sind. Beispiele USADEUCHNMEX | |||
| Ist Liefertreue IsOnTimeDelivery | Eine berechnete Flag, die anzeigt, ob die Sendung am oder vor dem angeforderten Lieferdatum zugestellt wurde. | ||
| Beschreibung Dieses boolesche Attribut wird durch den Vergleich des Timestamps der Aktivität 'Ware geliefert' mit dem Attribut 'Requested Delivery Date' abgeleitet. Es ist 'true', wenn die Lieferung pünktlich oder früher erfolgte, und 'false', wenn sie verspätet war. Dieses Attribut ist die direkte Grundlage für den KPI der pünktlichen Lieferrate und ein Schlüsselbestandteil des Dashboards zur Lieferleistungsübersicht. Es vereinfacht die Analyse der Lieferleistung, indem es ein klares, binäres Ergebnis für jede Sendung liefert, was das Filtern, Aggregieren und Visualisieren von pünktlichen gegenüber verspäteten Sendungen erleichtert. Bedeutung Dieses berechnete Flag vereinfacht die Messung des KPIs für die pünktliche Lieferung und ermöglicht eine einfache Filterung und Analyse von pünktlichen gegenüber verspäteten Sendungen. Datenquelle Dieses Attribut ist nicht im Quellsystem vorhanden. Es wird während der Datentransformation berechnet, indem der Timestamp der Aktivität 'Ware geliefert' mit dem Attribut 'RequestedDeliveryDate' verglichen wird. Beispiele truefalsch | |||
| Ist umgeleitet IsRerouted | Eine Flag, die anzeigt, ob die Route der Sendung nach der ursprünglichen Buchung geändert wurde. | ||
| Beschreibung Dieses Attribut ist ein boolesches Flag, das auf 'true' gesetzt wird, wenn eine Sendung nach ihrer Planung und Buchung einer signifikanten Umleitungsaktivität unterzogen wird. Dies kann auf Kundenwunsch, unerwartete Störungen oder Optimierungsmöglichkeiten zurückzuführen sein. Dieses Attribut unterstützt direkt den KPI der Umleitungsrate von Sendungen und das Dashboard für Umleitungs- und Beschleunigungserkenntnisse. Die Verfolgung der Häufigkeit von Umleitungen hilft, zugrunde liegende Probleme in der Planung oder Ausführung zu identifizieren. Es hebt operative Instabilitäten und die damit verbundenen Kosten hervor, wodurch Manager Wege finden können, kostspielige und störende Änderungen zu minimieren. Bedeutung Hilft, die Häufigkeit und Auswirkungen operativer Ausnahmen wie Re-Routes zu quantifizieren, wodurch Ineffizienzen im Planungs- und Ausführungsprozess hervorgehoben werden. Datenquelle Dieses Flag wird durch die Erkennung spezifischer Umleitungsereignisse im Event Log oder durch den Vergleich der endgültigen Route mit der ursprünglich geplanten Route abgeleitet. Beispiele truefalsch | |||
| Letzte Datenaktualisierung LastDataUpdate | Der `Timestamp`, der die letzte Aktualisierung oder Extraktion der Daten für dieses `Event` aus dem Quellsystem angibt. | ||
| Beschreibung Dieses Attribut erfasst, wann die Daten zuletzt aus Oracle Transportation Management abgerufen wurden. Es spiegelt die Aktualität der analysierten Daten wider, nicht den Zeitpunkt des Geschäftsereignisses. Dieser Timestamp ist entscheidend, um die Aktualität der Process Mining Analyse zu verstehen. Er hilft Benutzern zu erkennen, ob sie Echtzeitinformationen oder eine Momentaufnahme zu einem bestimmten Zeitpunkt betrachten. Er ist unerlässlich für die Verwaltung von Datenaktualisierungszyklen und um sicherzustellen, dass Entscheidungen auf aktuellen Informationen basieren. Bedeutung Gibt die Aktualität der Daten an und stellt sicher, dass Benutzer wissen, wie aktuell die Analyse ist und wann die nächste Datenaktualisierung erwartet wird. Datenquelle Dies ist typischerweise ein systemgenerierter Timestamp, der während des Datenzugriffs- oder ETL-Prozesses hinzugefügt wird. Beispiele 2023-11-01T02:00:00Z2023-11-02T02:00:00Z | |||
| Quellsystem SourceSystem | Identifiziert das System, aus dem die Event Daten stammen, zum Beispiel Oracle Transportation Management. | ||
| Beschreibung Dieses Attribut spezifiziert die Quellanwendung, in der die Daten generiert wurden. In einer komplexen Logistikumgebung können Daten aus OTM, einem Lagerverwaltungssystem (WMS), dem System eines Spediteurs via EDI oder anderen integrierten Plattformen stammen. Das Verständnis des Quellsystems ist wichtig für Data Governance, Qualitätsbewertung und Fehlerbehebung. Es hilft, den Datenkontext zu verstehen und kann Variationen in der Datengranularität oder -aktualität erklären. Für die Analyse kann es verwendet werden, um nach Ereignissen zu filtern, die nur aus einem spezifischen, vertrauenswürdigen System stammen. Bedeutung Es bietet entscheidenden Kontext zur Datenherkunft, was für die Datenvalidierung und für Analysen in Multi-System-Umgebungen wichtig ist. Datenquelle Dies ist typischerweise ein statischer Wert, der während des Datenextraktionsprozesses hinzugefügt wird, um den Ursprung der Datensätze zu kennzeichnen. Beispiele Oracle OTMOTM CloudSAP TM | |||
| Sendungsstatus ShipmentStatus | Der aktuelle Gesamtstatus der Sendung in ihrem Lebenszyklus, z.B. 'Geplant', 'Im Transit' oder 'Geliefert'. | ||
| Beschreibung Dieses Attribut bietet eine Zusammenfassung auf hoher Ebene darüber, wo sich die Sendung im Gesamtprozess befindet. Im Gegensatz zu einer Aktivität, die ein Zeitpunkt-Ereignis ist, repräsentiert der Status den Zustand des Sendungs-Cases. Während sich Process Mining auf den Fluss von Aktivitäten konzentriert, ist der Gesamtstatus nützlich zum Filtern von Cases und zur Bereitstellung von Kontext in Dashboards. Zum Beispiel könnte sich eine Analyse nur auf 'abgeschlossene' Sendungen konzentrieren oder untersuchen, warum viele Sendungen ungewöhnlich lange im Status 'Im Transit' feststecken. Bedeutung Bietet einen Überblick auf hoher Ebene über den Fortschritt einer Sendung, was für das Filtern und Segmentieren von Cases in der Analyse nützlich ist. Datenquelle Verfügbar im Hauptsendungsdatensatz in OTM, der den aktuellen Status im Workflow darstellt. Beispiele GEPLANTGEBUCHTIN_TRANSITDELIVERED | |||
| Sendungstyp ShipmentType | Eine Klassifizierung der Sendung, zum Beispiel nach Service-Level, Güterart oder Geschäftseinheit. | ||
| Beschreibung Dieses Attribut bietet eine geschäftsspezifische Kategorisierung für die Sendung, z.B. 'Standard', 'Express', 'Gefahrgüter' oder 'Interne Sendung'. Diese Klassifizierung hilft bei der Anwendung unterschiedlicher Geschäftsregeln, Prioritäten oder analytischer Ansichten. Die Verwendung des Sendungstyps als Dimension im Process Mining ermöglicht den Vergleich von Prozessen für verschiedene Arten von Sendungen. Dies kann aufdecken, ob bestimmte Typen anfälliger für Verzögerungen sind, höhere Kosten verursachen oder nicht-standardisierte Prozesspfade verfolgen. Diese Erkenntnisse helfen bei der Anpassung von Prozessen, um die spezifischen Bedürfnisse jedes Sendungstyps besser zu berücksichtigen. Bedeutung Ermöglicht die Segmentierung der Analyse basierend auf dem Geschäftskontext, was hilft zu verstehen, ob verschiedene Sendungstypen unterschiedliche Prozesse durchlaufen oder unterschiedliche Performance-Levels aufweisen. Datenquelle Dies ist typischerweise ein konfigurierbares Feld oder Attribut auf dem Sendungs- oder Auftragsdatensatz in OTM. Beispiele StandardBeschleunigtInternationalInland | |||
| Zielland DestinationCountry | Das Land, in das die Sendung geliefert werden soll. | ||
| Beschreibung Dieses Attribut gibt das endgültige Zielland der Sendung an, basierend auf dem Standort des Empfängers. Es ergänzt das Ursprungsland für die geografische Prozessanalyse. Ähnlich wie beim Ursprungsland ist die Analyse nach Zielland entscheidend, um Leistungsunterschiede über verschiedene Handelsrouten hinweg zu verstehen. Es ist besonders wichtig für die Analyse von Zollabfertigungszeiten, der Leistung der letzten Meile und der regionalspezifischen Spediteureffektivität. Dies hilft bei der Anpassung von Logistikstrategien an die Anforderungen verschiedener Zielmärkte. Bedeutung Entscheidend für die Analyse der Performance auf spezifischen Handelsrouten und das Verständnis von Herausforderungen im Zusammenhang mit Zoll, Carriern und Vorschriften in Zielmärkten. Datenquelle Abgeleitet aus den Adressdetails des Zielorts der Sendung oder des Empfängers, gespeichert in den Stammdaten des OTM-Standorts. Beispiele CANFRAJPNBRA | |||
| Zollagent CustomsAgent | Der Zollmakler oder Agent, der für die Verwaltung des Zollabfertigungsprozesses für die Sendung verantwortlich ist. | ||
| Beschreibung Bei internationalen Sendungen identifiziert dieses Attribut den Drittanbieter-Agenten oder das interne Team, das mit der Bearbeitung von Zoll-Dokumenten und -Verfahren betraut ist. Die Performance dieses Agenten kann die gesamte Transitzeit erheblich beeinflussen. Die Analyse der Zollabfertigungs-Zykluszeit nach Zollagent hilft, deren Performance zu benchmarken. Es kann identifiziert werden, welche Agenten in bestimmten Ländern oder für spezifische Güterarten am effizientesten sind. Dieser Einblick ist wertvoll für die Auswahl der besten Zollpartner und für die Zusammenarbeit mit leistungsschwachen Agenten zur Verbesserung ihrer Prozesse. Bedeutung Ermöglicht die Performance-Messung von Zollbrokern, was hilft, die effizientesten Partner zu identifizieren und zollbedingte Verzögerungen zu reduzieren. Datenquelle Diese Information kann als Dienstleister- oder Partnerrolle in den internationalen Sendungsdetails in OTM gespeichert sein. Beispiele Globale ZolldiensteLivingston InternationalFlexport | |||
Transportmanagement-Aktivitäten
| Aktivität | Beschreibung | ||
|---|---|---|---|
| Liefernachweis erhalten | Dies repräsentiert den Empfang und die Aufzeichnung einer formalen Bestätigung, dass die Lieferung abgeschlossen wurde, z.B. ein unterzeichnetes Dokument. Dies wird oft als spezifischer Dokumenttyp erfasst, der der Sendung beigefügt ist. | ||
| Bedeutung POD ist entscheidend für die Abrechnung und Streitbeilegung. Die Verfolgung des Eingangs trägt zur Sicherstellung der Compliance bei und beschleunigt den finanziellen Abrechnungszyklus. Datenquelle Dies kann ein explizites Ereignis sein oder aus dem Erstellungsdatum eines mit der Sendung verknüpften POD-Dokuments abgeleitet werden. Suchen Sie in der DOCUMENT-Tabelle nach Dokumenten mit dem Dokumenttyp POD. Erfassen Verwenden Sie den Erstellungs-Timestamp eines mit der Sendung verknüpften 'POD'-Dokumenttyps. Ereignistyp explicit | |||
| Sendung geplant | Diese Aktivität stellt die erfolgreiche Planung eines oder mehrerer Order Releases zu einer praktikablen Sendung durch die OTM-Planungsmaschine dar. Sie wird erfasst, wenn das System den Status einer Sendung ändert, um anzuzeigen, dass sie geplant wurde, zum Beispiel 'PLANNING_PLANNED FINAL'. | ||
| Bedeutung Dies ist ein entscheidender Meilenstein, der die Nachfragephase von der Ausführungsphase trennt. Die Analyse der Zeit bis zu dieser Aktivität hilft, die Planungseffizienz und Engpässe in der Engine-Leistung zu identifizieren. Datenquelle Abgeleitet aus der Status-Historie des Shipment-Objekts in der SHIPMENT-Tabelle. Suchen Sie nach einer Statusänderung, die den Abschluss der Planung anzeigt. Erfassen Identifizieren Sie den Timestamp, wenn SHIPMENT.SHIPMENT_STATUS_VALUE_GID zu einem 'Geplant'-Status wechselt. Ereignistyp inferred | |||
| Transportanfrage erhalten | Diese Aktivität markiert die Erstellung eines Transportbedarfs innerhalb des Systems, typischerweise als Order Release. Dieses Ereignis wird erfasst, wenn ein neuer Order Release Datensatz in Oracle Transportation Management erstellt wird, der die anfängliche Nachfrage nach einer Sendung darstellt. | ||
| Bedeutung Als Startpunkt des Prozesses ist diese Aktivität entscheidend für die Messung der gesamten End-to-End-Zykluszeit und das Verständnis von Nachfragemustern. Sie hilft, die Zeit von der Anfrage bis zur Planung zu analysieren. Datenquelle Dies ist ein explizites Ereignis, das vom Erstellungs-Timestamp des Order Release Datensatzes in der ORDER_RELEASE Tabelle erfasst wird. Die Felder INSERT_DATE oder spezifische Erstellungsdatumsfelder können verwendet werden. Erfassen Verwenden Sie den Erstellungs-Timestamp des Order Release in der ORDER_RELEASE Tabelle. Ereignistyp explicit | |||
| Waren abgeholt | Diese Aktivität kennzeichnet den Beginn des physischen Transports, wenn der Spediteur die Waren vom Ursprung abgeholt hat. Dieses Ereignis wird erfasst, wenn der erste Stopp der Sendung als 'DEPARTED' markiert ist. | ||
| Bedeutung Dies ist ein kritischer Meilenstein, der den Beginn der In-Transit-Phase markiert. Er ist unerlässlich für die Verfolgung der Abholleistung von Spediteuren und der tatsächlichen Transitzeiten. Datenquelle Abgeleitet von der Statusänderung des ersten Stopps in der SHIPMENT_STOP-Tabelle zu 'DEPARTED' oder durch Verfolgung eines Sendungsstatus-Events, das die Abholung anzeigt. Erfassen Verwenden Sie den ACTUAL_DEPARTURE Timestamp aus dem ersten Datensatz in der SHIPMENT_STOP Tabelle für die Sendung. Ereignistyp inferred | |||
| Waren geliefert | Diese Aktivität stellt die erfolgreiche Zustellung der Sendung an den Endempfänger dar. Dies wird erfasst, wenn der letzte Stopp der Sendung mit einer tatsächlichen Ankunftszeit markiert ist. | ||
| Bedeutung Dies ist der primäre Meilenstein zur Messung der pünktlichen Lieferleistung und der End-to-End-Zykluszeit. Es ist der Höhepunkt des Transportausführungsprozesses. Datenquelle Abgeleitet aus der Befüllung des Feldes ACTUAL_ARRIVAL im letzten Stopp-Datensatz in der SHIPMENT_STOP-Tabelle, der der Sendung zugeordnet ist. Erfassen Verwenden Sie den ACTUAL_ARRIVAL Timestamp aus dem letzten Datensatz in der SHIPMENT_STOP Tabelle für die Sendung. Ereignistyp inferred | |||
| Zahlung verarbeitet | Dies ist die finale Aktivität, die die erfolgreiche Zahlungsabwicklung an den Spediteur für seine Dienstleistungen darstellt. Dieses Ereignis markiert den finanziellen Abschluss der Sendung. | ||
| Bedeutung Diese Aktivität schließt den Transportlebenszyklus ab. Sie ist unerlässlich für die Messung der Bearbeitungszeiten von Spediteurzahlungen und das effektive Management von Spediteurbeziehungen. Datenquelle Abgeleitet von der Statusänderung des zugehörigen Vouchers oder der Rechnung zu einem 'PAID'-Status. Diese Daten befinden sich in den VOUCHER- oder BILL-Tabellen. Erfassen Identifizieren Sie den Timestamp, wenn VOUCHER.VOUCHER_STATUS_ID zu 'PAID' wechselt. Ereignistyp inferred | |||
| Abholtermin vereinbart | Diese Aktivität zeigt an, dass ein spezifisches Datum und eine Uhrzeit für die Abholung geplant und erfasst wurden. Dies wird oft aus Termindaten auf Stopp-Ebene der Sendung erfasst. | ||
| Bedeutung Die Terminplanung ist ein wichtiger Koordinationsschritt. Ihre Analyse hilft, die Effizienz der Terminplanung und ihre Auswirkungen auf die Pünktlichkeit der Abholung zu verstehen. Datenquelle Abgeleitet aus der Befüllung von Termin-Datums- und -Zeitfeldern für den ersten Stopp (Abholort) der Sendung, gefunden in der SHIPMENT_STOP-Tabelle. Erfassen Verwenden Sie den Timestamp, wenn Termin-Felder zum ersten Mal für den Abholstopp ausgefüllt werden. Ereignistyp inferred | |||
| Carrier zugewiesen | Dies markiert den Punkt, an dem eine Sendung erfolgreich an einen spezifischen Spediteur ausgeschrieben und von diesem angenommen wurde. Dies wird durch die Beobachtung der Änderung des Ausschreibungsstatus der Sendung auf 'TENDER_ACCEPTED' oder einen ähnlichen Status erfasst. | ||
| Bedeutung Die Verfolgung dessen hilft bei der Analyse der Effizienz des Spediteurauswahl- und Ausschreibungsprozesses. Verzögerungen hier können den gesamten Zeitplan erheblich beeinflussen, bevor die Sendung überhaupt bewegt wurde. Datenquelle Abgeleitet aus der Status-Historie in der SHIPMENT_TENDER-Tabelle, speziell nach dem Timestamp suchend, wenn der Status die Annahme durch einen Carrier anzeigt. Erfassen Verwenden Sie den Timestamp der Statusänderung auf 'TENDER_ACCEPTED' in der Ausschreibungshistorie der Sendung. Ereignistyp inferred | |||
| Frachtrechnung geprüft | Diese Aktivität markiert den Abschluss des Frachtrechnungsprüfungsprozesses, bei dem die Rechnung des Spediteurs mit den Sendungsdetails abgeglichen und verifiziert wird. Sie wird erfasst, wenn der Rechnungsstatus einer Sendung auf 'VOUCHER_AUDITED' oder einen ähnlichen Status wechselt. | ||
| Bedeutung Die Prüfung ist entscheidend für die Finanzkontrolle und die Identifizierung von Rechnungsdiskrepanzen. Die Analyse dieser Aktivität hilft, den Audit-to-Pay-Prozess zu straffen und unterstützt den KPI für die Frachtrechnungs-Diskrepanzrate. Datenquelle Abgeleitet von der Statusänderung des mit der Sendung verbundenen Bill-Objekts. Suchen Sie in der BILL-Tabelle nach Statusaktualisierungen im Zusammenhang mit dem Abschluss der Prüfung. Erfassen Identifizieren Sie den Timestamp, wenn BILL.BILL_STATUS_VALUE_GID zu einem 'Geprüft'-Status wechselt. Ereignistyp inferred | |||
| Liefertermin vereinbart | Diese Aktivität markiert, wann ein spezifisches Datum und eine Uhrzeit für die Lieferung mit dem Empfänger vereinbart wurden. Dieses Ereignis wird aus Termindaten am letzten Stopp der Sendung erfasst. | ||
| Bedeutung Dies ist ein wichtiger Schritt zur Koordination der endgültigen Lieferung. Die Analyse der Zeit zwischen Ankunft und geplanter Lieferung kann Engpässe in den Last-Mile-Operationen aufzeigen. Datenquelle Abgeleitet aus der Befüllung von Termin-Datums- und -Zeitfeldern für den letzten Stopp (Lieferort) der Sendung, gefunden in der SHIPMENT_STOP-Tabelle. Erfassen Verwenden Sie den Timestamp, wenn Termin-Felder zum ersten Mal für den Lieferstopp ausgefüllt werden. Ereignistyp inferred | |||
| Sendung gebucht | Stellt die formale Buchungsbestätigung beim Spediteur nach einer erfolgreichen Ausschreibung dar. Dies wird typischerweise erfasst, wenn der Sendungsstatus auf 'SECURE RESOURCES_BOOKED' oder einen gleichwertigen Status aktualisiert wird. | ||
| Bedeutung Dies bestätigt die Zusage des Spediteurs und überführt die Sendung offiziell in die Ausführungsphase. Es ist ein kritischer Schritt zur Messung des KPIs der Sendungsplanungszykluszeit. Datenquelle Abgeleitet von einer Statusänderung des Shipment-Objekts in der SHIPMENT-Tabelle, die verfolgt, wann es nach der Carrier-Zuweisung in einen bestätigten oder gebuchten Status übergeht. Erfassen Identifizieren Sie den Timestamp, wenn SHIPMENT.SHIPMENT_STATUS_VALUE_GID zu einem 'Gebucht'-Status wechselt. Ereignistyp inferred | |||
| Sendung im Transit | Zeigt an, dass die Waren abgeholt wurden und sich nun aktiv in Richtung Zielort bewegen. Dies ist kein einzelner Zeitpunkt, sondern der Beginn dieses Zustands wird unmittelbar nach der Aktivität 'Waren abgeholt' erfasst. | ||
| Bedeutung Diese Aktivität markiert den Beginn der Transitphase, die entscheidend ist für die Überwachung des Lieferfortschritts und die Identifizierung von Verzögerungen während des Transports. Sie ist grundlegend für das In-Transit Delay Hotspots Dashboard. Datenquelle Dies ist dasselbe Ereignis wie 'Ware abgeholt', wird aber oft als eigenständige Aktivität in Prozessmodellen dargestellt, um den Beginn einer neuen Phase zu kennzeichnen. Es wird aus dem Abflug des ersten Stopps abgeleitet. Erfassen Gleich wie 'Ware abgeholt': Verwenden Sie den ACTUAL_DEPARTURE Timestamp vom ersten SHIPMENT_STOP. Ereignistyp inferred | |||
| Sendung storniert | Stellt die Stornierung einer Sendung dar, nachdem sie geplant wurde, womit ihr Lebenszyklus vorzeitig beendet wird. Dies wird durch eine Statusänderung des Sendungsobjekts auf den Status 'storniert' erfasst. | ||
| Bedeutung Die Verfolgung von Stornierungen ist wichtig, um Prozessausnahmen und Fehler zu verstehen. Sie hilft, Gründe für Stornierungen zu identifizieren, wie z.B. Nachfrageänderungen oder Planungsfehler. Datenquelle Abgeleitet aus der Status-Historie des Shipment-Objekts in der SHIPMENT-Tabelle. Suchen Sie nach einer Statusänderung wie 'PLANNING_CANCELED'. Erfassen Identifizieren Sie den Timestamp, wenn SHIPMENT.SHIPMENT_STATUS_VALUE_GID zu einem 'Storniert'-Status wechselt. Ereignistyp inferred | |||
| Zoll abgefertigt | Bei internationalen Sendungen repräsentiert diese Aktivität den Zeitpunkt, an dem die Waren erfolgreich den Zoll an einer Grenze oder einem Hafen passiert haben. Dies wird oft über ein spezifisches Sendungs-Event oder eine Statusaktualisierung erfasst. | ||
| Bedeutung Die Zollabfertigung ist eine häufige Ursache für erhebliche Verzögerungen in der internationalen Logistik. Die Verfolgung dieser Aktivität hilft, die Zykluszeiten der Zollabfertigung zu messen und zu optimieren. Datenquelle Dieses Ereignis wird typischerweise über ein manuell eingegebenes oder integriertes 'Customs'-Sendungsereignis erfasst. Suchen Sie nach spezifischen Ereigniscodes in der SHIPMENT_STATUS Tabelle, die sich auf den Zoll beziehen. Erfassen Identifizieren Sie den Timestamp eines 'Zoll abgefertigt'-Events aus der SHIPMENT_STATUS Tabelle. Ereignistyp explicit | |||
Extraktionsleitfäden
Schritte
- Auf BI Publisher zugreifen: Melden Sie sich bei Ihrer Oracle Transportation Management (OTM)-Anwendung an. Navigieren Sie zu 'Business Process Automation', dann 'Reporting' und wählen Sie 'Report Manager'. Dadurch wird die Benutzeroberfläche des Oracle Business Intelligence Publisher geöffnet.
- Ein Datenmodell erstellen: Klicken Sie in BI Publisher auf die Schaltfläche 'Neu' und wählen Sie 'Datenmodell'. Dadurch wird der Datenmodell-Editor geöffnet, in dem Sie die Datenquelle für Ihren Bericht definieren.
- Die SQL-Abfrage definieren: Klicken Sie im Datenmodell-Editor auf das Plus-Symbol im Diagramm der 'Data Sets' und wählen Sie 'SQL Query'. Benennen Sie den Datensatz, zum Beispiel 'OTM_Process_Mining_DS'. Wählen Sie Ihre OTM-Datenbank als Datenquelle aus. Kopieren Sie die vollständige SQL-Abfrage aus dem Abschnitt 'query' dieses Dokuments und fügen Sie sie in das Textfeld 'SQL Query' ein.
- Parameter hinzufügen: Die Abfrage verwendet Parameter für den Datumsbereich und den Domänennamen (:P_START_DATE, :P_END_DATE, :P_DOMAIN_NAME). BI Publisher wird diese automatisch erkennen. Sie können deren Eigenschaften konfigurieren, z.B. den Datentyp für die Datumsparameter auf 'Date' setzen.
- Datenmodell speichern: Klicken Sie auf das Speichern-Symbol. Wählen Sie einen Speicherort im BI Publisher-Katalog, geben Sie einen beschreibenden Namen wie 'OTM Shipment Process Extraction' ein und speichern Sie das Datenmodell.
- Den Bericht erstellen: Navigieren Sie zurück zum Katalog, klicken Sie auf die Schaltfläche 'Neu' und wählen Sie 'Bericht'. Wählen Sie im Berichtserstellungsassistenten die Option 'Datenmodell verwenden' und suchen Sie das eben gespeicherte Datenmodell.
- Das Berichtslayout konfigurieren: Der Assistent führt Sie durch die Erstellung eines Layouts. Ein einfaches 'Tabellen'-Layout ist ausreichend. Ziehen Sie alle Spalten aus Ihrem Datensatz per Drag & Drop in die Tabelle. Führen Sie keine Gruppierung oder Aggregation durch.
- Den Bericht speichern: Sobald das Layout konfiguriert ist, fahren Sie mit dem letzten Schritt fort und speichern Sie den Bericht. Geben Sie ihm einen Namen, der dem Datenmodell ähnlich ist.
- Den Bericht ausführen: Öffnen Sie den neu erstellten Bericht. Sie werden aufgefordert, Werte für die Parameter (Start Date, End Date, Domain Name) einzugeben. Geben Sie den gewünschten Bereich ein.
- Die Daten exportieren: Nachdem der Bericht ausgeführt wurde und die Daten anzeigt, klicken Sie auf das Menü 'Aktionen' und wählen Sie 'Exportieren'. Wählen Sie das CSV-Format. Dadurch wird eine CSV-Datei mit dem Event Log heruntergeladen.
- Für den Upload vorbereiten: Öffnen Sie die heruntergeladene CSV-Datei. Stellen Sie sicher, dass die Spaltenüberschriften mit den erforderlichen Attributen:
ShipmentId,ActivityName,EventTimeund den empfohlenen Attributen übereinstimmen. Stellen Sie sicher, dass dieEventTime-Spalte in einem konsistenten Datums-/Zeitformat vorliegt. Die Datei ist nun bereit für den Upload in ProcessMind.
Konfiguration
- Data Source: Die Abfrage muss gegen das primäre operationale OTM-Datenbankschema ausgeführt werden, das typischerweise GLOGOWNER genannt wird.
- Report Parameters:
P_START_DATE: Der Beginn des Berichtszeitraums. Das Format sollte 'JJJJ-MM-TT' sein.P_END_DATE: Das Ende des Berichtszeitraums. Das Format sollte 'JJJJ-MM-TT' sein.P_DOMAIN_NAME: Die spezifische OTM-Domäne, für die Daten extrahiert werden sollen. Verwenden Sie '[Ihr Domänenname]'.
- Date Range: Für eine erste Analyse wird empfohlen, Daten für einen Zeitraum von 3 bis 6 Monaten zu extrahieren, um Datenvolumen und Performance auszugleichen. Für Produktionsläufe sollten Sie in Betracht ziehen, Daten in monatlichen oder quartalsweisen Stapeln zu extrahieren.
- Permissions: Der OTM-Benutzer, der den Bericht ausführt, benötigt spezifische Rollen, wie BI PUBLISHER DATA MODEL DEVELOPER und BI PUBLISHER REPORT DEVELOPER, um Datenmodelle und Berichte zu erstellen und zu ändern. Lesezugriff auf die zugrundeliegenden Datenbanktabellen ist ebenfalls erforderlich.
- Performance: Die Abfrage verbindet mehrere große Tabellen. Für Umgebungen mit hohem Datenvolumen wird dringend empfohlen, diesen Bericht außerhalb der Spitzenzeiten auszuführen, um die System-Performance nicht zu beeinträchtigen. Der Datumsbereich sollte so eng wie möglich gehalten werden, um sicherzustellen, dass der Bericht zeitnah abgeschlossen wird.
a Beispielabfrage 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' Schritte
- Datenbankverbindung herstellen: Besorgen Sie sich schreibgeschützte Anmeldeinformationen und Verbindungsdetails (Host, Port, Service ID) für die Oracle Transportation Management-Datenbank. Sie benötigen Zugriff auf das
GLOGOWNER-Schema. - SQL Client konfigurieren: Richten Sie ein SQL-Client-Tool, wie Oracle SQL Developer, DBeaver oder Toad, mit den Datenbank-Verbindungsdetails aus dem vorherigen Schritt ein.
- Die Abfrage vorbereiten: Kopieren Sie die vollständige, in diesem Dokument bereitgestellte SQL-Abfrage in den Abfrage-Editor Ihres SQL Clients.
- Abfrageparameter festlegen: Suchen Sie die Platzhalterwerte innerhalb der
WHERE-Klauseln der Abfrage. Sie müssen[START_DATE],[END_DATE]und[YOUR_DOMAIN_NAME]durch passende Werte für Ihre Extraktion ersetzen. Legen Sie beispielsweise die Daten fest, um einen Zeitraum von 3-6 Monaten abzudecken, und geben Sie die operative Domäne an, die Sie analysieren möchten. - Die Abfrage ausführen: Führen Sie die geänderte SQL-Abfrage aus. Je nach Datumsbereich und Systemgröße kann dies mehrere Minuten dauern.
- Die Ergebnisse überprüfen: Nachdem die Abfrage abgeschlossen ist, überprüfen Sie schnell die Ausgabe in Ihrem Client, um sicherzustellen, dass Zeilen zurückgegeben werden und wichtige Spalten wie
ShipmentId,ActivityNameundEventTimegefüllt sind. - Nach CSV exportieren: Exportieren Sie das vollständige Ergebnis als CSV-Datei. Verwenden Sie Standard-CSV-Einstellungen: Komma als Trennzeichen, doppelte Anführungszeichen für Text und UTF-8-Codierung.
- Spaltenüberschriften finalisieren: Überprüfen Sie vor dem Upload, ob die Spaltenüberschriften in der CSV-Datei exakt mit den erforderlichen Attributnamen übereinstimmen:
ShipmentId,ActivityName,EventTime,CarrierName,RequestedDeliveryDate,ShipmentCost,TransportationModeundDelayReason. - Upload zu ProcessMind: Die vorbereitete CSV-Datei ist nun bereit für den Upload und die Analyse in ProcessMind.
Konfiguration
- Database Schema: Die Abfrage ist dafür ausgelegt, gegen das Standard-Datenbankschema von Oracle Transportation Management ausgeführt zu werden, das typischerweise
GLOGOWNERgenannt wird. - Required Authorizations: Ein Datenbankbenutzer mit Lesezugriff auf die in der Abfrage referenzierten Tabellen ist erforderlich. Diese Tabellen umfassen
SHIPMENT,SHIPMENT_STOP,ORDER_RELEASE,SHIPMENT_STATUS,SERVPROV,SHIPMENT_COST,DOCUMENT,BILLundVOUCHER. - Domain Filtering: Es ist entscheidend, in einer Multi-Tenant-OTM-Umgebung nach
DOMAIN_NAMEzu filtern. Die Abfrage enthält einen Platzhalter[YOUR_DOMAIN_NAME], der so konfiguriert werden muss, dass Daten für die richtige Geschäftseinheit extrahiert werden. - Date Range: Um Performance und Datenvolumen zu verwalten, müssen Sie ein Start- und Enddatum angeben. Das Filtern nach einer indizierten Spalte wie
SHIPMENT.INSERT_DATEwird empfohlen. Ein Zeitraum von 3 bis 6 Monaten ist typisch für eine erste Analyse. - Status Code Customization: Die Abfrage verwendet gängige Standard-Statuscodes (z.B.
PLANNING_PLANNED FINAL,TENDER_ACCEPTED). Ihre OTM-Implementierung verwendet möglicherweise angepasste Statuscodes. Möglicherweise müssen Sie die Werte in denWHERE-Klauseln an die Konfiguration Ihres Systems anpassen.
a Beispielabfrage 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%';