Datatemplate voor assetonderhoud
Datatemplate voor assetonderhoud
- Essentiële datavelden voor onderhoudslogs
- Standaardprocesstappen en fasen van werkorders
- Technische extractielogica voor Hexagon EAM
Attributen voor assetonderhoud
| Naam | Beschrijving | ||
|---|---|---|---|
| Activiteit ActivityName | De specifieke taak of statuswijziging die heeft plaatsgevonden. | ||
| Beschrijving Dit attribuut geeft aan welke stap in het proces wordt uitgevoerd, zoals 'Werkorder aangemaakt' of 'Materiaal uitgegeven'. De waarde wordt afgeleid uit de geschiedenis van statuswijzigingen of uit specifieke transacties die op de werkorder zijn vastgelegd. Waarom dit belangrijk is Hiermee wordt de volgorde in het event log bepaald, zodat je het procesverloop kunt reconstrueren en bottlenecks kunt analyseren. Waar vind je dit? Hexagon EAM-tabel R5EVENTHISTORY, veld EVH_STATUS (gekoppeld aan omschrijvingen) of auditlogboeken Voorbeelden Werkorder aangemaaktWerkorder ingeplandWerkorder afgerondMateriaal uitgegeven | |||
| Bronsysteem SourceSystem | De naam van het systeem waaruit de data afkomstig is. | ||
| Beschrijving Dit attribuut geeft aan welk systeem de bron van de data is. In deze context is de waarde vast ingesteld op de naam van het EAM-systeem, zodat dit systeem te onderscheiden is van eventuele oude data of systemen van externe aannemers. Waarom dit belangrijk is Hiermee blijft de herkomst van de data duidelijk, vooral wanneer data uit meerdere onderhoudssystemen wordt samengevoegd. Waar vind je dit? Vaste waarde Voorbeelden Hexagon EAMInfor EAMDatastream 7i | |||
| Laatste data-update LastDataUpdate | De timestamp waarop het record voor het laatst is geëxtraheerd of vernieuwd. | ||
| Beschrijving Dit attribuut registreert wanneer de data voor het laatst uit het bronsysteem is opgehaald. Analisten kunnen hiermee zien hoe actueel de data is en mogelijke vertragingen in de rapportageketen opsporen. Waarom dit belangrijk is Zo kun je nagaan of de analyse op actuele data is gebaseerd en problemen met datasynchronisatie opsporen. Waar vind je dit? Systeemtijd op het moment van extractie Voorbeelden 2023-10-25T12:00:00Z2023-10-26T00:00:00Z | |||
| Onderhoudswerkorder WorkOrderNumber | De unieke identificatiecode van de onderhoudswerkorder. | ||
| Beschrijving Dit attribuut is de unieke primaire sleutel van de onderhoudscase. Het volgt de werkorder vanaf de eerste aanvraag via de planning en uitvoering tot de financiële afsluiting. Deze code dient als centrale case-ID om activiteitenlogboeken, arbeidsuren en materiaalverbruik aan elkaar te koppelen. Waarom dit belangrijk is Hiermee wordt de specifieke instantie van het onderhoudsproces geïdentificeerd. Zo kun je doorlooptijden en procesvarianten van begin tot eind volgen. Waar vind je dit? Hexagon EAM-tabel R5EVENTS, veld EVT_CODE Voorbeelden WO-100234WO-100235WO-100236104592 | |||
| Timestamp EventTimestamp | De datum en tijd waarop de activiteit plaatsvond. | ||
| Beschrijving Dit attribuut registreert het exacte moment waarop een gebeurtenis of statuswijziging in het systeem is vastgelegd. Hiermee kun je de tijd tussen activiteiten en de totale doorlooptijd van de werkorder berekenen. Waarom dit belangrijk is Juiste timestamps zijn essentieel om doorlooptijden te analyseren, vertragingen op te sporen en de naleving van SLA’s te berekenen. Waar vind je dit? Hexagon EAM-tabel R5EVENTHISTORY, veld EVH_DATE Voorbeelden 2023-10-12T08:30:00Z2023-10-12T14:15:00Z2023-10-13T09:00:00Z | |||
| Afdeling MaintenanceDepartment | De afdeling of werkplaats die verantwoordelijk is voor de uitvoering van het werk. | ||
| Beschrijving Dit attribuut geeft aan welk team of welke onderhoudsafdeling de werkorder uitvoert, bijvoorbeeld Elektrotechniek, Werktuigbouwkunde of Facilitaire Dienst. Zo kun je de prestaties van verschillende technische teams vergelijken. Waarom dit belangrijk is Dit attribuut ondersteunt het dashboard voor de productiviteit van technici en helpt om middelen effectief over verschillende vakgebieden te verdelen. Waar vind je dit? Hexagon EAM-tabel R5EVENTS, veld EVT_MRC Voorbeelden Elektrotechnische werkplaatsWerktuigbouwkundig onderhoudFacilitaire DienstWagenparkservice | |||
| Asset AssetCode | De unieke identificatiecode van de apparatuur of faciliteit waaraan onderhoud wordt uitgevoerd. | ||
| Beschrijving Dit attribuut koppelt de werkorder aan een specifiek apparaat of een specifieke locatie. Zo kun je de storingsfrequentie per asset analyseren en apparatuur identificeren die vaak problemen veroorzaakt of aan vervanging toe is. Waarom dit belangrijk is Dit attribuut is essentieel voor het berekenen van betrouwbaarheidsmetingen voor assets en om te zien waar de onderhoudsinspanningen naartoe gaan. Waar vind je dit? Hexagon EAM-tabel R5EVENTS, veld EVT_OBJECT Voorbeelden PUMP-001HVAC-204FLEET-99CONVEYOR-A | |||
| Gebruiker UpdatedBy | De gebruikers-ID van degene die de activiteit heeft uitgevoerd. | ||
| Beschrijving Dit attribuut bevat de login-ID van degene die verantwoordelijk is voor de statuswijziging of update. Je kunt deze gegevens gebruiken om de werkdruk per team te analyseren, opleidingsbehoeften vast te stellen en compliance van het proces te controleren. Waarom dit belangrijk is Hiermee kun je het gebruikersgedrag en het gebruik van middelen tijdens de onderhoudslevenscyclus analyseren. Waar vind je dit? Hexagon EAM-tabel R5EVENTHISTORY, veld EVH_USER Voorbeelden JSMITHADAVISSYSTEMMGR_USR | |||
| Geplande einddatum TargetCompletionDate | De geplande deadline voor de werkorder. | ||
| Beschrijving Dit attribuut geeft aan op welke datum het onderhoudswerk naar verwachting klaar is. Door deze datum te vergelijken met de werkelijke einddatum, kun je de naleving van SLA’s en de prestaties op tijd berekenen. Waarom dit belangrijk is Dit attribuut is belangrijk voor de monitor voor SLA-naleving door aannemers en voor het beoordelen van de planningsnauwkeurigheid. Waar vind je dit? Hexagon EAM-tabel R5EVENTS, veld EVT_TARGET Voorbeelden 2023-11-012023-11-152023-12-01 | |||
| Prioriteit PriorityCode | De urgentie die aan de werkorder is toegekend. | ||
| Beschrijving Dit attribuut geeft het belang van de werkorder aan, van routine tot spoed. Het bepaalt hoe middelen worden ingepland en is belangrijk om de naleving van SLA’s te volgen en misbruik van prioriteiten op te sporen. Waarom dit belangrijk is Het dashboard voor prioriteitsescalatie en resource-audit moet ervoor zorgen dat kritieke taken de juiste prioriteit krijgen. Waar vind je dit? Hexagon EAM-tabel R5EVENTS, veld EVT_PRIORITY Voorbeelden KritiekHoogGemiddeldLaag | |||
| Type werkorder WorkOrderType | Deelt de werkorder in als preventief, correctief of spoedonderhoud. | ||
| Beschrijving Dit attribuut classificeert het soort onderhoudswerk. Je kunt ermee de verhouding analyseren tussen gepland preventief onderhoud en reactieve spoedreparaties. Die verhouding zegt veel over de staat van assets en de volwassenheid van het beheer. Waarom dit belangrijk is Ondersteunt het dashboard voor de analyse van de verhouding preventief onderhoud en helpt kansen te vinden om reactief werk te verminderen. Waar vind je dit? Hexagon EAM-tabel R5EVENTS, veld EVT_TYPE Voorbeelden PPMCOREMGPRJ | |||
| Werkelijk aantal arbeidsuren ActualLaborHours | Het totale aantal uren dat op de werkorder is geboekt. | ||
| Beschrijving Dit attribuut telt de uren op die technici op de werkorder hebben geregistreerd. Je kunt deze gegevens gebruiken om de productiviteit te meten, arbeidskosten te berekenen en afwijkingen ten opzichte van het geschatte aantal uren te analyseren. Waarom dit belangrijk is Dit is de belangrijkste databron voor het dashboard over de productiviteit van technici en de KPI voor afwijkingen in arbeidsuren. Waar vind je dit? Hexagon EAM-tabel R5BOOKEDHOURS, veld BOO_HOURS (opgeteld per werkorder) Voorbeelden 2.54.012.00.5 | |||
| Aanmaakdatum DateCreated | De datum waarop de werkorder oorspronkelijk is aangemaakt. | ||
| Beschrijving Dit attribuut markeert het begin van de levenscyclus van de werkorder. Het vormt de basis voor het berekenen van de gemiddelde plantijd en de ouderdom van achterstallig werk. Waarom dit belangrijk is Dit attribuut is nodig voor het dashboard voor de snelheid van onderhoudsplanning en de KPI voor de ouderdom van de werkvoorraad. Waar vind je dit? Hexagon EAM-tabel R5EVENTS, veld EVT_CREATED Voorbeelden 2023-09-012023-09-15 | |||
| Datum materiaalaanvraag MaterialRequisitionDate | De datum waarop reserveonderdelen zijn aangevraagd. | ||
| Beschrijving Dit attribuut bevat het tijdstip waarop de materiaalaanvraag bij het magazijn of de inkoopafdeling is ingediend. Door de tijd tussen deze datum en ‘Materiaal uitgegeven’ te analyseren, krijg je inzicht in de efficiëntie van de toeleveringsketen. Waarom dit belangrijk is Dit attribuut is nodig voor het dashboard met doorlooptijden voor de inkoop van reserveonderdelen. Waar vind je dit? Hexagon EAM-tabel R5REQUISITIONS of een gekoppelde transactietabel Voorbeelden 2023-10-012023-10-05 | |||
| Escalatie naar spoed EmergencyEscalationFlag | Geeft aan of de prioriteit na het aanmaken is verhoogd naar Spoed. | ||
| Beschrijving Dit booleaanse attribuut herkent werkorders die met een lagere prioriteit zijn gestart en later de status Spoed kregen. Als dit vaak voorkomt, kan dat wijzen op een onjuiste eerste beoordeling of op misbruik van het systeem om sneller geholpen te worden. Waarom dit belangrijk is Dit attribuut ondersteunt het dashboard voor prioriteitsescalatie en resource-audit en de KPI voor het percentage escalaties naar spoed. Waar vind je dit? Afgeleid van het auditspoor van het veld Priority Voorbeelden truefalse | |||
| Is herstelwerk IsRework | Geeft aan of de werkorder herhaalde technische werkzaamheden omvatte. | ||
| Beschrijving Dit berekende attribuut herkent cases waarbij het proces na een kwaliteitscontrole of afronding teruggaat naar een actieve werkstatus. Zo kun je kwaliteitsproblemen en opleidingsbehoeften opsporen. Waarom dit belangrijk is Dit attribuut vormt de basis voor het dashboard voor technisch herstelwerk en kwaliteitscontrole en de KPI voor het percentage herstelwerk bij onderhoud. Waar vind je dit? Berekend op basis van herhaalde activiteiten Voorbeelden truefalse | |||
| Is preventief IsPreventive | Geeft aan of de werkorder betrekking heeft op preventief onderhoud. | ||
| Beschrijving Met dit booleaanse attribuut kun je werkorders eenvoudig filteren en indelen. Het maakt het berekenen van de KPI voor het aandeel preventief onderhoud eenvoudiger, doordat preventief werk wordt gescheiden van herstelwerk. Waarom dit belangrijk is Dit attribuut vormt een belangrijke indeling voor het dashboard voor de analyse van het aandeel preventief onderhoud. Waar vind je dit? Afgeleid van WorkOrderType Voorbeelden truefalse | |||
| Kritikaliteit van de asset AssetCriticality | Een score die aangeeft hoe belangrijk de asset is voor de bedrijfsvoering. | ||
| Beschrijving Dit attribuut geeft aan hoe belangrijk de asset is voor de bedrijfsvoering. Je kunt ermee controleren of werkorders met hoge prioriteit daadwerkelijk betrekking hebben op kritieke apparatuur. Zo komen mogelijke misstanden in het proces aan het licht. Waarom dit belangrijk is Dit attribuut ondersteunt het dashboard voor prioriteitsescalatie en resource-audit door de prioriteit te koppelen aan de waarde van de asset. Waar vind je dit? Hexagon EAM-tabel R5OBJECTS, veld OBJ_CRITICALITY (koppeling op EVT_OBJECT vereist) Voorbeelden A - EssentieelB - KritiekC - SecundairD - Laag | |||
| Kwaliteitscontrole goedgekeurd QualityControlPassed | Geeft aan of de QC-stap is vastgelegd. | ||
| Beschrijving Dit booleaanse attribuut controleert of een specifieke kwaliteitscontroleactiviteit of checklisttaak als voltooid is gemarkeerd. Zo kun je nagaan of aan veiligheidsvoorschriften en interne normen is voldaan. Waarom dit belangrijk is Dit attribuut vormt de basis voor de KPI voor het nalevingspercentage van kwaliteitscontroles en ondersteunt het dashboard voor compliance en documentatie-integriteit. Waar vind je dit? Afgeleid van checklisttabellen of activiteitengeschiedenis Voorbeelden truefalse | |||
| Omschrijving werkorder WorkOrderDescription | Een korte omschrijving van de onderhoudstaak. | ||
| Beschrijving Dit attribuut bevat de onderwerpregel of korte omschrijving van het probleem. Het geeft analisten context wanneer ze specifieke probleemcases nader bekijken of patronen in ongestructureerde tekst zoeken. Waarom dit belangrijk is Dit attribuut geeft de context die nodig is om de procesdata handmatig te beoordelen. Waar vind je dit? Hexagon EAM-tabel R5EVENTS, veld EVT_DESC Voorbeelden Lekkende pompdichting reparerenMaandelijkse HVAC-inspectieTransportband vervangen | |||
| SLA-status SLAState | Geeft aan of de werkorder aan de service level agreement voldeed. | ||
| Beschrijving Dit berekende attribuut vergelijkt de werkelijke einddatum met de geplande einddatum. De case krijgt de status ‘Binnen SLA’ of ‘SLA overschreden’. Zo kun je de prestaties van aannemers en interne teams eenvoudiger rapporteren. Waarom dit belangrijk is Dit is de directe databron voor de KPI voor het SLA-nalevingspercentage. Waar vind je dit? Berekend: werkelijke einddatum <= geplande datum Voorbeelden Binnen SLASLA overschredenOpen | |||
| Totale werkelijke kosten TotalActualCost | De totale financiële kosten die voor de werkorder zijn geregistreerd. | ||
| Beschrijving Dit attribuut bevat de totale kosten van arbeid, materialen en diensten. Het is belangrijk voor de analyse van financiële afrekeningen en om inzicht te krijgen in de kosten van spoedonderhoud ten opzichte van preventief onderhoud. Waarom dit belangrijk is Dit attribuut ondersteunt het dashboard voor financiële afrekening en afsluitsnelheid en helpt bij beslissingen op basis van kosten. Waar vind je dit? Hexagon EAM-tabel R5EVENTS, veld EVT_ACTCOST (of een vergelijkbare kolom met totalen) Voorbeelden 150.002500.5075.25 | |||
Activiteiten voor assetonderhoud
| Activiteit | Beschrijving | ||
|---|---|---|---|
| Arbeidsuren geregistreerd | Een technicus boekt gewerkte uren op de werkorder. Deze activiteit kan meerdere keren per case voorkomen. | ||
| Waarom dit belangrijk is Basis voor dashboards over afwijkingen in arbeidsuren en de arbeidsproductiviteit van technici. Laat de werkelijke inspanning zien ten opzichte van de planning. Waar vind je dit? Hexagon EAM-tabel r5booklabor. Elke rij is een urenregistratie voor de werkorder. Vastleggen Vastgelegd wanneer de transactie INSERT wordt uitgevoerd op r5booklabor Gebeurtenistype explicit | |||
| Materiaal uitgegeven | Reserveonderdelen worden fysiek uit het magazijn gehaald en op de werkorder geboekt. Dit registreert het materiaalverbruik. | ||
| Waarom dit belangrijk is Eindpunt voor de doorlooptijd tot materialen beschikbaar zijn. Spoor vertragingen op waarbij het werk begint maar stilvalt door ontbrekende onderdelen. Waar vind je dit? Hexagon EAM-tabel r5translines. Transactietype 'I' (Issue), gekoppeld aan de werkorder. Vastleggen Vastgelegd wanneer de transactie INSERT wordt uitgevoerd op r5translines Gebeurtenistype explicit | |||
| Werkorder aangemaakt | De onderhoudswerkorder wordt voor het eerst in het systeem aangemaakt. Deze gebeurtenis maakt de case aan en legt de eerste timestamp van het volledige onderhoudsproces vast. | ||
| Waarom dit belangrijk is Dit markeert het begin van de procesinstantie en vormt het uitgangspunt voor de totale oplostijd. Belangrijk voor het berekenen van de ouderdom van de achterstand. Waar vind je dit? Hexagon EAM-tabel r5events. Vastgelegd wanneer een nieuw record met evt_code wordt ingevoegd. Vastleggen Vastgelegd wanneer de transactie INSERT wordt uitgevoerd op r5events Gebeurtenistype explicit | |||
| Werkorder afgerond | Het technische werk is klaar en de technicus heeft de opdracht als voltooid gemarkeerd. De asset wordt weer in gebruik genomen. | ||
| Waarom dit belangrijk is Belangrijke mijlpaal voor de totale doorlooptijd en de gemiddelde reparatietijd. Hiermee stopt de stilstandtijd. Waar vind je dit? Hexagon EAM r5statuslog. Overgang naar 'C' (Completed) of 'F' (Finished). Vastleggen Vastgelegd wanneer een transactie wordt uitgevoerd op r5statuslog Gebeurtenistype explicit | |||
| Werkorder gesloten | De werkorder is financieel afgesloten en gearchiveerd. Er kunnen geen kosten of uren meer op worden geboekt. | ||
| Waarom dit belangrijk is Einde van het proces. Belangrijk voor de analyse van de financiële afhandeling en het vastleggen van de definitieve kosten. Waar vind je dit? Hexagon EAM r5statuslog. Overgang naar 'C' (Closed) of 'L' (Locked/Closed). Vastleggen Vastgelegd wanneer een transactie wordt uitgevoerd op r5statuslog Gebeurtenistype explicit | |||
| Werkorder gestart | Technici zijn begonnen met het fysieke werk aan de asset. Dit wordt vaak aangegeven door een statuswijziging naar In Progress of de eerste timestamp van de geboekte uren. | ||
| Waarom dit belangrijk is Eindpunt voor de berekening van de achterstand en startpunt voor de effectieve werktijd. Belangrijk voor het percentage naleving van SLA’s. Waar vind je dit? Hexagon EAM r5statuslog. Overgang naar 'In Progress' (vaak statuscode 'I' of 'IP'). Vastleggen Vastgelegd wanneer een transactie wordt uitgevoerd op r5statuslog Gebeurtenistype explicit | |||
| Werkorder goedgekeurd | De statuswijziging geeft aan dat de werkorder de beoordeling van de planning en raming heeft doorstaan. Het werk mag nu worden uitgevoerd. | ||
| Waarom dit belangrijk is Ondersteunt de analyse van de snelheid van onderhoudsplanning door het einde van de planningsfase vast te leggen. Ook te gebruiken voor een compliancecontrole op functiescheiding. Waar vind je dit? Hexagon EAM-tabel r5statuslog. Zoek naar een overgang naar status 'A' (Approved) of de overeenkomstige systeemstatus. Vastleggen Vastgelegd wanneer een transactie wordt uitgevoerd op r5statuslog Gebeurtenistype explicit | |||
| Checklistitem gecontroleerd | Een specifieke taak of inspectiestap in de werkorder wordt als voltooid gemarkeerd. Zo wordt de voortgang van het werk tot in detail vastgelegd. | ||
| Waarom dit belangrijk is Nodig voor compliance en volledige documentatie. Bewijst dat veiligheidscontroles systematisch zijn vastgelegd. Waar vind je dit? Hexagon EAM-tabel r5checklist of r5activities. Statuswijziging van een specifieke activiteit of taakregel. Vastleggen Vastgelegd wanneer de transactie UPDATE wordt uitgevoerd op r5checklist Gebeurtenistype explicit | |||
| Kwaliteitscontrole goedgekeurd | Een supervisor of inspecteur beoordeelt het afgeronde werk en keurt de kwaliteit goed. Zo wordt de reparatie gecontroleerd voordat de werkorder wordt gesloten. | ||
| Waarom dit belangrijk is Ondersteunt de KPI voor naleving van kwaliteitscontroles. Terugkerende lussen vanaf dit punt wijzen op technisch herstelwerk. Waar vind je dit? Hexagon EAM r5statuslog (overgang naar 'Review' of 'QC') of r5audittrail voor specifieke validatie van UDF’s. Vastleggen Vergelijk het statusveld voor en na de wijziging Gebeurtenistype inferred | |||
| Materiaalaanvraag aangemaakt | Een aanvraag voor reserveonderdelen of materialen wordt aan de werkorder gekoppeld. Hiermee begint het deelproces voor de toeleveringsketen. | ||
| Waarom dit belangrijk is Startpunt voor de doorlooptijd van de inkoop van reserveonderdelen. Grote aantallen wijzen op afhankelijkheid van de voorraad. Waar vind je dit? Hexagon EAM-tabel r5requisitions. Gekoppeld via req_evt (werkordercode). Vastleggen Vastgelegd wanneer de transactie INSERT wordt uitgevoerd op r5requisitions Gebeurtenistype explicit | |||
| Prioriteit bijgewerkt | De prioriteit van de werkorder is na de eerste aanmaak gewijzigd. De timestamp en de nieuwe prioriteitswaarde worden vastgelegd. | ||
| Waarom dit belangrijk is Nodig voor het dashboard Prioriteitsverhoging en middelencontrole, waarmee misbruik van prioriteiten of uitbreiding van de scope kan worden opgespoord. Waar vind je dit? Hexagon EAM r5audittrail (als audit is ingeschakeld) of afgeleid uit versiesnapshots. Vaak gebaseerd op het auditlogboek van het veld evt_priority. Vastleggen Vastgelegd wanneer de transactie UPDATE wordt uitgevoerd op evt_priority Gebeurtenistype explicit | |||
| Werkorder afgetekend | Voor compliance of betaling aan aannemers is meestal een laatste administratieve goedkeuring nodig. Hiermee wordt bevestigd dat alle data klopt. | ||
| Waarom dit belangrijk is Volg de analyse van de goedkeuringscyclus van werkorders. Vertragingen in deze fase vertragen de financiële afhandeling. Waar vind je dit? Hexagon EAM r5statuslog (overgang naar 'Signed Off') of logboek van elektronische handtekeningen. Vastleggen Vergelijk het statusveld voor en na de wijziging Gebeurtenistype inferred | |||
| Werkorder ingepland | De werkorder krijgt een geplande startdatum of een specifieke resource toegewezen. De order gaat hiermee van de achterstand naar de actieve planning. | ||
| Waarom dit belangrijk is Belangrijk voor de analyse van de arbeidsproductiviteit van technici en de efficiëntie van de middelenverdeling. Waar vind je dit? Hexagon EAM-tabel r5events (update van evt_schedstart) of r5statuslog (overgang naar 'S' - Scheduled). Vastleggen Vergelijk het statusveld voor en na de wijziging of controleer de update van evt_schedstart Gebeurtenistype inferred | |||
Extractiegidsen
Stappen
- Meld je aan bij de Hexagon EAM-applicatie met een gebruikersaccount dat rechten heeft voor Advanced Reporting Authoring.
- Ga naar de module Reports, meestal te vinden onder het menu Administration of Reports, en open de interface voor Advanced Reporting (vaak Cognos of een ingebouwde SQL-rapportbouwer).
- Start de wizard voor het maken van een rapport en selecteer ‘SQL’ of ‘Free-hand SQL’ als type databron. Zo kun je de database rechtstreeks bevragen in plaats van het standaardmodel voor bedrijfsobjecten te gebruiken.
- Kopieer het SQL-script uit het gedeelte Query hieronder en plak het in het venster voor de datasetdefinitie.
- Vervang de tijdelijke waarden (zoals [Your Organization Code] en datumbereiken) door waarden die bij je omgeving passen.
- Controleer de querysyntaxis in de editor en ga na of het databaseplatform (Oracle of SQL Server) de UNION-instructies accepteert.
- Koppel de resulterende kolommen aan de rapportindeling. Zorg dat WorkOrderNumber, ActivityName en EventTimestamp goed zichtbaar zijn.
- Stel het rapport in op export naar CSV of Excel, zodat de uitvoer een tabelstructuur heeft zonder samengevoegde cellen of opmaakrijen.
- Voer het rapport uit voor een testperiode (bijvoorbeeld de laatste 100 werkorders) om de datastructuur te controleren.
- Plan het rapport na controle periodiek in of voer het uit voor de volledige extractieperiode.
- Download het uitvoerbestand en controleer de datumnotatie. Zorg waar mogelijk dat timestamps seconden bevatten, zodat je de volgorde nauwkeurig kunt bepalen.
- Importeer het CSV-bestand in ProcessMind. Koppel de kolom SourceSystem als case-attribuut en ActivityName als activiteitsclassificatie.
Configuratie
- Datumbereik: Filter bij voorkeur op EVT_DATE (aanmaakdatum) voor een voortschrijdende periode van 6 tot 12 maanden, zodat de query goed blijft presteren.
- Organisatiefilter: Hexagon EAM wordt vaak door meerdere organisaties gebruikt. Neem een filter op je specifieke Organization Code op om te voorkomen dat data van andere bedrijfseenheden wordt meegenomen.
- Databasesyntaxis: De query hieronder gebruikt waar mogelijk standaard-SQL, maar Hexagon EAM draait meestal op Oracle of SQL Server. Mogelijk moet je datumfuncties aanpassen, bijvoorbeeld SYSDATE naar GETDATE.
- Statusconfiguratie: De koppeling van statuscodes (bijvoorbeeld ‘A’, ‘C’, ‘R’) aan Activity Names (bijvoorbeeld ‘Work Order Approved’) moet overeenkomen met de statusconfiguratie van je systeem.
- Rechten: Het gebruikersaccount waarmee het rapport wordt uitgevoerd, moet leestoegang hebben tot de tabellen R5EVENTS, R5EVENTSTATUS, R5BOOKEDHOURS, R5TRANSACTIONS en R5AUDITVALUES.
Voorbeeldquery sql
/* 1. Work Order Created */
SELECT
evt_code AS WorkOrderNumber,
'Work Order Created' AS ActivityName,
evt_created AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
evt_type AS WorkOrderType,
evt_priority AS PriorityCode,
evt_mrc AS MaintenanceDepartment,
evt_updatedby AS UpdatedBy,
evt_target AS TargetCompletionDate,
evt_object AS AssetCode,
NULL AS ActualLaborHours
FROM r5events
WHERE evt_type IN ('JOB', 'PPM') -- Filter for relevant WO types
AND evt_created >= '2023-01-01' -- [Set Start Date]
AND evt_org = 'YOUR_ORG' -- [Set Organization]
UNION ALL
/* 2. Priority Updated (Requires Audit Log) */
SELECT
aud_code AS WorkOrderNumber,
'Priority Updated' AS ActivityName,
aud_date AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
NULL AS WorkOrderType,
aud_value AS PriorityCode,
NULL AS MaintenanceDepartment,
aud_user AS UpdatedBy,
NULL AS TargetCompletionDate,
NULL AS AssetCode,
NULL AS ActualLaborHours
FROM r5auditvalues
WHERE aud_table = 'R5EVENTS'
AND aud_field = 'EVT_PRIORITY'
AND aud_org = 'YOUR_ORG'
UNION ALL
/* 3. Status Changes (Approved, Scheduled, Started, Completed, Signed Off, Closed) */
/* This block maps generic status codes to specific ProcessMind activities */
SELECT
est_event AS WorkOrderNumber,
CASE est_status
WHEN 'A' THEN 'Work Order Approved'
WHEN 'S' THEN 'Work Order Scheduled'
WHEN 'IP' THEN 'Work Order Started'
WHEN 'C' THEN 'Work Order Completed'
WHEN 'QC' THEN 'Quality Control Passed'
WHEN 'SO' THEN 'Work Order Signed Off'
WHEN 'CL' THEN 'Work Order Closed'
ELSE 'Status Change: ' + est_status
END AS ActivityName,
est_date AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
NULL AS WorkOrderType,
NULL AS PriorityCode,
NULL AS MaintenanceDepartment,
est_auth AS UpdatedBy,
NULL AS TargetCompletionDate,
NULL AS AssetCode,
NULL AS ActualLaborHours
FROM r5eventstatus
WHERE est_status IN ('A', 'S', 'IP', 'C', 'QC', 'SO', 'CL')
AND est_org = 'YOUR_ORG'
UNION ALL
/* 4. Material Requisition Created */
SELECT
req_event AS WorkOrderNumber,
'Material Requisition Created' AS ActivityName,
req_created AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
NULL AS WorkOrderType,
NULL AS PriorityCode,
NULL AS MaintenanceDepartment,
req_createdby AS UpdatedBy,
NULL AS TargetCompletionDate,
NULL AS AssetCode,
NULL AS ActualLaborHours
FROM r5requisitions
WHERE req_event IS NOT NULL
AND req_org = 'YOUR_ORG'
UNION ALL
/* 5. Material Issued */
SELECT
trl_event AS WorkOrderNumber,
'Material Issued' AS ActivityName,
trl_date AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
NULL AS WorkOrderType,
NULL AS PriorityCode,
NULL AS MaintenanceDepartment,
trl_user AS UpdatedBy,
NULL AS TargetCompletionDate,
trl_part AS AssetCode, -- Storing Part ID in Asset column for context
NULL AS ActualLaborHours
FROM r5translines
WHERE trl_type = 'I' -- I = Issue
AND trl_event IS NOT NULL
AND trl_org = 'YOUR_ORG'
UNION ALL
/* 6. Labor Hours Recorded */
SELECT
boo_event AS WorkOrderNumber,
'Labor Hours Recorded' AS ActivityName,
boo_entered AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
NULL AS WorkOrderType,
NULL AS PriorityCode,
boo_mrc AS MaintenanceDepartment,
boo_person AS UpdatedBy,
NULL AS TargetCompletionDate,
NULL AS AssetCode,
boo_hours AS ActualLaborHours
FROM r5bookedhours
WHERE boo_event IS NOT NULL
AND boo_org = 'YOUR_ORG'
UNION ALL
/* 7. Checklist Item Verified */
SELECT
ckv_event AS WorkOrderNumber,
'Checklist Item Verified' AS ActivityName,
ckv_entrydate AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
NULL AS WorkOrderType,
NULL AS PriorityCode,
NULL AS MaintenanceDepartment,
ckv_enteredby AS UpdatedBy,
NULL AS TargetCompletionDate,
NULL AS AssetCode,
NULL AS ActualLaborHours
FROM r5checklistvalues
WHERE ckv_completed = '+' -- Logic for completed item depends on config
AND ckv_event IS NOT NULL
AND ckv_org = 'YOUR_ORG' Stappen
- Databaseverbinding vaststellen: Zorg dat je inloggegevens met leestoegang hebt (meestal een serviceaccount) voor de Oracle- of SQL Server-database van Hexagon EAM.
- Kerntabellen opzoeken: Controleer of je toegang hebt tot R5EVENTS (werkorderkoppen), R5STATUS (statusgeschiedenis), R5BOOKEDHOURS (arbeid), R5TRANSACTIONS (materialen) en R5AUDITVALUES (auditlog).
- Statuscodes koppelen: Hexagon EAM gebruikt instelbare statuscodes (bijvoorbeeld A, C, O, R). Controleer de systeemconfiguratie (scherm: Administration -> Codes) en koppel je codes van één of twee tekens aan de activiteiten Approved, Scheduled, Started, Completed, QC Passed, Signed Off en Closed.
- Query instellen: Open het SQL-script hieronder. Vervang de tijdelijke statuscodes (bijvoorbeeld ‘APPR’, ‘SCHD’, ‘COMP’) door de codes die in je systeem worden gebruikt.
- Datumbereik instellen: Pas de WHERE-clausules aan om te filteren op EVT_DATE of TRN_DATE en zo een specifieke periode te selecteren. Meestal is dat de laatste 12 maanden, zodat de query goed blijft presteren.
- Extractie uitvoeren: Voer de query uit in je SQL-client (SQL Developer, SSMS of Toad).
- Auditdata controleren: Als de activiteit ‘Priority Updated’ geen rijen oplevert, controleer dan of de auditfunctie voor de tabel R5EVENTS is ingeschakeld in de EAM-systeeminstellingen.
- Checklistdata controleren: Ga na of R5CHECKLISTVALUES de juiste tabel is voor jouw versie. In oudere versies wordt mogelijk R5ACTIVITIES gebruikt om de voltooiing van taken vast te leggen.
- Data exporteren: Sla het resultaat op als CSV- of Parquet-bestand. Gebruik voor de kolom Timestamp de ISO 8601-notatie (YYYY-MM-DD HH:MM:SS) om fouten bij het inlezen te voorkomen.
- Importeren in ProcessMind: Upload het platte bestand naar ProcessMind en koppel WorkOrderNumber aan Case ID, ActivityName aan Activity en EventTimestamp aan Timestamp.
Configuratie
- Filter voor tijdsperiode: De query selecteert nu alle data. Voeg bij voorkeur een filter toe, zoals WHERE EVT_DATE >= SYSDATE - 365 (Oracle) of GetDate() - 365 (SQL Server), in de basis-CTE of in elk SELECT-blok.
- Statuscodes koppelen: Vervang de tekenreekswaarden in de SQL (bijvoorbeeld ‘APPR’, ‘COMP’, ‘QC’) door de codes die in je R5STATUS-set zijn gedefinieerd.
- Auditconfiguratie: Voor de extractie van ‘Priority Updated’ is de tabel R5AUDITVALUES nodig. Als auditing is uitgeschakeld voor de kolom EVT_PRIORITY, ontbreekt deze specifieke activiteit.
- Organisatie/tenant: Als je EAM-omgeving meerdere organisaties bevat, voeg dan een filter toe voor EVT_ORG of EVT_MRC (afdeling) om te voorkomen dat data door elkaar raakt.
- Taal: De query gaat uit van standaardkolomkoppen in het Engels. Pas de query aan als je database gelokaliseerde kolomnamen gebruikt.
Voorbeeldquery sql
/* 1. Work Order Created */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Work Order Created' AS ActivityName,
E.EVT_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
E.EVT_CREATEDBY AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
WHERE E.EVT_TYPE IN ('JOB', 'PPM') -- Filter for Standard and Preventive WOs
UNION ALL
/* 2. Priority Updated (From Audit Log) */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Priority Updated' AS ActivityName,
A.AUD_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
A.AUD_VALUE AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
A.AUD_USER AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5AUDITVALUES A ON E.EVT_CODE = A.AUD_KEY1
WHERE A.AUD_TABLE = 'R5EVENTS'
AND A.AUD_FIELD = 'EVT_PRIORITY'
UNION ALL
/* 3. Work Order Approved */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Work Order Approved' AS ActivityName,
S.STA_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
S.STA_UPDATEUSER AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5STATUS S ON E.EVT_CODE = S.STA_EVENT
WHERE S.STA_STATUS = 'APPR' -- Replace with your Approved status code
UNION ALL
/* 4. Material Requisition Created */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Material Requisition Created' AS ActivityName,
R.REQ_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
R.REQ_CREATEDBY AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5REQUISITIONS R ON E.EVT_CODE = R.REQ_EVENT
UNION ALL
/* 5. Work Order Scheduled */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Work Order Scheduled' AS ActivityName,
S.STA_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
S.STA_UPDATEUSER AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5STATUS S ON E.EVT_CODE = S.STA_EVENT
WHERE S.STA_STATUS = 'SCHD' -- Replace with your Scheduled status code
UNION ALL
/* 6. Work Order Started */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Work Order Started' AS ActivityName,
S.STA_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
S.STA_UPDATEUSER AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5STATUS S ON E.EVT_CODE = S.STA_EVENT
WHERE S.STA_STATUS IN ('STRT', 'INPRG') -- Replace with your Started/In Progress status codes
UNION ALL
/* 7. Material Issued */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Material Issued' AS ActivityName,
T.TRN_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
T.TRN_USER AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5TRANSACTIONS T ON E.EVT_CODE = T.TRN_EVENT
WHERE T.TRN_TYPE = 'ISSUE' -- Indicates material issue from store
UNION ALL
/* 8. Labor Hours Recorded */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Labor Hours Recorded' AS ActivityName,
B.BOO_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
B.BOO_PERSON AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
B.BOO_HOURS AS ActualLaborHours
FROM R5EVENTS E
JOIN R5BOOKEDHOURS B ON E.EVT_CODE = B.BOO_EVENT
UNION ALL
/* 9. Checklist Item Verified */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Checklist Item Verified' AS ActivityName,
C.CKV_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
C.CKV_ENTEREDBY AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5CHECKLISTVALUES C ON E.EVT_CODE = C.CKV_EVENT
WHERE C.CKV_COMPLETED = '+' -- Assuming '+' indicates checked/complete
UNION ALL
/* 10. Work Order Completed */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Work Order Completed' AS ActivityName,
S.STA_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
S.STA_UPDATEUSER AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5STATUS S ON E.EVT_CODE = S.STA_EVENT
WHERE S.STA_STATUS = 'COMP' -- Replace with your Completed status code
UNION ALL
/* 11. Quality Control Passed */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Quality Control Passed' AS ActivityName,
S.STA_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
S.STA_UPDATEUSER AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5STATUS S ON E.EVT_CODE = S.STA_EVENT
WHERE S.STA_STATUS = 'QC' -- Replace with your QC Passed status code
UNION ALL
/* 12. Work Order Signed Off */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Work Order Signed Off' AS ActivityName,
S.STA_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
S.STA_UPDATEUSER AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5STATUS S ON E.EVT_CODE = S.STA_EVENT
WHERE S.STA_STATUS = 'SIGNOFF' -- Replace with your Sign Off status code
UNION ALL
/* 13. Work Order Closed */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Work Order Closed' AS ActivityName,
S.STA_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
S.STA_UPDATEUSER AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5STATUS S ON E.EVT_CODE = S.STA_EVENT
WHERE S.STA_STATUS = 'CLOS' -- Replace with your Closed status code Stappen
- Controleer of Hexagon EAM Databridge Outbound is geïnstalleerd, gelicentieerd en geautoriseerd voor de werkorderdata die voor deze extractie nodig is. Controleer ook de configuratie van de uitgaande transactie, de bestemming, de planningsmogelijkheden en de toegang tot de brontabellen of -weergaven. Gebruik [Configure based on your system] voor het juiste pad in het beheermenu, omdat menunamen en transactie-ID’s per EAM-versie verschillen.
- Bepaal welke tabellen of weergaven in Hexagon EAM leidend zijn voor werkorderkoppen, statusgeschiedenis, prioriteitsgeschiedenis, materiaalaanvragen, materiaaluitgifte, arbeidstransacties, checklist- of inspectieresultaten, planningsopdrachten, kwaliteitsgoedkeuringen, aftekeningen en afsluitingen. Vervang elke tijdelijke aanduiding [Your ... table name] in de query door het bijbehorende object in jouw omgeving. Ga er niet van uit dat de huidige werkorderkop historische wijzigingen bevat.
- Stel Databridge Outbound zo in dat het een XML- of CSV-transactie publiceert zodra een relevante wijziging aan een werkorder wordt vastgelegd. Neem het werkordernummer, gebeurtenistype, timestamp van de gebeurtenis, brongebruiker, prioriteit, werkordertype, afdeling, beoogde einddatum, asset, werkelijk gewerkte uren en een vernieuwings- of extractietimestamp op. Configureer aparte uitgaande koppelingen als de brontransacties voor status, arbeid, materialen, checklist, planning, kwaliteit, aftekening of afsluiting verschillen.
- Stel de uitgaande gegevens zo in dat elke bedrijfsgebeurtenis als een afzonderlijke eventrecord wordt weergegeven. Verstuur niet alleen de meest recente werkorderstatus. Maak voor herhaalde arbeidsregistraties, materiaaluitgiften, checklistitems, prioriteitswijzigingen en andere herhaalde gebeurtenissen één record per gebeurtenis. Koppel het Databridge-gebeurtenistype aan een van de 13 vereiste ActivityName-waarden.
- Sla de XML- of CSV-uitvoer van Databridge op een beheerde tussenlocatie op. Laad de data vervolgens in de databaseobjecten waarnaar de query verwijst, of vervang de bronobjecten in de query door de tussentabellen. Bewaar de oorspronkelijke gebeurtenis-ID, het werkordernummer, de timestamp van de gebeurtenis, de brongebruiker en LastDataUpdate. Als Databridge XML verstuurt, zet herhaalde gebeurtenisknooppunten dan om naar rijen voordat je de activiteiten koppelt. Controleer bij CSV de scheidingstekens, aanhalingstekens, tekencodering en timestampnotatie.
- Vervang in de query de tijdelijke aanduidingen voor verbindingsspecifieke objecten, datumparameters en bedrijfsfilters. De query gebruikt voor elke activiteit een genormaliseerde gebeurtenisbron en combineert de resultaten met UNION ALL. Controleer of de gegevenstypen van de bronkolommen in elk blok compatibel zijn. Als een bron een aanbevolen attribuut niet bevat, geef dan NULL terug voor dat attribuut in plaats van een waarde te verzinnen.
- Voer de query eerst uit voor een periode van ongeveer drie tot zes maanden. Controleer of het resultaat de vereiste kolommen WorkOrderNumber, ActivityName, EventTimestamp, SourceSystem en LastDataUpdate bevat, plus de aanbevolen attributen waar die beschikbaar zijn. Sorteer de uitvoer op WorkOrderNumber, EventTimestamp en ActivityName. Behoud dubbele rijen als ze verschillende gebeurtenissen uit de bron vertegenwoordigen.
- Vergelijk het aantal geëxtraheerde rijen met de leveringsaantallen van Databridge, de aantallen bronstransacties en een steekproef van werkorders in Hexagon EAM. Onderzoek ontbrekende statusgeschiedenis, dubbele leveringen, ongeldige timestamps en gebeurtenissen buiten de gekozen periode. Pas alleen een vaste ontdubbelingsregel toe als dezelfde gebeurtenis uit de bron meer dan eens is geleverd.
- Exporteer het eindresultaat als UTF-8 CSV of een ander eventlogformaat dat ProcessMind ondersteunt. Gebruik één gebeurtenis per rij en een consistente timestamp met tijdzoneverwerking. Koppel WorkOrderNumber aan de case-ID, ActivityName aan de activiteit en EventTimestamp aan de timestamp van de gebeurtenis. Upload het bestand naar ProcessMind en controleer of alle 13 activiteitsnamen beschikbaar zijn in het eventmodel.
Configuratie
- Stel Hexagon EAM Databridge Outbound in voor levering van XML- of CSV-bestanden met afzonderlijke gebeurtenissen. De transactienamen, beheerschermen en menupaden zijn afhankelijk van de geïnstalleerde versie van Hexagon EAM. Gebruik daarom [Configure based on your system] in plaats van uit te gaan van een pad dat alleen voor een bepaalde versie geldt.
- Stel WorkOrderNumber in als case-ID in ProcessMind, ActivityName als activiteitsveld en EventTimestamp als timestamp van de gebeurtenis. Vul SourceSystem in met Hexagon EAM en gebruik LastDataUpdate voor het tijdstip van extractie of vernieuwing.
- Configureer uitgaande koppelingen voor alle 13 activiteiten: Work Order Created, Priority Updated, Work Order Approved, Material Requisition Created, Work Order Scheduled, Work Order Started, Material Issued, Labor Hours Recorded, Checklist Item Verified, Work Order Completed, Quality Control Passed, Work Order Signed Off en Work Order Closed.
- Bewaar alle historische gebeurtenissen. Met alleen de huidige status kun je niet elke statuswijziging, prioriteitsaanpassing, arbeidsregistratie, materiaaluitgifte, checklistcontrole, goedkeuring of aftekening reconstrueren.
- Gebruik voor de eerste extractie een periode van drie tot zes maanden. Gebruik voor incrementele ladingen de leveringsmarkering van Databridge of LastDataUpdate, met een kleine overlap om te voorkomen dat laat binnengekomen transacties ontbreken.
- Pas filters voor bedrijf, locatie, organisatie, werkordertype, afdeling en status alleen toe als de analyse daarom vraagt. Gebruik [Your company filter] of [Configure based on your system] voor beperkingen die specifiek zijn voor jouw organisatie.
- Neem afgesloten werkorders mee als de analyse de volledige levenscyclus omvat. Met een filter op alleen open werkorders ontbreken activiteiten voor afronding, kwaliteit, aftekening en afsluiting.
- Stel de tijdzoneverwerking expliciet in. Zet alle brontimestamps vóór het uploaden naar ProcessMind om naar één afgesproken tijdzone en bewaar waar mogelijk de oorspronkelijke tijdzone of afwijking.
- Filter bij grote datasets de brondata, beperk de extractieperiode, indexeer of partitioneer op timestamp van de gebeurtenis en werkordernummer en sla Databridge-bestanden tijdelijk op voordat je ze omzet. Voorkom dat je telkens de volledige historische XML-uitvoer opnieuw verwerkt.
- Vereisten zijn onder meer toegang tot Databridge Outbound, toestemming om de relevante EAM-data te lezen, toegang tot de uitgaande bestemming of tussendatabase en toegang tot de data over werkorders, statussen, materialen, arbeid, checklists, planning, goedkeuringen, kwaliteit, aftekening en afsluiting.
- Als een vereiste bedrijfsgebeurtenis niet beschikbaar is als standaard Databridge-transactie, configureer dan een bronweergave of omzetting in de tussenopslag die voor die gebeurtenis een afzonderlijke rij oplevert. ProcessMind leidt ontbrekende activiteiten niet af uit andere rijen.
Voorbeeldquery sql
WITH
created_events AS (
SELECT
CAST(c.[WorkOrderNumber] AS VARCHAR(100)) AS WorkOrderNumber,
CAST('Work Order Created' AS VARCHAR(100)) AS ActivityName,
CAST(c.[CreatedTimestamp] AS TIMESTAMP) AS EventTimestamp,
CAST('Hexagon EAM' AS VARCHAR(100)) AS SourceSystem,
CAST(c.[LastDataUpdate] AS TIMESTAMP) AS LastDataUpdate,
CAST(c.[WorkOrderType] AS VARCHAR(100)) AS WorkOrderType,
CAST(c.[PriorityCode] AS VARCHAR(100)) AS PriorityCode,
CAST(c.[MaintenanceDepartment] AS VARCHAR(100)) AS MaintenanceDepartment,
CAST(c.[CreatedBy] AS VARCHAR(100)) AS UpdatedBy,
CAST(c.[TargetCompletionDate] AS TIMESTAMP) AS TargetCompletionDate,
CAST(c.[AssetCode] AS VARCHAR(100)) AS AssetCode,
CAST(c.[ActualLaborHours] AS DECIMAL(18,2)) AS ActualLaborHours
FROM [Your work order creation table or view] c
WHERE c.[CreatedTimestamp] >= CAST('[Start date parameter]' AS TIMESTAMP)
AND c.[CreatedTimestamp] < CAST('[End date parameter]' AS TIMESTAMP)
AND [Your company filter]
),
priority_events AS (
SELECT
CAST(p.[WorkOrderNumber] AS VARCHAR(100)) AS WorkOrderNumber,
CAST('Priority Updated' AS VARCHAR(100)) AS ActivityName,
CAST(p.[PriorityChangedTimestamp] AS TIMESTAMP) AS EventTimestamp,
CAST('Hexagon EAM' AS VARCHAR(100)) AS SourceSystem,
CAST(p.[LastDataUpdate] AS TIMESTAMP) AS LastDataUpdate,
CAST(w.[WorkOrderType] AS VARCHAR(100)) AS WorkOrderType,
CAST(p.[NewPriorityCode] AS VARCHAR(100)) AS PriorityCode,
CAST(w.[MaintenanceDepartment] AS VARCHAR(100)) AS MaintenanceDepartment,
CAST(p.[UpdatedBy] AS VARCHAR(100)) AS UpdatedBy,
CAST(w.[TargetCompletionDate] AS TIMESTAMP) AS TargetCompletionDate,
CAST(w.[AssetCode] AS VARCHAR(100)) AS AssetCode,
CAST(w.[ActualLaborHours] AS DECIMAL(18,2)) AS ActualLaborHours
FROM [Your priority history table or view] p
LEFT JOIN [Your work order current or history table or view] w ON w.[WorkOrderNumber] = p.[WorkOrderNumber]
WHERE p.[PriorityChangedTimestamp] >= CAST('[Start date parameter]' AS TIMESTAMP)
AND p.[PriorityChangedTimestamp] < CAST('[End date parameter]' AS TIMESTAMP)
AND [Your company filter]
),
approved_events AS (
SELECT
CAST(s.[WorkOrderNumber] AS VARCHAR(100)) AS WorkOrderNumber,
CAST('Work Order Approved' AS VARCHAR(100)) AS ActivityName,
CAST(s.[StatusChangedTimestamp] AS TIMESTAMP) AS EventTimestamp,
CAST('Hexagon EAM' AS VARCHAR(100)) AS SourceSystem,
CAST(s.[LastDataUpdate] AS TIMESTAMP) AS LastDataUpdate,
CAST(w.[WorkOrderType] AS VARCHAR(100)) AS WorkOrderType,
CAST(w.[PriorityCode] AS VARCHAR(100)) AS PriorityCode,
CAST(w.[MaintenanceDepartment] AS VARCHAR(100)) AS MaintenanceDepartment,
CAST(s.[UpdatedBy] AS VARCHAR(100)) AS UpdatedBy,
CAST(w.[TargetCompletionDate] AS TIMESTAMP) AS TargetCompletionDate,
CAST(w.[AssetCode] AS VARCHAR(100)) AS AssetCode,
CAST(w.[ActualLaborHours] AS DECIMAL(18,2)) AS ActualLaborHours
FROM [Your work order status history table or view] s
LEFT JOIN [Your work order current or history table or view] w ON w.[WorkOrderNumber] = s.[WorkOrderNumber]
WHERE s.[NewStatus] = '[Your approved status value]'
AND s.[StatusChangedTimestamp] >= CAST('[Start date parameter]' AS TIMESTAMP)
AND s.[StatusChangedTimestamp] < CAST('[End date parameter]' AS TIMESTAMP)
AND [Your company filter]
),
requisition_events AS (
SELECT
CAST(r.[WorkOrderNumber] AS VARCHAR(100)) AS WorkOrderNumber,
CAST('Material Requisition Created' AS VARCHAR(100)) AS ActivityName,
CAST(r.[RequisitionCreatedTimestamp] AS TIMESTAMP) AS EventTimestamp,
CAST('Hexagon EAM' AS VARCHAR(100)) AS SourceSystem,
CAST(r.[LastDataUpdate] AS TIMESTAMP) AS LastDataUpdate,
CAST(w.[WorkOrderType] AS VARCHAR(100)) AS WorkOrderType,
CAST(w.[PriorityCode] AS VARCHAR(100)) AS PriorityCode,
CAST(w.[MaintenanceDepartment] AS VARCHAR(100)) AS MaintenanceDepartment,
CAST(r.[CreatedBy] AS VARCHAR(100)) AS UpdatedBy,
CAST(w.[TargetCompletionDate] AS TIMESTAMP) AS TargetCompletionDate,
CAST(w.[AssetCode] AS VARCHAR(100)) AS AssetCode,
CAST(w.[ActualLaborHours] AS DECIMAL(18,2)) AS ActualLaborHours
FROM [Your material requisition table or view] r
LEFT JOIN [Your work order current or history table or view] w ON w.[WorkOrderNumber] = r.[WorkOrderNumber]
WHERE r.[RequisitionCreatedTimestamp] >= CAST('[Start date parameter]' AS TIMESTAMP)
AND r.[RequisitionCreatedTimestamp] < CAST('[End date parameter]' AS TIMESTAMP)
AND [Your company filter]
),
scheduled_events AS (
SELECT
CAST(a.[WorkOrderNumber] AS VARCHAR(100)) AS WorkOrderNumber,
CAST('Work Order Scheduled' AS VARCHAR(100)) AS ActivityName,
CAST(a.[ScheduledTimestamp] AS TIMESTAMP) AS EventTimestamp,
CAST('Hexagon EAM' AS VARCHAR(100)) AS SourceSystem,
CAST(a.[LastDataUpdate] AS TIMESTAMP) AS LastDataUpdate,
CAST(w.[WorkOrderType] AS VARCHAR(100)) AS WorkOrderType,
CAST(w.[PriorityCode] AS VARCHAR(100)) AS PriorityCode,
CAST(w.[MaintenanceDepartment] AS VARCHAR(100)) AS MaintenanceDepartment,
CAST(a.[UpdatedBy] AS VARCHAR(100)) AS UpdatedBy,
CAST(a.[ScheduledStartDate] AS TIMESTAMP) AS TargetCompletionDate,
CAST(w.[AssetCode] AS VARCHAR(100)) AS AssetCode,
CAST(w.[ActualLaborHours] AS DECIMAL(18,2)) AS ActualLaborHours
FROM [Your work order scheduling table or view] a
LEFT JOIN [Your work order current or history table or view] w ON w.[WorkOrderNumber] = a.[WorkOrderNumber]
WHERE a.[ScheduledTimestamp] >= CAST('[Start date parameter]' AS TIMESTAMP)
AND a.[ScheduledTimestamp] < CAST('[End date parameter]' AS TIMESTAMP)
AND [Your company filter]
),
started_events AS (
SELECT
CAST(s.[WorkOrderNumber] AS VARCHAR(100)) AS WorkOrderNumber,
CAST('Work Order Started' AS VARCHAR(100)) AS ActivityName,
CAST(s.[StatusChangedTimestamp] AS TIMESTAMP) AS EventTimestamp,
CAST('Hexagon EAM' AS VARCHAR(100)) AS SourceSystem,
CAST(s.[LastDataUpdate] AS TIMESTAMP) AS LastDataUpdate,
CAST(w.[WorkOrderType] AS VARCHAR(100)) AS WorkOrderType,
CAST(w.[PriorityCode] AS VARCHAR(100)) AS PriorityCode,
CAST(w.[MaintenanceDepartment] AS VARCHAR(100)) AS MaintenanceDepartment,
CAST(s.[UpdatedBy] AS VARCHAR(100)) AS UpdatedBy,
CAST(w.[TargetCompletionDate] AS TIMESTAMP) AS TargetCompletionDate,
CAST(w.[AssetCode] AS VARCHAR(100)) AS AssetCode,
CAST(w.[ActualLaborHours] AS DECIMAL(18,2)) AS ActualLaborHours
FROM [Your work order status history table or view] s
LEFT JOIN [Your work order current or history table or view] w ON w.[WorkOrderNumber] = s.[WorkOrderNumber]
WHERE s.[NewStatus] IN ('[Your in progress status value]', '[Your started status value]')
AND s.[StatusChangedTimestamp] >= CAST('[Start date parameter]' AS TIMESTAMP)
AND s.[StatusChangedTimestamp] < CAST('[End date parameter]' AS TIMESTAMP)
AND [Your company filter]
),
issued_events AS (
SELECT
CAST(i.[WorkOrderNumber] AS VARCHAR(100)) AS WorkOrderNumber,
CAST('Material Issued' AS VARCHAR(100)) AS ActivityName,
CAST(i.[IssueTimestamp] AS TIMESTAMP) AS EventTimestamp,
CAST('Hexagon EAM' AS VARCHAR(100)) AS SourceSystem,
CAST(i.[LastDataUpdate] AS TIMESTAMP) AS LastDataUpdate,
CAST(w.[WorkOrderType] AS VARCHAR(100)) AS WorkOrderType,
CAST(w.[PriorityCode] AS VARCHAR(100)) AS PriorityCode,
CAST(w.[MaintenanceDepartment] AS VARCHAR(100)) AS MaintenanceDepartment,
CAST(i.[IssuedBy] AS VARCHAR(100)) AS UpdatedBy,
CAST(w.[TargetCompletionDate] AS TIMESTAMP) AS TargetCompletionDate,
CAST(w.[AssetCode] AS VARCHAR(100)) AS AssetCode,
CAST(w.[ActualLaborHours] AS DECIMAL(18,2)) AS ActualLaborHours
FROM [Your material issue table or view] i
LEFT JOIN [Your work order current or history table or view] w ON w.[WorkOrderNumber] = i.[WorkOrderNumber]
WHERE i.[IssueTimestamp] >= CAST('[Start date parameter]' AS TIMESTAMP)
AND i.[IssueTimestamp] < CAST('[End date parameter]' AS TIMESTAMP)
AND [Your company filter]
),
labor_events AS (
SELECT
CAST(l.[WorkOrderNumber] AS VARCHAR(100)) AS WorkOrderNumber,
CAST('Labor Hours Recorded' AS VARCHAR(100)) AS ActivityName,
CAST(l.[LaborEntryTimestamp] AS TIMESTAMP) AS EventTimestamp,
CAST('Hexagon EAM' AS VARCHAR(100)) AS SourceSystem,
CAST(l.[LastDataUpdate] AS TIMESTAMP) AS LastDataUpdate,
CAST(w.[WorkOrderType] AS VARCHAR(100)) AS WorkOrderType,
CAST(w.[PriorityCode] AS VARCHAR(100)) AS PriorityCode,
CAST(w.[MaintenanceDepartment] AS VARCHAR(100)) AS MaintenanceDepartment,
CAST(l.[RecordedBy] AS VARCHAR(100)) AS UpdatedBy,
CAST(w.[TargetCompletionDate] AS TIMESTAMP) AS TargetCompletionDate,
CAST(w.[AssetCode] AS VARCHAR(100)) AS AssetCode,
CAST(l.[LaborHours] AS DECIMAL(18,2)) AS ActualLaborHours
FROM [Your labor transaction table or view] l
LEFT JOIN [Your work order current or history table or view] w ON w.[WorkOrderNumber] = l.[WorkOrderNumber]
WHERE l.[LaborEntryTimestamp] >= CAST('[Start date parameter]' AS TIMESTAMP)
AND l.[LaborEntryTimestamp] < CAST('[End date parameter]' AS TIMESTAMP)
AND [Your company filter]
),
checklist_events AS (
SELECT
CAST(k.[WorkOrderNumber] AS VARCHAR(100)) AS WorkOrderNumber,
CAST('Checklist Item Verified' AS VARCHAR(100)) AS ActivityName,
CAST(k.[VerifiedTimestamp] AS TIMESTAMP) AS EventTimestamp,
CAST('Hexagon EAM' AS VARCHAR(100)) AS SourceSystem,
CAST(k.[LastDataUpdate] AS TIMESTAMP) AS LastDataUpdate,
CAST(w.[WorkOrderType] AS VARCHAR(100)) AS WorkOrderType,
CAST(w.[PriorityCode] AS VARCHAR(100)) AS PriorityCode,
CAST(w.[MaintenanceDepartment] AS VARCHAR(100)) AS MaintenanceDepartment,
CAST(k.[VerifiedBy] AS VARCHAR(100)) AS UpdatedBy,
CAST(w.[TargetCompletionDate] AS TIMESTAMP) AS TargetCompletionDate,
CAST(w.[AssetCode] AS VARCHAR(100)) AS AssetCode,
CAST(w.[ActualLaborHours] AS DECIMAL(18,2)) AS ActualLaborHours
FROM [Your checklist verification table or view] k
LEFT JOIN [Your work order current or history table or view] w ON w.[WorkOrderNumber] = k.[WorkOrderNumber]
WHERE k.[VerifiedTimestamp] >= CAST('[Start date parameter]' AS TIMESTAMP)
AND k.[VerifiedTimestamp] < CAST('[End date parameter]' AS TIMESTAMP)
AND [Your company filter]
),
completed_events AS (
SELECT
CAST(s.[WorkOrderNumber] AS VARCHAR(100)) AS WorkOrderNumber,
CAST('Work Order Completed' AS VARCHAR(100)) AS ActivityName,
CAST(s.[StatusChangedTimestamp] AS TIMESTAMP) AS EventTimestamp,
CAST('Hexagon EAM' AS VARCHAR(100)) AS SourceSystem,
CAST(s.[LastDataUpdate] AS TIMESTAMP) AS LastDataUpdate,
CAST(w.[WorkOrderType] AS VARCHAR(100)) AS WorkOrderType,
CAST(w.[PriorityCode] AS VARCHAR(100)) AS PriorityCode,
CAST(w.[MaintenanceDepartment] AS VARCHAR(100)) AS MaintenanceDepartment,
CAST(s.[UpdatedBy] AS VARCHAR(100)) AS UpdatedBy,
CAST(w.[TargetCompletionDate] AS TIMESTAMP) AS TargetCompletionDate,
CAST(w.[AssetCode] AS VARCHAR(100)) AS AssetCode,
CAST(w.[ActualLaborHours] AS DECIMAL(18,2)) AS ActualLaborHours
FROM [Your work order status history table or view] s
LEFT JOIN [Your work order current or history table or view] w ON w.[WorkOrderNumber] = s.[WorkOrderNumber]
WHERE s.[NewStatus] = '[Your completed status value]'
AND s.[StatusChangedTimestamp] >= CAST('[Start date parameter]' AS TIMESTAMP)
AND s.[StatusChangedTimestamp] < CAST('[End date parameter]' AS TIMESTAMP)
AND [Your company filter]
),
quality_events AS (
SELECT
CAST(q.[WorkOrderNumber] AS VARCHAR(100)) AS WorkOrderNumber,
CAST('Quality Control Passed' AS VARCHAR(100)) AS ActivityName,
CAST(q.[QualityApprovalTimestamp] AS TIMESTAMP) AS EventTimestamp,
CAST('Hexagon EAM' AS VARCHAR(100)) AS SourceSystem,
CAST(q.[LastDataUpdate] AS TIMESTAMP) AS LastDataUpdate,
CAST(w.[WorkOrderType] AS VARCHAR(100)) AS WorkOrderType,
CAST(w.[PriorityCode] AS VARCHAR(100)) AS PriorityCode,
CAST(w.[MaintenanceDepartment] AS VARCHAR(100)) AS MaintenanceDepartment,
CAST(q.[ApprovedBy] AS VARCHAR(100)) AS UpdatedBy,
CAST(w.[TargetCompletionDate] AS TIMESTAMP) AS TargetCompletionDate,
CAST(w.[AssetCode] AS VARCHAR(100)) AS AssetCode,
CAST(w.[ActualLaborHours] AS DECIMAL(18,2)) AS ActualLaborHours
FROM [Your quality approval table or view] q
LEFT JOIN [Your work order current or history table or view] w ON w.[WorkOrderNumber] = q.[WorkOrderNumber]
WHERE q.[QualityResult] = '[Your quality passed value]'
AND q.[QualityApprovalTimestamp] >= CAST('[Start date parameter]' AS TIMESTAMP)
AND q.[QualityApprovalTimestamp] < CAST('[End date parameter]' AS TIMESTAMP)
AND [Your company filter]
),
signoff_events AS (
SELECT
CAST(f.[WorkOrderNumber] AS VARCHAR(100)) AS WorkOrderNumber,
CAST('Work Order Signed Off' AS VARCHAR(100)) AS ActivityName,
CAST(f.[SignOffTimestamp] AS TIMESTAMP) AS EventTimestamp,
CAST('Hexagon EAM' AS VARCHAR(100)) AS SourceSystem,
CAST(f.[LastDataUpdate] AS TIMESTAMP) AS LastDataUpdate,
CAST(w.[WorkOrderType] AS VARCHAR(100)) AS WorkOrderType,
CAST(w.[PriorityCode] AS VARCHAR(100)) AS PriorityCode,
CAST(w.[MaintenanceDepartment] AS VARCHAR(100)) AS MaintenanceDepartment,
CAST(f.[SignedOffBy] AS VARCHAR(100)) AS UpdatedBy,
CAST(w.[TargetCompletionDate] AS TIMESTAMP) AS TargetCompletionDate,
CAST(w.[AssetCode] AS VARCHAR(100)) AS AssetCode,
CAST(w.[ActualLaborHours] AS DECIMAL(18,2)) AS ActualLaborHours
FROM [Your work order sign-off table or view] f
LEFT JOIN [Your work order current or history table or view] w ON w.[WorkOrderNumber] = f.[WorkOrderNumber]
WHERE f.[SignOffTimestamp] >= CAST('[Start date parameter]' AS TIMESTAMP)
AND f.[SignOffTimestamp] < CAST('[End date parameter]' AS TIMESTAMP)
AND [Your company filter]
),
closed_events AS (
SELECT
CAST(s.[WorkOrderNumber] AS VARCHAR(100)) AS WorkOrderNumber,
CAST('Work Order Closed' AS VARCHAR(100)) AS ActivityName,
CAST(s.[StatusChangedTimestamp] AS TIMESTAMP) AS EventTimestamp,
CAST('Hexagon EAM' AS VARCHAR(100)) AS SourceSystem,
CAST(s.[LastDataUpdate] AS TIMESTAMP) AS LastDataUpdate,
CAST(w.[WorkOrderType] AS VARCHAR(100)) AS WorkOrderType,
CAST(w.[PriorityCode] AS VARCHAR(100)) AS PriorityCode,
CAST(w.[MaintenanceDepartment] AS VARCHAR(100)) AS MaintenanceDepartment,
CAST(s.[UpdatedBy] AS VARCHAR(100)) AS UpdatedBy,
CAST(w.[TargetCompletionDate] AS TIMESTAMP) AS TargetCompletionDate,
CAST(w.[AssetCode] AS VARCHAR(100)) AS AssetCode,
CAST(w.[ActualLaborHours] AS DECIMAL(18,2)) AS ActualLaborHours
FROM [Your work order status history table or view] s
LEFT JOIN [Your work order current or history table or view] w ON w.[WorkOrderNumber] = s.[WorkOrderNumber]
WHERE s.[NewStatus] = '[Your closed status value]'
AND s.[StatusChangedTimestamp] >= CAST('[Start date parameter]' AS TIMESTAMP)
AND s.[StatusChangedTimestamp] < CAST('[End date parameter]' AS TIMESTAMP)
AND [Your company filter]
)
SELECT WorkOrderNumber, ActivityName, EventTimestamp, SourceSystem, LastDataUpdate, WorkOrderType, PriorityCode, MaintenanceDepartment, UpdatedBy, TargetCompletionDate, AssetCode, ActualLaborHours FROM created_events
UNION ALL
SELECT WorkOrderNumber, ActivityName, EventTimestamp, SourceSystem, LastDataUpdate, WorkOrderType, PriorityCode, MaintenanceDepartment, UpdatedBy, TargetCompletionDate, AssetCode, ActualLaborHours FROM priority_events
UNION ALL
SELECT WorkOrderNumber, ActivityName, EventTimestamp, SourceSystem, LastDataUpdate, WorkOrderType, PriorityCode, MaintenanceDepartment, UpdatedBy, TargetCompletionDate, AssetCode, ActualLaborHours FROM approved_events
UNION ALL
SELECT WorkOrderNumber, ActivityName, EventTimestamp, SourceSystem, LastDataUpdate, WorkOrderType, PriorityCode, MaintenanceDepartment, UpdatedBy, TargetCompletionDate, AssetCode, ActualLaborHours FROM requisition_events
UNION ALL
SELECT WorkOrderNumber, ActivityName, EventTimestamp, SourceSystem, LastDataUpdate, WorkOrderType, PriorityCode, MaintenanceDepartment, UpdatedBy, TargetCompletionDate, AssetCode, ActualLaborHours FROM scheduled_events
UNION ALL
SELECT WorkOrderNumber, ActivityName, EventTimestamp, SourceSystem, LastDataUpdate, WorkOrderType, PriorityCode, MaintenanceDepartment, UpdatedBy, TargetCompletionDate, AssetCode, ActualLaborHours FROM started_events
UNION ALL
SELECT WorkOrderNumber, ActivityName, EventTimestamp, SourceSystem, LastDataUpdate, WorkOrderType, PriorityCode, MaintenanceDepartment, UpdatedBy, TargetCompletionDate, AssetCode, ActualLaborHours FROM issued_events
UNION ALL
SELECT WorkOrderNumber, ActivityName, EventTimestamp, SourceSystem, LastDataUpdate, WorkOrderType, PriorityCode, MaintenanceDepartment, UpdatedBy, TargetCompletionDate, AssetCode, ActualLaborHours FROM labor_events
UNION ALL
SELECT WorkOrderNumber, ActivityName, EventTimestamp, SourceSystem, LastDataUpdate, WorkOrderType, PriorityCode, MaintenanceDepartment, UpdatedBy, TargetCompletionDate, AssetCode, ActualLaborHours FROM checklist_events
UNION ALL
SELECT WorkOrderNumber, ActivityName, EventTimestamp, SourceSystem, LastDataUpdate, WorkOrderType, PriorityCode, MaintenanceDepartment, UpdatedBy, TargetCompletionDate, AssetCode, ActualLaborHours FROM completed_events
UNION ALL
SELECT WorkOrderNumber, ActivityName, EventTimestamp, SourceSystem, LastDataUpdate, WorkOrderType, PriorityCode, MaintenanceDepartment, UpdatedBy, TargetCompletionDate, AssetCode, ActualLaborHours FROM quality_events
UNION ALL
SELECT WorkOrderNumber, ActivityName, EventTimestamp, SourceSystem, LastDataUpdate, WorkOrderType, PriorityCode, MaintenanceDepartment, UpdatedBy, TargetCompletionDate, AssetCode, ActualLaborHours FROM signoff_events
UNION ALL
SELECT WorkOrderNumber, ActivityName, EventTimestamp, SourceSystem, LastDataUpdate, WorkOrderType, PriorityCode, MaintenanceDepartment, UpdatedBy, TargetCompletionDate, AssetCode, ActualLaborHours FROM closed_events
ORDER BY WorkOrderNumber, EventTimestamp, ActivityName; Klaar om te beginnen?
Zet onderhoudsdata om in bruikbare inzichten met deze template. Ons team helpt je graag met technische vragen tijdens de voorbereiding van je data.
Beperk vertragingen bij assetonderhoud en verbeter de prestaties
Verkort de doorlooptijd met 30 procent en pak verborgen bottlenecks aan.
Geen creditcard nodig. Binnen enkele minuten ingesteld.