Process mining-gebeurtenislog maken: zo doe je dat

Dit leer je

In deze gids leer je hoe je helemaal zelf een gebeurtenislog voor process mining maakt. We behandelen de drie onmisbare kolommen die elk gebeurtenislog nodig hebt, lopen een praktijkvoorbeeld door en laten zien hoe je je eerste gebeurtenislog opzet in Excel én SQL.

Wat is een process mining event log?

Gerelateerd: Lees meer over procesverbetering  en bekijk datatemplates voor je systeem . Lees ook waarom we out-of-the-box connectors overslaan  en kiezen voor eenvoudige datatemplates.

Een process mining event log is simpelweg een tabel met data die vastlegt wat er in je bedrijfsproces gebeurt. Zie het als een logboek dat elke stap van elke case in je systeem bijhoudt. Process mining-software leest dit logboek en bouwt diagrammen die laten zien hoe je proces echt werkt.

Elk event log heeft per regel drie essentiële gegevens nodig:

KolomBetekenisVoorbeeld
Case-IDEen unieke ID die samenhangende gebeurtenissen groepeertOrder #12345
TimestampWanneer het gebeurtenis plaatsvond2025-01-15 09:30:00
ActiviteitWat er gebeurde”Bestelling geplaatst”

Dat is alles. Met alleen deze drie kolommen kun je al Aan de slag met process mining. Alles daarbovenop, zoals klantnamen, orderwaarden of medewerker-ID’s, is optioneel: deze “attributen” maken je analyse rijker.

Het verschil: gebeurtenissen vs. activiteiten

Voordat we dieper ingaan, halen we eerst een veelvoorkomende verwarring weg.

Een activiteit is een type handeling, zoals “Order verzonden” of “Betaling ontvangen.” Zie het als een categorie of label.

Een gebeurtenis is een concrete gebeurtenis van die activiteit. Wanneer Order #12345 op 15 januari om 14:30 uur wordt verzonden, is dat een gebeurtenis.

Je gebeurtenislog bevat gebeurtenissen, maar elk gebeurtenis heeft een activiteitsnaam. In de praktijk gebruiken mensen deze termen vaak door elkaar, en dat is prima. Onthoud vooral: activiteiten zijn het “wat” en gebeurtenissen zijn het “wanneer en bij wie.”

Ons voorbeeld: het ordersysteem van Pizza Palace

Om het praktisch te maken werken we met een fictief systeem. Stel: je beheert Pizza Palace, een lokale pizzeria met een online bestelsysteem. Klanten plaatsen bestellingen via de website, het team bereidt de pizza’s en bezorgers leveren ze af.

Het Pizza Palace-systeem heeft meerdere databasetabellen die delen van het orderproces vastleggen:

  • orders - BasisInformatie over bestellingen (order-id, klant, besteltijd)
  • order_items - Wat er besteld is (pizza’s, bijgerechten, drankjes)
  • kitchen_queue - Wanneer bestellingen de keuken in gaan en eruit komen
  • delivery_assignments - Toewijzing van bezorgers en tracking van bezorging
  • payments - Registraties van betalingen

Je doel: een gebeurtenislog maken dat de volledige reis van elke bestelling laat zien, van plaatsen tot en met bezorgen.

Soorten gebeurtenissen: direct versus afgeleid

Bij het bouwen van een gebeurtenislog kom je twee soorten gebeurtenissen tegen:

Directe gebeurtenissen

Directe gebeurtenissen worden expliciet in je systeem vastgelegd. Iemand klikt op een knop of het systeemlogt een actie; er staat dan direct een timestamp in de database.

Voorbeelden uit Pizza Palace:

  • Order placed (timestamp in de orders-tabel)
  • Payment received (timestamp in de payments-tabel)
  • Delivery completed (timestamp in de delivery_assignments-tabel)

Afgeleide gebeurtenissen

Afgeleide gebeurtenissen hebben geen eigen timestamp, maar aan andere data kun je zien wanneer ze hebben plaatsgevonden.

Voorbeelden van Pizza Palace:

  • “Order toegewezen aan bezorger” heeft misschien geen eigen timestamp, maar in de tabel delivery_assignments staat een veld created_at dat aangeeft wanneer de toewijzing is gemaakt
  • “Pizza klaar” kun je afleiden op het moment dat de status van de keukenwachtrij op “completed” is gezet

Het verschil in het kort: directe gebeurtenissen worden expliciet vastgelegd, afgeleide gebeurtenissen leid je af uit andere datavelden. Beide zijn geldig en nuttig voor process mining.

Je gebeurtenislog plannen

Bedenk vóór je data gaat extraheren welke gebeurtenissen je wilt vastleggen. Voor Pizza Palace volgen we deze activiteiten:

  1. Bestelling geplaatst - Klant verstuurt de bestelling
  2. Betaling ontvangen - Betaling is succesvol verwerkt
  3. Bestelling naar keuken - Bestelling komt in de voorbereidingswachtrij
  4. Bestelling klaar - Keuken markeert de bestelling als voltooid
  5. Toegewezen aan bezorger - Een bezorger wordt toegewezen
  6. Bezorging afgerond - Bestelling is bij de klant afgeleverd

Bepaal per gebeurtenis:

  • In welke tabel de data staat
  • Welk veld de timestamp bevat
  • Wat de Case-ID is (in ons geval de order-id)

Onze mapping:

ActiviteitBrontabelTimestampveldCase-ID-veld
Bestelling geplaatstorderscreated_atid
Betaling ontvangenpaymentspayment_timeorder_id
Bestelling naar keukenkitchen_queuequeue_entry_timeorder_id
Bestelling klaarkitchen_queuecompleted_timeorder_id
Toegewezen aan bezorgerdelivery_assignmentsassigned_atorder_id
Bezorging afgeronddelivery_assignmentsdelivered_atorder_id

Case- en gebeurtenisattributen toevoegen

Case-ID, Timestamp en Activiteit zijn vereist, maar attributen maken je analyse veel krachtiger. Het zijn extra kolommen die context toevoegen.

Case-attributen

Case-attributen beschrijven de volledige case (order) en zijn voor alle gebeurtenissen in die case gelijk:

  • Klantnaam
  • Totale orderwaarde
  • Bezorgadres
  • Aantal bestelde items

Eventattributen

Eventattributen zijn specifiek per gebeurtenis:

  • Naam van de bezorger (alleen relevant voor bezorg-gebeurtenissen)
  • Betaalmethode (alleen relevant voor betaal-gebeurtenissen)
  • Keukenstation (alleen relevant voor keuken-gebeurtenissen)

Handige tip: Het is helemaal prima om alle attributen in elke rij op te nemen, ook als sommige niet van toepassing zijn. Zo kan de rij ‘Order Placed’ gewoon een kolom ‘Driver Naam’ hebben die leeg is. Zo blijft je event log een eenvoudige, platte tabel waar process mining-tools dol op zijn.

Het gebeurtenislog opbouwen: de eenvoudige structuur

Je uiteindelijke gebeurtenislog is één tabel waarin elke rij één gebeurtenis is. Zo ziet het gebeurtenislog van Pizza Palace eruit:

Case-IDTimestampActiviteitKlantBestelwaardeBezorgerBetaalmethode
10012025-01-15 18:30:00Bestelling geplaatstJohn Smith45.99
10012025-01-15 18:30:15Betaling ontvangenJohn Smith45.99Creditcard
10012025-01-15 18:31:00Bestelling naar keukenJohn Smith45.99
10012025-01-15 18:45:00Bestelling klaarJohn Smith45.99
10012025-01-15 18:46:00Toegewezen aan bezorgerJohn Smith45.99Maria Garcia
10012025-01-15 19:05:00Bezorging afgerondJohn Smith45.99Maria Garcia
10022025-01-15 18:35:00Bestelling geplaatstJane Doe28.50
10022025-01-15 18:35:20Betaling ontvangenJane Doe28.50PayPal

Let op: case-attributen (Klant, Bestelwaarde) worden bij elk gebeurtenis in dezelfde case herhaald. Die duplicatie is bewust en maakt de data makkelijk om mee te werken.

Methode 1: Een gebeurtenislog maken in Excel

Als je je data kunt exporteren naar spreadsheets, kun je handmatig een gebeurtenislog opbouwen. Deze methode werkt prima voor kleine datasets of wanneer je nog aan het leren bent.

Stap 1: Exporteer elk type gebeurtenis naar een apart werkblad

Maak één werkblad per activiteitstype:

Werkblad 1: Order geplaatst

Case-IDTimestampActiviteitKlantBestelwaarde
10012025-01-15 18:30:00Order geplaatstJohn Smith45.99
10022025-01-15 18:35:00Order geplaatstJane Doe28.50

Werkblad 2: Betaling ontvangen

Case-IDTimestampActiviteitKlantBestelwaardeBetaalmethode
10012025-01-15 18:30:15Betaling ontvangenJohn Smith45.99Creditcard
10022025-01-15 18:35:20Betaling ontvangenJane Doe28.50PayPal

Stap 2: Standaardiseer de kolommen

Zorg dat alle werkbladen dezelfde kolommen in dezelfde volgorde hebben. Voeg waar nodig lege kolommen toe:

Werkblad 1: Order geplaatst (bijgewerkt)

Case-IDTimestampActiviteitKlantBestelwaardeBezorgerBetaalmethode
10012025-01-15 18:30:00Order geplaatstJohn Smith45.99

Stap 3: Alle werkbladen samenvoegen

Maak een nieuw werkblad “Event Log”. Kopieer en plak alle rijen van elk activiteitenblad na elkaar in dit gecombineerde werkblad.

Stap 4: Sorteren op Case-ID en daarna Timestamp

Selecteer al je gegevens en sorteer op:

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

Zo staan de gebeurtenissen per case in chronologische volgorde en kun je het verloop van elke bestelling makkelijk volgen.

Stap 5: Exporteren naar CSV

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

Excel-Tips:

  • Gebruik VERT.ZOEKEN of X.ZOEKEN om case-attributen (zoals klantnaam) vanuit je orders-werkblad op te halen
  • Gebruik een consistente datum- en tijdnotatie (YYYY-MM-DD HH:MM:SS werkt het best)
  • Verwijder eventuele dubbele gebeurtenissen voordat je exporteert

Methode 2: Een gebeurtenislog maken met SQL

Voor grotere datasets of periodieke extracties is SQL efficiënter en beter herhaalbaar. De kerntechniek is UNION ALL: daarmee combineer je meerdere queries tot één resultatenet.

UNION ALL uitgelegd

UNION ALL stapelt de resultaten van meerdere SELECT-instructies onder elkaar. Elke SELECT wordt een set rijen in je eindresultaat. Alle SELECT-instructies moeten hetzelfde aantal kolommen hebben en compatibele datatypen.

Volledig SQL-voorbeeld

Hier staat een SQL-query die het event log van Pizza Palace opbouwt:

-- Event Log Extraction for Pizza Palace
-- This query combines multiple gebeurtenis 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 kenmerk
    o.created_at AS timestamp,                -- When the order was placed
    'Order Placed' AS activity,               -- The activity name (hardcoded)
    o.customer_name AS customer,              -- Case attribuut: who ordered
    o.total_amount AS order_waarde,            -- Case attribuut: order waarde
    NULL AS driver,                           -- Not applicable for this gebeurtenis
    NULL AS payment_method                    -- Not applicable for this gebeurtenis
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 attributen
    o.total_amount AS order_waarde,
    NULL AS driver,
    p.payment_method AS payment_method        -- Event-specific attribuut
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_waarde,
    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 veld)
-- This is an inferred gebeurtenis 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_waarde,
    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_waarde,
    d.driver_name AS driver,                  -- Event-specific attribuut
    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 veld)
-- 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_waarde,
    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;

Zo breid je deze query uit

Zo voeg je extra gebeurtenissen toe aan je log:

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

Voorbeeld: zo voeg je een ‘Delivery Attempted’-gebeurtenis toe:

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_waarde,
    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 gebeurtenislog

1. Begin eenvoudig, voeg later complexiteit toe

Start met de drie verplichte kolommen en een paar kernactiviteiten. Heb je een basis-gebeurtenislog succesvol opgebouwd en geladen in een process mining-tool, voeg dan stap voor stap meer gebeurtenissen en attributen toe.

2. Valideer je data

Voordat je in de analyse duikt, controleer je event log op veelvoorkomende problemen:

  • Ontbrekende tijdstempels - Events zonder timestamp maken process mining onmogelijk
  • Dubbele gebeurtenissen - Hetzelfde gebeurtenis dat twee keer is vastgelegd, vertekent je resultaten
  • Events in verkeerde volgorde - Een ‘Order Ready’ vóór ‘Order Placed’ wijst op problemen met de datakwaliteit
  • Wees-gebeurtenissen - Events met case-ID’s die in geen enkele andere activiteit voorkomen

3. Documenteer de extractie

Maak aantekeningen over:

  • Welke tabellen en audit trails je hebt gebruikt
  • Welke filters zijn toegepast
  • Wanneer de extractie is uitgevoerd
  • Eventuele aannames die je hebt gedaan

Deze documentatie is goud waard wanneer je de event log later wilt bijwerken of als er problemen moeten worden opgelost.

4. Hanteer consistente naamgeving

Houd activiteitsnamen consistent in al je extracties:

  • ‘Order Placed’ is beter dan de ene keer ‘Order Created’ en de andere keer ‘New Order’ gebruiken
  • Kies een duidelijke naamgevingsconventie en houd je daaraan

5. Ga goed om met tijdzones

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

Veelvoorkomende uitdagingen en oplossingen

Illustratie van veelvoorkomende uitdagingen bij het maken van process mining gebeurtenislogs

Uitdaging: gebeurtenissen zonder timestamp

Sommige gebeurtenissen hebben geen eigen timestamp. Een ‘Order Approved’ kan bijvoorbeeld alleen als boolean-waarde zijn opgeslagen.

Oplossing: Zoek naar gerelateerde tijdstempels. Misschien bestaat er een veld ‘approved_at’, of gebruik de ‘modified_at’-timestamp van het moment waarop de ‘approved’-flag werd gewijzigd.

Uitdaging: zeer hoog gebeurtenisvolume

Als je miljoenen gebeurtenissen hebt, kunnen je queries traag worden of crashen tijdens de extractie.

Oplossing:

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

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

Zodra je de event log hebt gemaakt als CSV-bestand of database-export, kun je deze in een process mining-tool laden. De meeste tools werken op een vergelijkbare manier:

  1. Upload het bestand of koppel de process mining-tool aan de opgehaalde data.
  2. Wijs de kolommen toe (Case-ID, Timestamp, Activiteit)
  3. Configureer eventuele aanvullende attributen
  4. Genereer de procesmap

Moderne process mining-tools zoals ProcessMind  maken dit proces heel eenvoudig. Upload simpelweg de data van je event log en de tool visualiseert automatisch het proces. Zo bekijk je meteen knelpunten, variaties en kansen voor verbetering die helpen bij het verlagen van kosten en het optimaliseren van operationele processen.

Conclusie

Het maken van een event log voor process mining vereist geen gespecialiseerde tools of diepgaande technische kennis. In de basis organiseer je de data voor process mining in een tabel met drie essentiële kolommen: Case-ID, Timestamp en Activiteit.

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

  1. Bepaal welke gebeurtenissen je wilt volgen
  2. Zoek de timestamp voor elk type gebeurtenis
  3. Voeg alles samen in één tabel
  4. Voeg attributen toe om de analyse te verrijken

Het lastigste gedeelte is niet de technische extractie, maar het begrijpen van de bedrijfsvoering om te weten welke gebeurtenissen ertoe doen. Begin met de voor de hand liggende gebeurtenissen (order geplaatst, order voltooid) en voeg geleidelijk meer details toe naarmate je bekijkt welke inzichten de process mining-tool oplevert.

Wil je meer weten? Bekijk onze pagina’s over continue procesoptimalisatie . Hier vind je volledige Informatie over de activiteiten en datavereisten voor populaire processen zoals Purchase-to-Pay , Order-to-Cash  en de crediteurenadministratie . Deze bronnen bevatten templates voor bekende systemen zoals SAP, Oracle en Microsoft Dynamics, zodat je een voorsprong hebt bij het maken van je event log.

Begin vandaag nog

Wacht niet op de perfecte event log. Begin met wat je hebt, leer van de procesmaps die je maakt en blijf verbeteren. Zelfs een eenvoudige event log met basisactiviteiten kan verrassende inzichten bieden over hoe processen echt verlopen.

Gerelateerde Blogposts

Ontvang expertinzichten over process mining en workflowoptimalisatie in je inbox
Proces analyseren: praktische gids met Process Mining

Proces analyseren: praktische gids met Process Mining

Maak van je Process Mining-dashboards concrete inzichten. Leer stap voor stap je data begrijpen, patronen vinden en echte verbeterkansen bekijken.

Waarom we out-of-the-box connectors overslaan (en wat we dan wél doen)

Waarom we out-of-the-box connectors overslaan (en wat we dan wél doen)

Standaard connectors beloven makkelijke data-extractie voor process mining, maar leveren vaak complexiteit, vertraging en leverancier lock-in. Zo doen wij het s…

Strategische Gids voor datagedreven Procesverbetering

Strategische Gids voor datagedreven Procesverbetering

Een praktische gids om met data processen te verbeteren en je organisatie te versterken.

Celonis-alternatieven: waarom ProcessMind slimmer is

Celonis-alternatieven: waarom ProcessMind slimmer is

Vergelijk Celonis process mining met ProcessMind voor 2025. Ontdek welke oplossing bij jouw organisatie past.

Daag jezelf uit en verbeter je processen in minder dan 30 dagen!

Direct toegang, geen creditcard nodig, geen wachttijd. Ervaar hoe mapping, mining en simulatie samenwerken voor slimmere, snellere beslissingen.

Ontdek alle functies, krijg diepgaand inzicht en verbeter je processen vanaf dag één.

Start je gratis proefperiode en bekijk de kracht van Process Intelligence en zie resultaat in minder dan 30 dagen!