Datatemplate voor transportbeheer
Datatemplate voor transportbeheer
- Aanbevolen attributen om te verzamelen
- Belangrijke activiteiten om vast te leggen
- Richtlijnen voor data-extractie
Attributen voor transportbeheer
| Naam | Beschrijving | ||
|---|---|---|---|
| Activiteitsnaam ActivityName | De naam van een specifieke gebeurtenis of mijlpaal in het transportproces van een zending. | ||
| Beschrijving Dit attribuut beschrijft één stap in de levenscyclus van het transport, zoals 'Zending gepland', 'Goederen opgehaald' of 'Goederen afgeleverd'. Elke activiteit staat voor een afzonderlijke bedrijfsgebeurtenis die de zending dichter bij de afronding brengt. De volgorde en duur van deze activiteiten analyseren is de kern van process mining. Zo ontdek je hoe het proces werkelijk verloopt, spoor je bottlenecks tussen stappen op en meet je of het proces de standaardwerkwijzen volgt. Afwijkingen in de activiteiten kunnen wijzen op uitzonderingen, herstelwerk of een afwijking van de beste route. Waarom dit belangrijk is Dit attribuut bepaalt de stappen op de proceskaart en maakt het mogelijk het traject van de zending, bottlenecks en afwijkingen zichtbaar te maken en te analyseren. Waar vind je dit? Deze informatie is afkomstig uit gebeurtenistabellen of statuswijzigingslogboeken in Oracle Transportation Management. De specifieke activiteitsnaam kan zijn samengesteld uit gebeurteniscodes en beschrijvingen. Voorbeelden Zending geplandGoederen opgehaaldDouaneafhandeling afgerondGoederen afgeleverd | |||
| Tijdstip van gebeurtenis EventTime | De exacte datum en tijd waarop een specifieke transportactiviteit of gebeurtenis plaatsvond. | ||
| Beschrijving Deze timestamp geeft het exacte moment aan waarop een activiteit, zoals 'Vervoerder toegewezen' of 'Ontvangstbewijs ontvangen', in het systeem is vastgelegd. Timestamps zijn essentieel voor process mining, omdat ze de chronologische volgorde van gebeurtenissen per zending bepalen. Voor alle tijdsanalyses is het belangrijk dat deze timestamps kloppen. Je gebruikt ze om doorlooptijden tussen activiteiten te berekenen, procesduren te meten, vertragingen op te sporen en prestaties te toetsen aan service level agreements. Met een analyse van het tijdstip van de gebeurtenis kun je precies zien waar tijd verloren gaat. Waarom dit belangrijk is Deze timestamp is nodig om gebeurtenissen chronologisch te ordenen en alle prestatiemetrieken te berekenen, zoals doorlooptijden en vertragingen. Waar vind je dit? Afkomstig uit de timestampvelden bij gebeurtenissen in de tabellen met trackinggebeurtenissen of statusgeschiedenis van OTM. Voorbeelden 2023-10-26T08:00:00Z2023-10-27T14:30:00Z2023-10-28T09:15:00Z | |||
| Zending ShipmentId | De unieke identificatiecode van één zending. Deze dient als primaire case-ID om alle bijbehorende transportactiviteiten te volgen. | ||
| Beschrijving De Shipment-ID identificeert één goederenvervoer van afzender naar ontvanger. Dit attribuut vormt de basis van de procesanalyse: alle bijbehorende gebeurtenissen, zoals planning, boeking, ophalen, transport, aflevering en facturering, worden ermee samengebracht in één case. Met process mining kun je gebeurtenissen op basis van de Shipment-ID analyseren en het volledige transportproces van begin tot eind bekijken. De ID wordt gebruikt om belangrijke metrieken te berekenen, zoals de totale doorlooptijd, de prestaties van tijdige levering en de kosten per zending. Zo krijg je een compleet beeld van de procesefficiëntie en het serviceniveau. Waarom dit belangrijk is Dit is de primaire Case-ID die alle processtappen met elkaar verbindt. Zo kun je het volledige transporttraject van elke afzonderlijke zending analyseren. Waar vind je dit? Dit is een primaire sleutel in Oracle Transportation Management, meestal te vinden in tabellen voor zendingen of orderbeheer. Raadpleeg de OTM-documentatie voor de specifieke tabel- en veldnamen. Voorbeelden SH-0012345SH-0012346SH-0012347 | |||
| Aangevraagde afleverdatum RequestedDeliveryDate | De datum en tijd waarop de klant de aflevering heeft aangevraagd of die als doel is afgesproken in de service level agreement (SLA). | ||
| Beschrijving Dit attribuut bevat de beoogde afleverdatum en -tijd van een zending. Het geeft de afspraak met de klant weer en is de belangrijkste maatstaf voor het meten van tijdige levering. Bij process mining vergelijk je deze datum met de werkelijke afleverdatum en -tijd uit de activiteit 'Goederen afgeleverd' om vast te stellen of een zending op tijd of te laat was. Dit vormt de basis voor de KPI Percentage tijdige leveringen en is essentieel voor het dashboard Overzicht afleverprestaties. Door afwijkingen te analyseren, kun je terugkerende oorzaken van vertragingen opsporen en de klanttevredenheid verbeteren. Waarom dit belangrijk is Dit is de belangrijkste maatstaf voor het meten van tijdige levering, een belangrijke KPI voor klanttevredenheid en goede bedrijfsvoering. Waar vind je dit? Deze informatie staat meestal op order- of zendingniveau in OTM, vaak in velden voor afleverdatums of afspraken. Voorbeelden 2023-11-15T17:00:00Z2023-11-20T12:00:00Z2023-11-22T09:00:00Z | |||
| Kosten van zending ShipmentCost | De totale vrachtkosten of het bedrag dat voor het vervoer van de zending in rekening wordt gebracht. | ||
| Beschrijving Dit attribuut geeft de totale financiële kosten van een zending weer, waaronder vervoerderskosten, brandstoftoeslagen en andere bijkomende kosten. Het is een belangrijke maatstaf voor de financiële prestaties van het transportproces. Met de kosten van een zending kun je de KPI Gemiddelde vervoerderskosten per zending berekenen. Je kunt de kosten uitsplitsen naar vervoerder, route, vervoerswijze of zendingssoort om besparingsmogelijkheden te vinden. Ook kun je ze gebruiken in de analyse van vrachtfactuurverschillen om geplande en werkelijke kosten te vergelijken. Waarom dit belangrijk is Levert de financiële data die nodig is om transportuitgaven te analyseren, besparingsmogelijkheden op te sporen en de financiële gevolgen van inefficiënte processen te meten. Waar vind je dit? Deze informatie staat meestal in de financiële of kostensecties van een zending in OTM en wordt vaak ingevuld nadat de vrachtkosten zijn berekend en de afrekening heeft plaatsgevonden. Voorbeelden 250.751200.00545.50 | |||
| Naam vervoerder CarrierName | De naam van de vervoerder of dienstverlener die verantwoordelijk is voor het transport van de zending. | ||
| Beschrijving Dit attribuut identificeert de logistieke partner die het transport van de goederen uitvoert. Voorbeelden zijn grote vrachtvervoerders, lokale koeriers en rederijen. Een belangrijk doel van process mining voor transport is de prestaties per vervoerder analyseren. Met dit attribuut kun je zendingen groeperen en vervoerders vergelijken op metrieken zoals het percentage tijdige leveringen, kosten per zending, transporttijd en het aantal problemen, zoals vertragingen of factuurverschillen. Deze inzichten helpen bij de keuze van vervoerders, contractonderhandelingen en prestatiebeheer. Waarom dit belangrijk is Maakt het mogelijk de prestaties van vervoerders te vergelijken. Dat helpt bij de keuze van vervoerders, onderhandelingen en kostenbesparing. Waar vind je dit? Te vinden in de zendinggegevens in OTM, gekoppeld aan de records van de toegewezen vervoerder of dienstverlener. De gegevens kunnen zijn opgeslagen in tabellen voor zendingen en dienstverleners. Voorbeelden FedEx FreightUPS Supply Chain SolutionsMaersk LineKnight-Swift Transportation | |||
| Reden van vertraging DelayReason | Een code of beschrijving die de oorzaak van een vertraging in het verloop van de zending aangeeft. | ||
| Beschrijving Als een zending vertraging oploopt, geeft dit attribuut de reden aan, bijvoorbeeld 'Weer', 'Douaneblokkade', 'Havencongestie' of 'Mechanisch defect'. Deze informatie komt uit updates van vervoerders of handmatige invoer in OTM. Dit attribuut is essentieel voor oorzaakanalyse van te late leveringen. Door redenen voor vertraging in te delen en te tellen, kunnen bedrijven de meest voorkomende problemen in hun toeleveringsketen opsporen. Zo kun je gerichte verbeteringen doorvoeren, bijvoorbeeld betrouwbaardere vervoerders kiezen voor bepaalde routes of documentatie verbeteren om de douaneafhandeling te versnellen. Waarom dit belangrijk is Geeft inzicht in de oorzaken van te late zendingen. Zo kun je veelvoorkomende problemen gericht aanpakken en de prestaties van tijdige levering verbeteren. Waar vind je dit? Meestal vastgelegd in de details van trackinggebeurtenissen in OTM. De reden kan gekoppeld zijn aan specifieke uitzonderings- of vertragingscodes. Voorbeelden WEATHER_DELAYCUSTOMS_INSPECTIONPORT_CONGESTIONTRAFFIC | |||
| Vervoerswijze TransportationMode | De manier waarop de zending wordt vervoerd, bijvoorbeeld per vrachtwagen, trein, schip of vliegtuig. | ||
| Beschrijving Dit attribuut deelt zendingen in naar vervoerswijze. Veelvoorkomende vervoerswijzen zijn Full Truckload (FTL), Less Than Truckload (LTL), zeevaart, luchtvracht en spoorvervoer. De vervoerswijze is een belangrijk kenmerk van een zending en heeft invloed op de kosten, transporttijd en complexiteit. Bij analyses is de vervoerswijze een belangrijke dimensie om gegevens uit te splitsen. Je kunt er de procesprestaties en kosten van verschillende vervoerswijzen mee vergelijken. Zo kun je bijvoorbeeld vaststellen welke vervoerswijzen vaker vertragingen onderweg hebben of hogere kosten per kilometer met zich meebrengen. Dat helpt bij strategische keuzes over logistieke netwerken. Waarom dit belangrijk is Maakt het mogelijk prestaties en kosten per vervoerswijze te analyseren, zodat je inzicht krijgt in weg-, lucht-, zee- en spoorvervoer. Waar vind je dit? Dit is een standaardattribuut op zendingniveau in OTM, meestal te vinden in een veld voor 'mode' of 'transport type'. Voorbeelden FTLLTLZEEVAARTAIR | |||
| Bronsysteem SourceSystem | Geeft aan uit welk systeem de gebeurtenisdata afkomstig zijn, bijvoorbeeld Oracle Transportation Management. | ||
| Beschrijving Dit attribuut geeft aan in welke brontoepassing de data is aangemaakt. In een complexe logistieke omgeving kan de data afkomstig zijn uit OTM, een warehousemanagementsysteem (WMS), het systeem van een vervoerder via EDI of andere gekoppelde platforms. Kennis van het bronsysteem is belangrijk voor datagovernance, kwaliteitscontroles en het oplossen van problemen. Zo begrijp je de context van de data en kun je verschillen in detailniveau of actualiteit verklaren. Voor analyses kun je hiermee filteren op gebeurtenissen uit een specifiek, betrouwbaar systeem. Waarom dit belangrijk is Dit geeft belangrijke context over de herkomst van de data en helpt bij datavalidatie en analyses in omgevingen met meerdere systemen. Waar vind je dit? Dit is meestal een vaste waarde die tijdens de data-extractie wordt toegevoegd om de herkomst van de records aan te geven. Voorbeelden Oracle OTMOTM CloudSAP TM | |||
| Douaneagent CustomsAgent | De douane-expediteur of -agent die verantwoordelijk is voor de douaneafhandeling van de zending. | ||
| Beschrijving Bij internationale zendingen geeft dit attribuut aan welke externe agent of welk intern team de douanedocumenten en -procedures afhandelt. De prestaties van deze agent kunnen veel invloed hebben op de totale transittijd. Door de doorlooptijd van de douaneafhandeling per douaneagent te analyseren, kun je hun prestaties vergelijken. Zo zie je welke agenten het efficiëntst werken in bepaalde landen of voor specifieke productsoorten. Die informatie helpt bij het kiezen van douanepartners en bij het verbeteren van de werkwijze van agenten die achterblijven. Waarom dit belangrijk is Hiermee kun je de prestaties van douane-expediteurs meten, efficiënte partners herkennen en vertragingen door douaneafhandeling beperken. Waar vind je dit? Deze informatie kan in OTM bij de gegevens van de internationale zending zijn opgeslagen als dienstverlener of partijrol. Voorbeelden Global Customs ServicesLivingston InternationalFlexport | |||
| Gebruikersnaam UserName | De naam of ID van de gebruiker die een activiteit heeft uitgevoerd of daarvoor verantwoordelijk is. | ||
| Beschrijving Dit attribuut geeft aan welke gebruiker of systeemagent een specifieke gebeurtenis heeft uitgevoerd, zoals ‘Zending gepland’ of ‘Vervoerder toegewezen’. Zo is duidelijk wie of wat bij het proces betrokken was. In process mining helpt een analyse van activiteiten per gebruiker om de werkverdeling te begrijpen, opleidingsbehoeften te herkennen en de prestaties van gebruikers of teams te vergelijken. Je kunt er ook mee onderscheiden welke activiteiten handmatig zijn uitgevoerd en welke automatisch door het systeem zijn afgehandeld. Waarom dit belangrijk is Maakt duidelijk wie waarvoor verantwoordelijk is en helpt de werkbelasting en prestaties per gebruiker of team te analyseren. Waar vind je dit? Afkomstig uit gebruikers-ID-velden, zoals INSERT_USER, die in OTM zijn gekoppeld aan statuswijzigingen of gebeurtenissen in historie- of logtabellen. Voorbeelden JSMITHLOGISTICS_PLANNER_ASYSTEM_AUTO | |||
| Laatste data-update LastDataUpdate | De timestamp die aangeeft wanneer de data voor deze gebeurtenis voor het laatst is vernieuwd of uit het bronsysteem is opgehaald. | ||
| Beschrijving Dit attribuut registreert wanneer de data voor het laatst uit Oracle Transportation Management is opgehaald. Het geeft aan hoe actueel de geanalyseerde data is, niet wanneer de bedrijfsgebeurtenis plaatsvond. Deze timestamp is belangrijk om te weten hoe actueel de process mining-analyse is. Je ziet hiermee of je realtime informatie bekijkt of een momentopname. Ook helpt de timestamp bij het beheren van vernieuwingscycli en zorgt die ervoor dat beslissingen op actuele informatie zijn gebaseerd. Waarom dit belangrijk is Geeft aan hoe actueel de data is, zodat gebruikers weten hoe recent de analyse is en wanneer de data naar verwachting opnieuw wordt vernieuwd. Waar vind je dit? Dit is meestal een door het systeem gegenereerde timestamp die tijdens het inlezen van de data of het ETL-proces wordt toegevoegd. Voorbeelden 2023-11-01T02:00:00Z2023-11-02T02:00:00Z | |||
| Land van bestemming DestinationCountry | Het land waar de zending volgens de planning wordt afgeleverd. | ||
| Beschrijving Dit attribuut geeft het land van de eindbestemming van de zending aan, op basis van de locatie van de ontvanger. Het vormt een aanvulling op het land van vertrek bij geografische procesanalyses. Net als het land van vertrek helpt het land van bestemming om prestatieverschillen tussen handelsroutes te begrijpen. Het is vooral belangrijk voor analyses van douaneafhandeling, prestaties bij de laatste aflevering en de effectiviteit van vervoerders per regio. Zo kun je logistieke strategieën afstemmen op de eisen van verschillende bestemmingsmarkten. Waarom dit belangrijk is Belangrijk om prestaties op specifieke handelsroutes te analyseren en uitdagingen rond douane, vervoerders en regelgeving op bestemmingsmarkten te begrijpen. Waar vind je dit? Afgeleid van de adresgegevens van de bestemmingslocatie of ontvanger van de zending. Deze gegevens staan in de locatiebasisgegevens van OTM. Voorbeelden CANFRAJPNBRA | |||
| Land van vertrek OriginCountry | Het land waar de zending vertrekt. | ||
| Beschrijving Dit attribuut geeft het land van vertrek van de zending aan, op basis van de locatie van de verzender. Het is belangrijke geografische informatie voor logistieke analyses. Door processen uit te splitsen naar land van vertrek, krijg je inzicht in regionale verschillen in prestaties. De douaneafhandeling, vervoerderskosten en transporttijden kunnen bijvoorbeeld sterk verschillen per land van herkomst. Deze uitsplitsing is belangrijk voor het beheer van internationale logistiek en het opsporen van regionale bottlenecks. Waarom dit belangrijk is Maakt geografische analyse van het transportproces mogelijk en helpt regionale bottlenecks, kosten en prestatieverschillen op te sporen. Waar vind je dit? Afgeleid van de adresgegevens van de bronlocatie of verzender van de zending. Deze gegevens staan in de locatiebasisgegevens van OTM. Voorbeelden USADEUCHNMEX | |||
| Omgeleid IsRerouted | Een indicator die aangeeft of de route van de zending na de eerste boeking is gewijzigd. | ||
| Beschrijving Dit booleaanse attribuut krijgt de waarde ‘true’ als de route van een zending ingrijpend wordt gewijzigd nadat deze al is gepland en geboekt. Dat kan gebeuren op verzoek van de klant, door onverwachte verstoringen of om de route te optimaliseren. Dit attribuut ondersteunt de KPI Percentage omgeleide zendingen en het dashboard Inzichten in omleidingen en spoedzendingen. Door bij te houden hoe vaak routes worden gewijzigd, kun je onderliggende problemen in de planning of uitvoering herkennen. Ook worden instabiliteit in de bedrijfsvoering en de bijbehorende kosten zichtbaar, zodat managers manieren kunnen vinden om kostbare en verstorende wijzigingen te beperken. Waarom dit belangrijk is Helpt de frequentie en impact van uitzonderingen in de bedrijfsvoering, zoals routewijzigingen, in kaart te brengen en maakt inefficiënties in de planning en uitvoering zichtbaar. Waar vind je dit? Deze indicator wordt afgeleid door specifieke omleidingsgebeurtenissen in het event log te herkennen of de uiteindelijke route te vergelijken met de oorspronkelijk geplande route. Voorbeelden truefalse | |||
| Op tijd geleverd IsOnTimeDelivery | Een berekende indicator die aangeeft of de zending op of vóór de gevraagde leverdatum is afgeleverd. | ||
| Beschrijving Dit booleaanse attribuut wordt berekend door de timestamp van de activiteit ‘Goederen afgeleverd’ te vergelijken met de ‘Gevraagde leverdatum’. De waarde is ‘true’ als de zending op tijd of eerder is afgeleverd en ‘false’ als dat te laat was. Dit attribuut wordt gebruikt voor de KPI Percentage op tijd geleverd en is een belangrijk onderdeel van het dashboard Overzicht leverprestaties. Het maakt de leverprestaties eenvoudig te analyseren: voor elke zending is duidelijk of die op tijd of te laat is, zodat je de gegevens makkelijk kunt filteren, optellen en visualiseren. Waarom dit belangrijk is Deze berekende indicator maakt het eenvoudiger om de KPI Op tijd geleverd te meten en zendingen die op tijd of te laat zijn te filteren en analyseren. Waar vind je dit? Dit attribuut staat niet in het bronsysteem. Het wordt tijdens de datatransformatie berekend door de timestamp van de activiteit ‘Goederen afgeleverd’ te vergelijken met het attribuut ‘RequestedDeliveryDate’. Voorbeelden truefalse | |||
| Status van zending ShipmentStatus | De huidige algemene status van de zending in het proces, zoals 'Planned', 'In Transit' of 'Delivered'. | ||
| Beschrijving Dit attribuut geeft op hoofdlijnen aan waar de zending zich in het proces bevindt. Een activiteit is een gebeurtenis op een bepaald moment; de status geeft de toestand van de case van de zending weer. Process mining richt zich op de stroom van activiteiten, maar de algemene status is handig om cases te filteren en dashboards van context te voorzien. Je kunt bijvoorbeeld alleen 'Completed'-zendingen analyseren of onderzoeken waarom veel zendingen ongewoon lang de status 'In Transit' hebben. Waarom dit belangrijk is Geeft op hoofdlijnen de voortgang van een zending weer en is handig om cases in analyses te filteren en te groeperen. Waar vind je dit? Beschikbaar op het hoofdrecord van de zending in OTM. De status geeft de huidige toestand in de workflow weer. Voorbeelden GEPLANDGEBOEKTONDERWEGAFGELEVERD | |||
| Verschil op vrachtfactuur FreightBillDiscrepancy | Een indicator die aangeeft of er bij de controle van de vrachtfactuur een verschil is gevonden. | ||
| Beschrijving Dit booleaanse attribuut krijgt de waarde ‘true’ als de vrachtfactuur van de vervoerder niet overeenkomt met de verwachte kosten die OTM heeft berekend. Verschillen kunnen ontstaan door onjuiste tarieven, bijkomende kosten of andere factuurfouten. Dit attribuut vormt de basis voor de KPI Verschilpercentage vrachtfacturen. Door deze indicatoren per vervoerder, route of type zending te analyseren, kun je de oorzaken van factuurfouten achterhalen. Dat helpt om de datakwaliteit te verbeteren, de controle efficiënter te maken en te hoge betalingen te voorkomen. Waarom dit belangrijk is Dit ondersteunt de analyse van verschillen op vrachtfacturen. De indicator markeert zendingen met factuurfouten, zodat je te hoge betalingen kunt terugdringen en de financiële controle kunt verbeteren. Waar vind je dit? Dit is meestal een status of indicator die wordt ingesteld tijdens de afrekening van vrachtkosten en het vergelijken van facturen in OTM. Voorbeelden truefalse | |||
| Zendingssoort ShipmentType | Een indeling van de zending, bijvoorbeeld op basis van serviceniveau, goederensoort of bedrijfseenheid. | ||
| Beschrijving Dit attribuut geeft de zending een indeling die aansluit op de bedrijfsvoering, bijvoorbeeld ‘Standaard’, ‘Spoed’, ‘Gevaarlijke stoffen’ of ‘Intercompany’. Deze indeling helpt bij het toepassen van verschillende bedrijfsregels en prioriteiten, en bij het maken van analyses. Met Zendingstype als dimensie in process mining kun je processen voor verschillende soorten zendingen vergelijken. Zo zie je of bepaalde zendingen vaker vertraging oplopen, hogere kosten hebben of een afwijkende procesroute volgen. Met die inzichten kun je processen beter afstemmen op de behoeften per type zending. Waarom dit belangrijk is Hiermee kun je analyses indelen naar bedrijfscontext. Zo zie je of verschillende soorten zendingen andere processen volgen of anders presteren. Waar vind je dit? Dit is meestal een configureerbaar veld of attribuut op de zending- of orderregistratie in OTM. Voorbeelden StandaardSpoedInternationaalBinnenlands | |||
Activiteiten voor transportbeheer
| Activiteit | Beschrijving | ||
|---|---|---|---|
| Betaling verwerkt | Dit is de laatste activiteit: de betaling voor de diensten van de vervoerder is succesvol verwerkt. Hiermee is de financiële afhandeling van de zending afgerond. | ||
| Waarom dit belangrijk is Met deze activiteit is de levenscyclus van het transport afgerond. De gegevens zijn belangrijk om de verwerkingstijd van betalingen aan vervoerders te meten en de samenwerking met vervoerders goed te beheren. Waar vind je dit? Af te leiden uit de statuswijziging van de bijbehorende voucher of factuur naar 'PAID'. Deze data staat in de tabellen VOUCHER of BILL. Vastleggen Zoek de timestamp waarop VOUCHER.VOUCHER_STATUS_ID verandert in 'PAID'. Gebeurtenistype inferred | |||
| Goederen afgeleverd | Deze activiteit geeft aan dat de zending succesvol is afgeleverd bij de ontvanger op de eindbestemming. Dit wordt vastgelegd wanneer voor de laatste stop van de zending een werkelijke aankomsttijd is geregistreerd. | ||
| Waarom dit belangrijk is Dit is de belangrijkste mijlpaal voor het meten van de prestaties van tijdige levering en de totale doorlooptijd. Hiermee is de uitvoering van het transportproces afgerond. Waar vind je dit? Af te leiden uit het invullen van het veld ACTUAL_ARRIVAL voor het record van de laatste stop van de zending in de tabel SHIPMENT_STOP. Vastleggen Gebruik de timestamp ACTUAL_ARRIVAL van het laatste record in de tabel SHIPMENT_STOP voor de zending. Gebeurtenistype inferred | |||
| Goederen opgehaald | Deze activiteit markeert het begin van het fysieke transport, wanneer de vervoerder de goederen op de plaats van vertrek heeft opgehaald. De gebeurtenis wordt vastgelegd wanneer de eerste stop van de zending de status 'DEPARTED' krijgt. | ||
| Waarom dit belangrijk is Dit is een belangrijke mijlpaal die het begin van de transportfase markeert. De gegevens zijn nodig om de prestaties van vervoerders bij het ophalen en de werkelijke transporttijden te volgen. Waar vind je dit? Af te leiden uit de statuswijziging van de eerste stop in de tabel SHIPMENT_STOP naar 'DEPARTED', of uit een statusgebeurtenis van de zending die het ophalen aangeeft. Vastleggen Gebruik de timestamp ACTUAL_DEPARTURE van het eerste record in de tabel SHIPMENT_STOP voor de zending. Gebeurtenistype inferred | |||
| Ontvangstbewijs ontvangen | Dit geeft aan dat een formele bevestiging van de voltooide aflevering, zoals een ondertekend document, is ontvangen en geregistreerd. Vaak wordt dit vastgelegd als een specifiek documenttype dat aan de zending is gekoppeld. | ||
| Waarom dit belangrijk is Een POD is belangrijk voor facturering en het oplossen van geschillen. Door de ontvangst ervan te volgen, kun je de naleving van processen bewaken en de financiële afhandeling versnellen. Waar vind je dit? Dit kan een expliciete gebeurtenis zijn of worden afgeleid van de aanmaakdatum van een POD-document dat aan de zending is gekoppeld. Zoek in de tabel DOCUMENT naar documenten met het documenttype POD. Vastleggen Gebruik de aanmaaktimestamp van een document van het type 'POD' dat aan de zending is gekoppeld. Gebeurtenistype explicit | |||
| Transportaanvraag ontvangen | Deze activiteit markeert het moment waarop in het systeem een transportbehoefte wordt aangemaakt, meestal als Order Release. De gebeurtenis wordt vastgelegd wanneer in Oracle Transportation Management een nieuw Order Release-record wordt aangemaakt. Dit is de eerste registratie van de vraag naar vervoer. | ||
| Waarom dit belangrijk is Als startpunt van het proces is deze activiteit belangrijk om de totale doorlooptijd van begin tot eind te meten en vraagpatronen te begrijpen. Je kunt hiermee analyseren hoeveel tijd er verstrijkt tussen de aanvraag en de planning. Waar vind je dit? Dit is een expliciete gebeurtenis, afgeleid van de aanmaaktimestamp van het Order Release-record in de tabel ORDER_RELEASE. Hiervoor kun je INSERT_DATE of een specifiek veld met de aanmaakdatum gebruiken. Vastleggen Gebruik de aanmaaktimestamp van de Order Release in de tabel ORDER_RELEASE. Gebeurtenistype explicit | |||
| Zending gepland | Deze activiteit geeft aan dat de OTM-planningsengine een of meer order releases succesvol heeft samengevoegd tot een uitvoerbare zending. De gebeurtenis wordt vastgelegd wanneer de status van een zending verandert om aan te geven dat deze is gepland, bijvoorbeeld 'PLANNING_PLANNED FINAL'. | ||
| Waarom dit belangrijk is Dit is een belangrijke mijlpaal tussen de vraagfase en de uitvoeringsfase. Door de tijd tot deze activiteit te analyseren, kun je de efficiëntie van de planning beoordelen en bottlenecks in de prestaties van de engine opsporen. Waar vind je dit? Af te leiden uit de statusgeschiedenis van het Shipment-object in de tabel SHIPMENT. Zoek naar een statuswijziging die aangeeft dat de planning is afgerond. Vastleggen Zoek de timestamp waarop SHIPMENT.SHIPMENT_STATUS_VALUE_GID verandert in de status 'Planned'. Gebeurtenistype inferred | |||
| Afleverafspraak ingepland | Deze activiteit markeert wanneer met de ontvanger een specifieke datum en tijd voor de aflevering is afgesproken. De gebeurtenis wordt afgeleid van de afspraakgegevens voor de laatste stop van de zending. | ||
| Waarom dit belangrijk is Dit is een belangrijke stap in de coördinatie van de laatste aflevering. Door de tijd tussen aankomst en de geplande aflevering te analyseren, kun je bottlenecks in de laatste kilometers opsporen. Waar vind je dit? Af te leiden uit het invullen van de datum- en tijdvelden voor de laatste stop (de afleverlocatie) van de zending in de tabel SHIPMENT_STOP. Vastleggen Gebruik de timestamp waarop de afspraakvelden voor de afleverstop voor het eerst worden ingevuld. Gebeurtenistype inferred | |||
| Douaneafhandeling afgerond | Bij internationale zendingen geeft deze activiteit aan dat de goederen de douane bij een grens of haven succesvol zijn gepasseerd. Dit wordt vaak vastgelegd via een specifieke gebeurtenis of statuswijziging van de zending. | ||
| Waarom dit belangrijk is Douaneafhandeling is een veelvoorkomende oorzaak van aanzienlijke vertragingen in de internationale logistiek. Door deze activiteit te volgen, kun je de doorlooptijden van de douaneafhandeling meten en verbeteren. Waar vind je dit? Deze gebeurtenis wordt meestal vastgelegd via een handmatig ingevoerde of geïntegreerde 'Customs'-gebeurtenis van de zending. Zoek in de tabel SHIPMENT_STATUS naar specifieke gebeurteniscodes voor douane. Vastleggen Zoek in de tabel SHIPMENT_STATUS naar de timestamp van een gebeurtenis 'Customs Cleared'. Gebeurtenistype explicit | |||
| Ophaalafspraak ingepland | Deze activiteit geeft aan dat een specifieke datum en tijd voor het ophalen is ingepland en vastgelegd. Vaak kun je dit afleiden uit afspraakgegevens op het niveau van de stops van de zending. | ||
| Waarom dit belangrijk is Het inplannen van afspraken is een belangrijke stap in de coördinatie. Door dit te analyseren, krijg je inzicht in de efficiëntie van de planning en de invloed daarvan op het op tijd ophalen. Waar vind je dit? Af te leiden uit het invullen van de datum- en tijdvelden voor de eerste stop (de ophaallocatie) van de zending in de tabel SHIPMENT_STOP. Vastleggen Gebruik de timestamp waarop de afspraakvelden voor de ophaalstop voor het eerst worden ingevuld. Gebeurtenistype inferred | |||
| Vervoerder toegewezen | Dit markeert het moment waarop een zending aan een specifieke vervoerder is aangeboden en door die vervoerder is geaccepteerd. Je kunt dit vaststellen aan de hand van de wijziging van de aanbiedingsstatus van de zending naar 'TENDER_ACCEPTED' of een vergelijkbare status. | ||
| Waarom dit belangrijk is Door dit te volgen, kun je de efficiëntie van de vervoerderskeuze en het aanbiedingsproces analyseren. Vertragingen in deze fase kunnen de planning flink beïnvloeden, nog voordat de zending onderweg is. Waar vind je dit? Af te leiden uit de statusgeschiedenis in de tabel SHIPMENT_TENDER. Zoek specifiek naar de timestamp waarop de status aangeeft dat een vervoerder de zending heeft geaccepteerd. Vastleggen Gebruik de timestamp van de statuswijziging naar 'TENDER_ACCEPTED' in de aanbiedingsgeschiedenis van de zending. Gebeurtenistype inferred | |||
| Vrachtfactuur gecontroleerd | Deze activiteit markeert de afronding van de controle van de vrachtfactuur. Daarbij wordt de factuur van de vervoerder vergeleken met de gegevens van de zending. Dit wordt vastgelegd wanneer de factuurstatus van een zending verandert in 'VOUCHER_AUDITED' of een vergelijkbare status. | ||
| Waarom dit belangrijk is Controle is belangrijk voor financieel beheer en het opsporen van factuurverschillen. Door deze activiteit te analyseren, kun je het proces van controle tot betaling verbeteren en de KPI voor het percentage vrachtfactuurverschillen volgen. Waar vind je dit? Af te leiden uit de statuswijziging van het Bill-object dat aan de zending is gekoppeld. Zoek in de tabel BILL naar statusupdates die aangeven dat de controle is afgerond. Vastleggen Zoek de timestamp waarop BILL.BILL_STATUS_VALUE_GID verandert in de status 'Audited'. Gebeurtenistype inferred | |||
| Zending geannuleerd | Dit geeft aan dat een zending na de planning is geannuleerd, waardoor het proces voortijdig eindigt. Dit wordt vastgelegd wanneer de status van het Shipment-object verandert in 'cancelled'. | ||
| Waarom dit belangrijk is Door annuleringen te volgen, krijg je inzicht in uitzonderingen en fouten in het proces. Je kunt zo achterhalen waarom zendingen worden geannuleerd, bijvoorbeeld door veranderingen in de vraag of planningsfouten. Waar vind je dit? Af te leiden uit de statusgeschiedenis van het Shipment-object in de tabel SHIPMENT. Zoek naar een statuswijziging zoals 'PLANNING_CANCELED'. Vastleggen Zoek de timestamp waarop SHIPMENT.SHIPMENT_STATUS_VALUE_GID verandert in de status 'Cancelled'. Gebeurtenistype inferred | |||
| Zending geboekt | Dit is de formele boekingsbevestiging van de vervoerder na een geslaagde aanbieding. Meestal wordt dit vastgelegd wanneer de status van de zending wordt bijgewerkt naar 'SECURE RESOURCES_BOOKED' of een vergelijkbare status. | ||
| Waarom dit belangrijk is Hiermee bevestigt de vervoerder de opdracht en gaat de zending officieel over naar de uitvoeringsfase. Deze stap is belangrijk voor het meten van de KPI Doorlooptijd van de zendingplanning. Waar vind je dit? Af te leiden uit een statuswijziging van het Shipment-object in de tabel SHIPMENT. Volg wanneer de status na de toewijzing van een vervoerder verandert in bevestigd of geboekt. Vastleggen Zoek de timestamp waarop SHIPMENT.SHIPMENT_STATUS_VALUE_GID verandert in de status 'Booked'. Gebeurtenistype inferred | |||
| Zending onderweg | Dit geeft aan dat de goederen zijn opgehaald en onderweg zijn naar hun bestemming. Het is geen afzonderlijk tijdstip, maar het begin van deze status wordt direct na de activiteit 'Goederen opgehaald' vastgelegd. | ||
| Waarom dit belangrijk is Deze activiteit markeert het begin van de transportfase. Dat is belangrijk om de voortgang van leveringen te volgen en vertragingen onderweg op te sporen. De activiteit vormt de basis voor het dashboard Vertragingen onderweg. Waar vind je dit? Dit is dezelfde gebeurtenis als 'Goederen opgehaald', maar wordt in procesmodellen vaak als aparte activiteit weergegeven om het begin van een nieuwe fase aan te geven. De activiteit is afgeleid van het vertrek bij de eerste stop. Vastleggen Net als bij 'Goederen opgehaald': gebruik de timestamp ACTUAL_DEPARTURE van de eerste SHIPMENT_STOP. Gebeurtenistype inferred | |||
Extractiegidsen
Stappen
- Open BI Publisher: Meld je aan bij de Oracle Transportation Management-applicatie (OTM). Ga naar Business Process Automation, vervolgens naar Reporting en kies Report Manager. De interface van Oracle Business Intelligence Publisher wordt geopend.
- Maak een datamodel: Klik in BI Publisher op de knop New en kies Data Model. De editor voor datamodellen wordt geopend. Hier stel je de databron voor je rapport in.
- Stel de SQL-query in: Klik in de editor voor datamodellen op het plusteken in het diagram Data Sets en kies SQL Query. Geef de dataset een naam, bijvoorbeeld ‘OTM_Process_Mining_DS’. Selecteer je OTM-database als Data Source. Kopieer de volledige SQL-query uit het gedeelte ‘query’ van dit document en plak deze in het tekstvak SQL Query.
- Voeg parameters toe: De query gebruikt parameters voor de datums en domeinnaam (:P_START_DATE, :P_END_DATE, :P_DOMAIN_NAME). BI Publisher herkent deze automatisch. Je kunt de eigenschappen instellen, bijvoorbeeld het datatype Date kiezen voor de datumparameters.
- Sla het datamodel op: Klik op het pictogram Save. Kies een locatie in de BI Publisher-catalogus, geef het datamodel een duidelijke naam, zoals ‘OTM Shipment Process Extraction’, en sla het op.
- Maak het rapport: Ga terug naar de catalogus, klik op New en kies Report. Selecteer in de wizard voor het maken van rapporten de optie ‘Use Data Model’ en zoek het datamodel op dat je zojuist hebt opgeslagen.
- Stel de rapportindeling in: De wizard begeleidt je bij het maken van een indeling. Een eenvoudige indeling ‘Table’ is voldoende. Sleep alle kolommen uit je dataset naar de tabel. Pas geen groeperingen of aggregaties toe.
- Sla het rapport op: Ga na het instellen van de indeling naar de laatste stap en sla het rapport op. Geef het een naam die lijkt op die van het datamodel.
- Voer het rapport uit: Open het nieuwe rapport. Je wordt gevraagd waarden in te voeren voor de parameters (Start Date, End Date, Domain Name). Vul de gewenste periode in.
- Exporteer de data: Klik nadat het rapport is uitgevoerd en de data wordt weergegeven op het menu Actions en kies Export. Selecteer CSV. Er wordt een CSV-bestand met het event log gedownload.
- Bereid de upload voor: Open het gedownloade CSV-bestand. Controleer of de kolomkoppen overeenkomen met de vereiste attributen:
ShipmentId,ActivityName,EventTimeen de aanbevolen attributen. Zorg dat de kolomEventTimeeen consistent datum- en tijdformaat gebruikt. Het bestand is nu klaar om naar ProcessMind te uploaden.
Configuratie
- Databron: Voer de query uit op het primaire operationele databaseschema van OTM, meestal GLOGOWNER.
- Rapportparameters:
P_START_DATE: Het begin van de rapportageperiode. Gebruik de notatie ‘YYYY-MM-DD’.P_END_DATE: Het einde van de rapportageperiode. Gebruik de notatie ‘YYYY-MM-DD’.P_DOMAIN_NAME: Het OTM-domein waaruit je data wilt ophalen. Gebruik ‘[Your Domain Name]’.
- Datumbereik: Haal voor een eerste analyse bij voorkeur data op over een periode van 3 tot 6 maanden. Zo houd je de hoeveelheid data en de prestaties in balans. Overweeg voor productieruns om data in maandelijkse of kwartaalbatches op te halen.
- Machtigingen: De OTM-gebruiker die het rapport uitvoert, heeft specifieke rollen nodig, zoals BI PUBLISHER DATA MODEL DEVELOPER en BI PUBLISHER REPORT DEVELOPER, om datamodellen en rapporten te maken en aan te passen. Ook is alleen-lezen toegang tot de onderliggende databasetabellen vereist.
- Prestaties: De query combineert verschillende grote tabellen. Voer het rapport bij grote hoeveelheden data bij voorkeur buiten piekuren uit om de systeemprestaties niet te beïnvloeden. Houd het datumbereik zo klein mogelijk, zodat het rapport op tijd klaar is.
a Voorbeeldquery sql
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' Stappen
- Maak verbinding met de database: Vraag inloggegevens met alleen-lezen toegang en verbindingsgegevens (host, poort, service-ID) op voor de Oracle Transportation Management-database. Je hebt toegang nodig tot het schema
GLOGOWNER. - Stel een SQL-client in: Configureer een SQL-client, zoals Oracle SQL Developer, DBeaver of Toad, met de verbindingsgegevens uit de vorige stap.
- Zet de query klaar: Kopieer de volledige SQL-query uit dit document naar de query-editor van je SQL-client.
- Stel de queryparameters in: Zoek de tijdelijke waarden in de
WHERE-clausules van de query. Vervang[START_DATE],[END_DATE]en[YOUR_DOMAIN_NAME]door de juiste waarden voor de data-extractie. Stel bijvoorbeeld een periode van 3 tot 6 maanden in en geef het operationele domein op dat je wilt analyseren. - Voer de query uit: Voer de aangepaste SQL-query uit. Afhankelijk van het datumbereik en de omvang van het systeem kan dit enkele minuten duren.
- Controleer de resultaten: Controleer na afloop in je client of er rijen zijn opgehaald en of belangrijke kolommen zoals
ShipmentId,ActivityNameenEventTimezijn ingevuld. - Exporteer naar CSV: Exporteer de volledige resultatenset naar een CSV-bestand. Gebruik de standaardinstellingen voor CSV: komma als scheidingsteken, dubbele aanhalingstekens voor tekst en UTF-8-codering.
- Controleer de kolomkoppen: Controleer vóór het uploaden of de kolomkoppen in het CSV-bestand exact overeenkomen met de vereiste attribuutnamen:
ShipmentId,ActivityName,EventTime,CarrierName,RequestedDeliveryDate,ShipmentCost,TransportationModeenDelayReason. - Upload naar ProcessMind: Het voorbereide CSV-bestand is nu klaar om naar ProcessMind te uploaden en daar te analyseren.
Configuratie
- Databaseschema: De query is bedoeld voor het standaarddatabaseschema van Oracle Transportation Management, meestal
GLOGOWNER. - Vereiste machtigingen: Je hebt een databasegebruiker nodig met alleen-lezen toegang tot de tabellen waarnaar de query verwijst. Dit zijn onder meer
SHIPMENT,SHIPMENT_STOP,ORDER_RELEASE,SHIPMENT_STATUS,SERVPROV,SHIPMENT_COST,DOCUMENT,BILLenVOUCHER. - Filteren op domein: In een OTM-omgeving met meerdere tenants is filteren op
DOMAIN_NAMEessentieel. De query bevat de tijdelijke waarde[YOUR_DOMAIN_NAME]. Stel deze in op de juiste bedrijfseenheid om de bijbehorende data op te halen. - Datumbereik: Geef een begin- en einddatum op om de prestaties en hoeveelheid data beheersbaar te houden. Filter bij voorkeur op een geïndexeerde kolom, zoals
SHIPMENT.INSERT_DATE. Voor een eerste analyse is een periode van 3 tot 6 maanden gebruikelijk. - Statuscodes aanpassen: De query gebruikt gangbare standaardstatuscodes, zoals
PLANNING_PLANNED FINALenTENDER_ACCEPTED. In jouw OTM-omgeving kunnen aangepaste statuscodes worden gebruikt. Mogelijk moet je de waarden in deWHERE-clausules aanpassen aan de configuratie van je systeem.
a Voorbeeldquery 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%'; Klaar om te beginnen?
Gebruik deze template om ruwe data om te zetten in bruikbare inzichten en je transportprocessen te verbeteren. Begin vandaag met optimaliseren.
Optimaliseer vandaag je transportbeheer
Verkort de doorlooptijd met 30% en verhelp bottlenecks in Oracle OTM.
Geen creditcard nodig • 14 dagen gratis proefperiode