Een process mining-eventlog maken

Wat je leert

In deze gids leer je hoe je vanaf nul een process mining-eventlog maakt. We behandelen de drie essentiële kolommen die elk event log nodig heeft, lopen een praktijkvoorbeeld door en laten zien hoe je met Excel en SQL je eerste event log bouwt.

Wat is een process mining-eventlog?

Gerelateerd: Lees meer over procesverbetering en vind datatemplates voor je systeem. Lees ook waarom we standaardconnectors overslaan en kiezen voor eenvoudige datatemplates.

Een process mining-eventlog is een tabel waarin staat wat er in je bedrijfsproces gebeurt. Het log registreert elke stap van elke case terwijl die door je systemen gaat. Process mining-software gebruikt deze data om te laten zien hoe je proces in werkelijkheid werkt.

Elk event log heeft drie essentiële kolommen nodig:

Kolom Betekenis Voorbeeld
Case-ID Een unieke identificatie die gerelateerde gebeurtenissen groepeert Order #12345
Timestamp Wanneer de gebeurtenis plaatsvond 2025-01-15 09:30:00
Activiteit Wat er gebeurde “Order geplaatst”

Dat is alles. Met deze drie kolommen kun je beginnen met process mining. De rest, zoals klantnamen, orderbedragen of medewerker-ID’s, is optioneel. Deze extra velden heten “attributen” en voegen context toe aan je analyse.

Het verschil tussen events en activities begrijpen

Voordat je verdergaat, maken we een veelvoorkomende verwarring duidelijk.

Een activity is een type handeling, zoals “Order Shipped” of “Payment Received”. Zie het als een categorie of label.

Een event is een specifieke keer dat die activity plaatsvindt. Als Order #12345 op 15 januari om 14.30 uur wordt verzonden, is dat een event.

Je event log bevat events en elk event heeft een activitynaam. In de praktijk gebruiken mensen deze termen vaak door elkaar, en dat is prima. Onthoud: activities beschrijven het “wat”, events beschrijven “wanneer het bij wie gebeurde”.

Ons voorbeeld: het bestelsysteem van Pizza Palace

Om deze gids praktisch te maken, gebruiken we een fictief systeem. Stel dat je Pizza Palace beheert, een lokale pizzeria met een online bestelsysteem. Klanten plaatsen bestellingen via de website, medewerkers bereiden de pizza’s en bezorgers leveren ze af.

Het systeem van Pizza Palace heeft verschillende databasetabellen die onderdelen van het bestelproces bijhouden:

  • orders - Basisinformatie over bestellingen (order-ID, klant, besteltijd)
  • order_items - Wat er is besteld (pizza’s, bijgerechten, drankjes)
  • kitchen_queue - Wanneer bestellingen de keuken binnenkomen en verlaten
  • delivery_assignments - Toewijzing van bezorgers en bezorgtracking
  • payments - Registratie van betalingsverwerking

Het doel is een event log te maken dat de volledige reis van elke bestelling laat zien, van plaatsing tot bezorging.

Typen events: direct versus afgeleid

Bij het opbouwen van een event log kom je twee typen events tegen:

Directe events

Directe events worden expliciet in je systeem vastgelegd. Iemand klikt op een knop of het systeem registreert een actie, en de database bevat daarvoor een timestamp.

Voorbeelden uit Pizza Palace:

  • Order geplaatst (timestamp in de orders tabel)
  • Betaling ontvangen (timestamp in de payments tabel)
  • Bezorging afgerond (timestamp in de delivery_assignments tabel)

Afgeleide events

Afgeleide events hebben geen eigen timestamp, maar je kunt op basis van andere data bepalen wanneer ze plaatsvonden.

Voorbeelden uit Pizza Palace:

  • “Order Assigned to Driver” heeft misschien geen eigen timestamp, maar de delivery_assignments tabel bevat een created_at veld dat laat zien wanneer de toewijzing is gedaan
  • “Pizza Ready” kan worden afgeleid uit het moment waarop de status van de keukenwachtrij verandert in “completed”

Het belangrijkste verschil is dat directe events expliciet worden vastgelegd, terwijl je voor afgeleide events andere datavelden moet interpreteren. Beide typen zijn geldig en bruikbaar voor process mining.

Je event log plannen

Bepaal voordat je data extraheert welke events je wilt vastleggen. Voor Pizza Palace volgen we deze activiteiten:

  1. Order Placed - Klant dient de bestelling in
  2. Payment Received - Betaling is succesvol verwerkt
  3. Order Sent to Kitchen - Bestelling komt in de voorbereidingswachtrij
  4. Order Ready - Keuken markeert de bestelling als afgerond
  5. Assigned to Driver - Een bezorger wordt toegewezen
  6. Delivery Completed - Bestelling wordt bij de klant bezorgd

Bepaal voor elk event:

  • Welke tabel de data bevat
  • Welk veld de timestamp bevat
  • Wat de Case ID is, in ons geval de order-ID

Hier is onze mapping:

Activiteit Brontabel Timestampveld Case ID-veld
Order Placed orders created_at id
Payment Received payments payment_time order_id
Order Sent to Kitchen kitchen_queue queue_entry_time order_id
Order Ready kitchen_queue completed_time order_id
Assigned to Driver delivery_assignments assigned_at order_id
Delivery Completed delivery_assignments delivered_at order_id

Case- en eventattributen toevoegen

Case ID, Timestamp en Activity zijn verplicht. Met attributen voeg je context toe via extra kolommen, waardoor je analyse bruikbaarder wordt.

Case-attributen

Case-attributen beschrijven de volledige case, of bestelling, en blijven voor elk event in die case hetzelfde:

  • Naam van de klant
  • Totale waarde van de bestelling
  • Bezorgadres
  • Aantal bestelde items

Eventattributen

Eventattributen gelden voor afzonderlijke events:

  • Naam van de bezorger, alleen relevant voor bezorgevents
  • Betaalmethode, alleen relevant voor betalingsevents
  • Keukenstation, alleen relevant voor keukenevents

Praktische tip: Het is prima om elk attribuut in elke rij op te nemen, ook als het niet van toepassing is op een specifiek event. Zo kan je rij voor “Order Placed” een lege kolom “Driver Name” bevatten. Hierdoor blijft je event log een eenvoudige, platte tabel waar process mining-tools makkelijk mee kunnen werken.

Het event log opbouwen: de eenvoudige structuur

Je uiteindelijke event log moet uit één tabel bestaan, met één event per rij. Zo ziet het event log van Pizza Palace eruit:

Case ID Timestamp Activity Customer Order Value Driver Payment Method
1001 2025-01-15 18:30:00 Order Placed John Smith 45.99
1001 2025-01-15 18:30:15 Payment Received John Smith 45.99 Credit Card
1001 2025-01-15 18:31:00 Order Sent to Kitchen John Smith 45.99
1001 2025-01-15 18:45:00 Order Ready John Smith 45.99
1001 2025-01-15 18:46:00 Assigned to Driver John Smith 45.99 Maria Garcia
1001 2025-01-15 19:05:00 Delivery Completed John Smith 45.99 Maria Garcia
1002 2025-01-15 18:35:00 Order Placed Jane Doe 28.50
1002 2025-01-15 18:35:20 Payment Received Jane Doe 28.50 PayPal

Let op dat case-attributen, zoals Customer en Order Value, voor elk event in dezelfde case worden herhaald. Dat is bewust gedaan, zodat de data makkelijk te gebruiken blijft.

Methode 1: een event log maken in Excel

Als je je data naar een spreadsheet kunt exporteren, kun je handmatig een event log maken. Dit werkt goed voor kleine datasets en helpt je de basis te leren.

Stap 1: exporteer elk type event naar een apart werkblad

Maak voor elk activitytype een werkblad:

Werkblad 1: Order Placed

Case ID Timestamp Activity Klant Orderwaarde
1001 2025-01-15 18:30:00 Order Placed John Smith 45.99
1002 2025-01-15 18:35:00 Order Placed Jane Doe 28.50

Werkblad 2: Payment Received

Case ID Timestamp Activity Klant Orderwaarde Betaalmethode
1001 2025-01-15 18:30:15 Payment Received John Smith 45.99 Credit Card
1002 2025-01-15 18:35:20 Payment Received Jane Doe 28.50 PayPal

Stap 2: standaardiseer de kolommen

Zorg dat elk werkblad dezelfde kolommen in dezelfde volgorde heeft. Voeg waar nodig lege kolommen toe:

Werkblad 1: Order Placed (bijgewerkt)

Case ID Timestamp Activity Klant Orderwaarde Bezorger Betaalmethode
1001 2025-01-15 18:30:00 Order Placed John Smith 45.99

Stap 3: combineer alle werkbladen

Maak een nieuw werkblad “Event Log”. Kopieer en plak alle rijen uit elk activitywerkblad onder elkaar in dit gecombineerde werkblad.

Stap 4: sorteer op Case ID en daarna op Timestamp

Selecteer al je data en sorteer op:

  1. Case ID (oplopend)
  2. Timestamp (oplopend)

Zo staan de events binnen elke case in chronologische volgorde en kun je de reis van elke bestelling volgen.

Stap 5: exporteer naar CSV

Sla het gecombineerde werkblad op als CSV-bestand. Dit formaat werkt met vrijwel elke process mining-tool.

Excel-tips:

  • Gebruik VLOOKUP of XLOOKUP om case-attributen, zoals de klantnaam, uit je orders-werkblad op te halen
  • Gebruik een consistent datumformaat (YYYY-MM-DD HH:MM:SS werkt het best)
  • Verwijder dubbele events voordat je exporteert

Methode 2: een event log maken met SQL

Voor grotere datasets of terugkerende extracties is SQL efficiënter en beter herhaalbaar. De belangrijkste techniek is UNION ALL gebruiken om meerdere queries te combineren in één resultatenset.

UNION ALL begrijpen

UNION ALL voegt de resultaten van meerdere SELECT-statements onder elkaar toe. Elke SELECT voegt rijen toe aan het eindresultaat. Alle SELECT-statements moeten hetzelfde aantal kolommen hebben, met compatibele datatypen.

Compleet SQL-voorbeeld

Dit is een SQL-query die een event log voor Pizza Palace maakt:

-- Event Log Extraction for Pizza Palace
-- This query combines multiple event types into a single event log
-- Each SELECT block represents one activity type

-- Event 1: Order Placed
-- Source: orders table
-- This captures when customers submit their orders
SELECT 
    o.id AS case_id,                          -- The order ID is our case identifier
    o.created_at AS timestamp,                -- When the order was placed
    'Order Placed' AS activity,               -- The activity name (hardcoded)
    o.customer_name AS customer,              -- Case attribute: who ordered
    o.total_amount AS order_value,            -- Case attribute: order value
    NULL AS driver,                           -- Not applicable for this event
    NULL AS payment_method                    -- Not applicable for this event
FROM orders o
WHERE o.created_at >= '2025-01-01'            -- Filter to your desired date range

UNION ALL

-- Event 2: Payment Received
-- Source: payments table
-- This captures successful payment processing
SELECT 
    p.order_id AS case_id,
    p.payment_time AS timestamp,
    'Payment Received' AS activity,
    o.customer_name AS customer,              -- Join to get case attributes
    o.total_amount AS order_value,
    NULL AS driver,
    p.payment_method AS payment_method        -- Event-specific attribute
FROM payments p
JOIN orders o ON p.order_id = o.id            -- Join to get order details
WHERE p.payment_time >= '2025-01-01'
  AND p.status = 'successful'                 -- Only include successful payments

UNION ALL

-- Event 3: Order Sent to Kitchen
-- Source: kitchen_queue table
-- This captures when the kitchen starts working on the order
SELECT 
    k.order_id AS case_id,
    k.queue_entry_time AS timestamp,
    'Order Sent to Kitchen' AS activity,
    o.customer_name AS customer,
    o.total_amount AS order_value,
    NULL AS driver,
    NULL AS payment_method
FROM kitchen_queue k
JOIN orders o ON k.order_id = o.id
WHERE k.queue_entry_time >= '2025-01-01'

UNION ALL

-- Event 4: Order Ready
-- Source: kitchen_queue table (different timestamp field)
-- This is an inferred event based on when the kitchen marked it complete
SELECT 
    k.order_id AS case_id,
    k.completed_time AS timestamp,            -- Different timestamp than entry
    'Order Ready' AS activity,
    o.customer_name AS customer,
    o.total_amount AS order_value,
    NULL AS driver,
    NULL AS payment_method
FROM kitchen_queue k
JOIN orders o ON k.order_id = o.id
WHERE k.completed_time >= '2025-01-01'
  AND k.completed_time IS NOT NULL            -- Only include completed orders

UNION ALL

-- Event 5: Assigned to Driver
-- Source: delivery_assignments table
-- This captures when a driver is assigned to deliver the order
SELECT 
    d.order_id AS case_id,
    d.assigned_at AS timestamp,
    'Assigned to Driver' AS activity,
    o.customer_name AS customer,
    o.total_amount AS order_value,
    d.driver_name AS driver,                  -- Event-specific attribute
    NULL AS payment_method
FROM delivery_assignments d
JOIN orders o ON d.order_id = o.id
WHERE d.assigned_at >= '2025-01-01'

UNION ALL

-- Event 6: Delivery Completed
-- Source: delivery_assignments table (different timestamp field)
-- This captures when the order was delivered to the customer
SELECT 
    d.order_id AS case_id,
    d.delivered_at AS timestamp,
    'Delivery Completed' AS activity,
    o.customer_name AS customer,
    o.total_amount AS order_value,
    d.driver_name AS driver,
    NULL AS payment_method
FROM delivery_assignments d
JOIN orders o ON d.order_id = o.id
WHERE d.delivered_at >= '2025-01-01'
  AND d.delivered_at IS NOT NULL              -- Only include completed deliveries

-- Final ordering: by case, then by time
-- This makes the event log easy to read and follow
ORDER BY case_id, timestamp;

Deze query uitbreiden

Zo voeg je meer events toe aan je log:

  1. Kopieer een van de SELECT-blokken als template
  2. Wijzig de tabelnaam naar je brontabel
  3. Werk het timestamp-veld bij naar de juiste kolom
  4. Wijzig de activitynaam zodat die het event beschrijft
  5. Pas de attributen aan waar nodig
  6. Voeg passende WHERE-voorwaarden toe om de data te filteren

Bijvoorbeeld om een event “Delivery Attempted” toe te voegen:

UNION ALL

-- Event 7: Delivery Attempted
-- Add this to track failed delivery attempts
SELECT 
    d.order_id AS case_id,
    d.attempt_time AS timestamp,
    'Delivery Attempted' AS activity,
    o.customer_name AS customer,
    o.total_amount AS order_value,
    d.driver_name AS driver,
    NULL AS payment_method
FROM delivery_attempts d
JOIN orders o ON d.order_id = o.id
WHERE d.attempt_time >= '2025-01-01'

Best practices voor het maken van een event log

1. Begin eenvoudig en voeg later complexiteit toe

Begin met de drie verplichte kolommen en een paar belangrijke activities. Nadat je een basis-event log hebt gemaakt en in een process mining-tool hebt geladen, kun je meer events en attributen toevoegen.

2. Controleer je data

Controleer je event log voordat je met de analyse begint op veelvoorkomende problemen:

  • Ontbrekende timestamps - Events zonder timestamps verstoren process mining
  • Dubbele events - Als hetzelfde event twee keer wordt vastgelegd, vertekent dat je resultaten
  • Events in de verkeerde volgorde - Een event “Order Ready” vóór “Order Placed” wijst op een probleem met de datakwaliteit
  • Losse events - Events met Case ID’s die niet bij andere activities voorkomen

3. Leg je extractie vast

Houd bij:

  • Welke tabellen en audittrails je hebt gebruikt
  • Welke filters je hebt toegepast
  • Wanneer je de extractie hebt uitgevoerd
  • Welke aannames je hebt gedaan

Deze documentatie is waardevol als je je event log later moet bijwerken of problemen moet oplossen.

4. Gebruik consistente namen

Houd activitynamen in verschillende extracties consistent:

  • “Order Placed” is beter dan in sommige extracties “Order Created” en in andere “New Order” te gebruiken
  • Kies een naamgevingsconventie en houd je eraan

5. Houd rekening met tijdzones

Als je data uit meerdere systemen of regio’s komt, zorg dan dat alle timestamps dezelfde tijdzone gebruiken. UTC is vaak de veiligste keuze voor consistentie.

Veelvoorkomende uitdagingen en oplossingen

Illustratie van veelvoorkomende uitdagingen bij het maken van process mining-eventlogs

Uitdaging: events zonder timestamps

Sommige events hebben misschien geen eigen timestamp. Een event “Order Approved” kan bijvoorbeeld alleen worden weergegeven door een Boolean-vlag.

Oplossing: Zoek naar gerelateerde timestamps. Misschien vind je een veld “approved_at” of kun je de timestamp “modified_at” gebruiken van het moment waarop de goedkeuringsvlag veranderde.

Uitdaging: zeer veel events

Als je enkele miljoenen events hebt, kunnen je extractiequeries traag worden of mislukken.

Oplossing:

  • Voeg datumfilters toe om de extractieperiode te beperken
  • Extraheer in batches, één maand per keer, en voeg de bestanden later samen
  • Overweeg speciale ETL-tools voor grootschalige extracties

Wat nu? Laad je event log in een process mining-tool

Zodra je je event log als CSV-bestand of database-export hebt gemaakt, kun je het in een process mining-tool laden. De meeste tools werken ongeveer zo:

  1. Upload je bestand of verbind de process mining-tool met je geëxtraheerde data.
  2. Koppel je kolommen (Case ID, Timestamp, Activity)
  3. Configureer eventuele aanvullende attributen
  4. Genereer je process map

Moderne process mining-tools zoals ProcessMind maken dit proces eenvoudig. Upload je event log-data en de tool visualiseert je proces automatisch. Zo worden bottlenecks, varianten en kansen voor verbetering zichtbaar, waarmee je kosten kunt verlagen en processen efficiënter kunt maken.

Conclusie

Een process mining-eventlog maken vereist geen gespecialiseerde tools of diepgaande technische kennis. In de basis organiseer je je process mining-data in een tabel met drie essentiële kolommen: Case ID, Timestamp en Activity.

Of je nu Excel gebruikt voor kleinere datasets of SQL voor grotere en complexere extracties, de uitgangspunten blijven hetzelfde:

  1. Bepaal welke events je wilt volgen
  2. Vind de timestamp voor elk type event
  3. Combineer alles in één tabel
  4. Voeg attributen toe voor meer context in je analyse

Het lastigste deel is niet de technische extractie. Het gaat erom dat je je bedrijfsvoering goed genoeg begrijpt om te weten welke events ertoe doen. Begin met voor de hand liggende events, zoals een geplaatste en een afgeronde bestelling, en voeg details toe naarmate je ontdekt welke inzichten je process mining-tool oplevert.

Klaar om verder te gaan? Bekijk onze pagina’s over continue procesverbetering voor meer informatie over activiteiten en datavereisten voor bekende processen, zoals Purchase to Pay, Order to Cash en Accounts Payable. Deze bronnen bevatten datatemplates voor bekende systemen zoals SAP, Oracle en Microsoft Dynamics. Zo kun je sneller je event log maken.

Vandaag aan de slag

Wacht niet op het perfecte event log. Begin met wat je hebt, leer van de process maps die je maakt en verbeter stap voor stap. Zelfs een eenvoudig event log met basisactivities kan nuttige inzichten geven in hoe je processen echt werken.

Gerelateerde blogposts

Ontvang waardevolle inzichten over process mining en workflow-optimalisatie in je inbox
Analyse van procesknelpunten: een praktische gids

Analyse van procesknelpunten: een praktische gids

Ontdek hoe analyse van procesknelpunten process mining-data omzet in kansen voor bedrijfsverbetering. Herken patronen, vind knelpunten en verbeter de prestaties…

Waarom we out-of-the-box-connectors overslaan

Waarom we out-of-the-box-connectors overslaan

Process mining-connectors kunnen complexiteit, vertraging en vendor lock-in veroorzaken. Ontdek hoe datatemplates de voorbereiding van process mining-data eenvo…

Lean procesverbetering: een datagedreven gids

Lean procesverbetering: een datagedreven gids

Leer meer over het DMAIC-proces, Six Sigma en lean procesverbeteringstools voor meetbare bedrijfsresultaten.

Alternatieven voor Celonis: vergelijk process mining-tools

Alternatieven voor Celonis: vergelijk process mining-tools

Vergelijk Celonis voor process mining met ProcessMind en vind software die past bij je processen, budget en doelen.

Ontwerp betere processen. Bouw een verbonden architectuur. Houd de controle.

Krijg meteen toegang, zonder creditcard en zonder wachttijd. Zet de manier waarop je organisatie werkt om in heldere, verbonden procesontwerpen.

Bouw je procesarchitectuur, leg eigenaarschap en beheersmaatregelen vast en breng rollen en verantwoordelijkheden op elk niveau op één lijn.

Start je gratis proefperiode en leg één betrouwbare basis voor het beheren, besturen en continu verbeteren van je processen.