Comment créer un Event Log pour le Process Mining

Ce que vous allez apprendre

Dans ce guide, vous apprendrez à créer de toutes pièces un journal d’événements de Process Mining. Nous présenterons les trois colonnes essentielles de tout journal d’événements, examinerons un exemple concret et vous montrerons comment créer votre premier journal avec Excel et SQL.

Qu’est-ce qu’un journal d’événements de Process Mining ?

À lire également : En savoir plus sur l’amélioration des processus et trouver des modèles de données pour votre système. Découvrez également pourquoi nous évitons les connecteurs prêts à l’emploi au profit de modèles de données simples.

Un journal d’événements de Process Mining est un tableau qui consigne les opérations réalisées dans votre processus métier. Il suit chaque étape de chaque cas au fil de son parcours dans vos systèmes. Les logiciels de Process Mining utilisent ces données pour montrer le fonctionnement réel de votre processus.

Tout journal d’événements doit comporter trois colonnes essentielles :

Colonne Signification Exemple
Identifiant du cas Identifiant unique qui regroupe les événements associés Commande n° 12345
Horodatage Moment où l’événement s’est produit 15/01/2025 09:30:00
Activité Ce qui s’est produit « Commande passée »

C’est tout. Avec ces trois colonnes, vous pouvez commencer votre analyse de Process Mining. Les autres informations, comme le nom du client, le montant de la commande ou l’identifiant du collaborateur, sont facultatives. Ces champs supplémentaires sont appelés « attributs » et apportent un contexte utile à votre analyse.

Comprendre la différence entre événements et activités

Avant de poursuivre, clarifions un point qui prête souvent à confusion.

Une activité désigne un type d’action, comme « Commande expédiée » ou « Paiement reçu ». Considérez-la comme une catégorie ou une étiquette.

Un événement correspond à une occurrence précise de cette activité. Lorsque la commande n° 12345 est expédiée le 15 janvier à 14 h 30, il s’agit d’un événement.

Votre journal d’événements contient des événements, et chaque événement possède un nom d’activité. En pratique, ces termes sont souvent employés indifféremment, ce qui ne pose pas de problème. Retenez simplement que les activités décrivent « ce qui se passe », tandis que les événements précisent « quand et pour qui cela s’est produit ».

Notre exemple : le système de commande de Pizza Palace

Pour rendre ce guide concret, prenons l’exemple d’un système fictif. Imaginez que vous gériez Pizza Palace, une pizzeria locale équipée d’un système de commande en ligne. Les clients passent commande sur le site, le personnel prépare les pizzas et les livreurs les distribuent.

Le système de Pizza Palace comprend plusieurs tables de base de données qui suivent les différentes étapes du traitement des commandes :

  • orders - Informations de base sur la commande (identifiant, client, heure de commande)
  • order_items - Articles commandés (pizzas, accompagnements, boissons)
  • kitchen_queue - Entrée et sortie des commandes de la cuisine
  • delivery_assignments - Attribution des livreurs et suivi des livraisons
  • payments - Enregistrements du traitement des paiements

Votre objectif est de créer un journal d’événements qui retrace le parcours complet de chaque commande, de sa création à sa livraison.

Types d’événements : directs et inférés

Lors de la création d’un journal d’événements, vous rencontrerez deux types d’événements :

Événements directs

Les événements directs sont enregistrés explicitement dans votre système. Une personne a cliqué sur un bouton ou le système a enregistré une action, et la base de données contient un Timestamp correspondant.

Exemples chez Pizza Palace :

  • Commande passée (Timestamp dans la table orders)
  • Paiement reçu (Timestamp dans la table payments)
  • Livraison terminée (Timestamp dans la table delivery_assignments)

Événements inférés

Les événements inférés ne possèdent pas leur propre Timestamp, mais vous pouvez déterminer quand ils se sont produits à partir d’autres données.

Exemples chez Pizza Palace :

  • « Commande attribuée au livreur » peut ne pas avoir son propre Timestamp, mais la table delivery_assignments contient un champ created_at qui indique le moment de l’attribution
  • « Pizza prête » peut être déduit du moment où le statut de la file d’attente de la cuisine passe à « terminée »

La différence essentielle est que les événements directs sont enregistrés explicitement, tandis que les événements inférés nécessitent l’interprétation d’autres champs de données. Les deux types sont valides et utiles pour le Process Mining.

Préparer votre journal d’événements

Avant d’extraire les données, déterminez les événements à suivre. Pour Pizza Palace, suivons les activités suivantes :

  1. Commande passée - Le client valide la commande
  2. Paiement reçu - Le paiement est traité avec succès
  3. Commande envoyée en cuisine - La commande entre dans la file de préparation
  4. Commande prête - La cuisine marque la commande comme terminée
  5. Attribuée à un livreur - Un livreur est désigné pour la livraison
  6. Livraison terminée - La commande est livrée au client

Pour chaque événement, identifiez :

  • la table qui contient les données
  • le champ qui fournit le Timestamp
  • le Case ID, ici l’identifiant de la commande

Voici notre correspondance :

Activity Table source Champ Timestamp Champ Case ID
Commande passée orders created_at id
Paiement reçu payments payment_time order_id
Commande envoyée en cuisine kitchen_queue queue_entry_time order_id
Commande prête kitchen_queue completed_time order_id
Attribuée à un livreur delivery_assignments assigned_at order_id
Livraison terminée delivery_assignments delivered_at order_id

Ajouter des attributs de cas et d’événement

Le Case ID, le Timestamp et l’Activity sont obligatoires. Les attributs rendent votre analyse plus utile en ajoutant du contexte au moyen de colonnes supplémentaires.

Attributs de cas

Les attributs de cas décrivent l’ensemble du cas, ou de la commande, et restent identiques pour chaque événement de ce cas :

  • Nom du client
  • Montant total de la commande
  • Adresse de livraison
  • Nombre d’articles commandés

Attributs d’événement

Les attributs d’événement s’appliquent à des événements individuels :

  • Nom du livreur (uniquement pour les événements de livraison)
  • Mode de paiement (uniquement pour les événements de paiement)
  • Poste de cuisine (uniquement pour les événements de cuisine)

Conseil : vous pouvez inclure chaque attribut dans chaque ligne, même lorsqu’il ne s’applique pas à un événement donné. Par exemple, votre ligne « Commande passée » peut contenir une colonne « Nom du livreur » vide. Votre journal d’événements conserve ainsi un format de tableau simple et plat, facilement utilisable par les outils de Process Mining.

Créer le journal d’événements : une structure simple

Votre journal d’événements final doit prendre la forme d’un tableau unique, avec un événement par ligne. Voici à quoi ressemblera le journal d’événements de Pizza Palace :

Case ID Timestamp Activity Client Montant de la commande Livreur Mode de paiement
1001 15/01/2025 18:30:00 Commande passée John Smith 45,99
1001 15/01/2025 18:30:15 Paiement reçu John Smith 45,99 Carte bancaire
1001 15/01/2025 18:31:00 Commande envoyée en cuisine John Smith 45,99
1001 15/01/2025 18:45:00 Commande prête John Smith 45,99
1001 15/01/2025 18:46:00 Attribuée à un livreur John Smith 45,99 Maria Garcia
1001 15/01/2025 19:05:00 Livraison terminée John Smith 45,99 Maria Garcia
1002 15/01/2025 18:35:00 Commande passée Jane Doe 28,50
1002 15/01/2025 18:35:20 Paiement reçu Jane Doe 28,50 PayPal

Notez que les attributs de cas, comme le client et le montant de la commande, sont répétés pour chaque événement d’un même cas. Cette duplication est volontaire et facilite l’utilisation des données.

Méthode 1 : créer un journal d’événements dans Excel

Si vous pouvez exporter vos données vers une feuille de calcul, vous pouvez créer manuellement un journal d’événements. Cette méthode convient aux petits volumes de données et vous permet d’en comprendre les principes.

Étape 1 : exporter chaque type d’événement vers une feuille distincte

Créez une feuille de calcul pour chaque type d’activité :

Feuille 1 : Commande passée

Case ID Timestamp Activity Client Montant de la commande
1001 15/01/2025 18:30:00 Commande passée John Smith 45,99
1002 15/01/2025 18:35:00 Commande passée Jane Doe 28,50

Feuille 2 : Paiement reçu

Case ID Timestamp Activity Client Montant de la commande Mode de paiement
1001 15/01/2025 18:30:15 Paiement reçu John Smith 45,99 Carte bancaire
1002 15/01/2025 18:35:20 Paiement reçu Jane Doe 28,50 PayPal

Étape 2 : standardiser les colonnes

Vérifiez que toutes les feuilles contiennent les mêmes colonnes, dans le même ordre. Ajoutez des colonnes vides si nécessaire :

Feuille 1 : Commande passée (mise à jour)

Case ID Timestamp Activity Client Montant de la commande Livreur Mode de paiement
1001 15/01/2025 18:30:00 Commande passée John Smith 45,99

Étape 3 : regrouper toutes les feuilles

Créez une nouvelle feuille « Journal d’événements ». Copiez-collez dans cette feuille toutes les lignes de chaque feuille d’activité, les unes à la suite des autres.

Étape 4 : trier par Case ID, puis par Timestamp

Sélectionnez toutes vos données et triez-les selon les critères suivants :

  1. Case ID (ordre croissant)
  2. Timestamp (ordre croissant)

Les événements sont ainsi classés par ordre chronologique au sein de chaque cas, ce qui vous permet de suivre le parcours de chaque commande.

Étape 5 : exporter au format CSV

Enregistrez la feuille regroupée au format CSV. Ce format est compatible avec la quasi-totalité des outils de Process Mining.

Conseils pour Excel :

  • Utilisez RECHERCHEV ou RECHERCHEX pour récupérer des attributs de cas, comme le nom du client, depuis votre feuille de commandes
  • Utilisez un format de date cohérent, par exemple AAAA-MM-JJ HH:MM:SS
  • Supprimez les événements en double avant l’exportation

Méthode 2 : créer un journal d’événements avec SQL

Pour les volumes importants ou les extractions récurrentes, SQL est plus efficace et plus facile à reproduire. La technique essentielle consiste à utiliser UNION ALL pour regrouper plusieurs requêtes dans un même jeu de résultats.

Comprendre UNION ALL

UNION ALL empile les résultats de plusieurs instructions SELECT. Chaque SELECT ajoute des lignes au résultat final. Toutes les instructions SELECT doivent comporter le même nombre de colonnes, avec des types de données compatibles.

Exemple SQL complet

Voici une requête SQL qui crée un journal d’événements pour Pizza Palace :

-- 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;

Comment étendre cette requête

Pour ajouter d’autres événements à votre journal :

  1. Copiez l’un des blocs SELECT comme modèle
  2. Modifiez le nom de la table pour indiquer votre table source
  3. Mettez à jour le champ Timestamp avec la colonne appropriée
  4. Modifiez le nom de l’activité pour décrire l’événement
  5. Ajustez les attributs selon vos besoins
  6. Ajoutez les conditions WHERE appropriées pour filtrer les données

Par exemple, pour ajouter un événement « Livraison tentée » :

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'

Bonnes pratiques pour créer un journal d’événements

1. Commencer simplement, puis ajouter de la complexité

Commencez par les trois colonnes obligatoires et quelques activités importantes. Après avoir créé un journal d’événements de base et l’avoir chargé dans un outil de Process Mining, vous pourrez ajouter d’autres événements et attributs.

2. Valider vos données

Avant de commencer votre analyse, vérifiez que votre journal d’événements ne présente pas les problèmes courants suivants :

  • Timestamps manquants - Les événements sans Timestamp empêchent le Process Mining de fonctionner correctement
  • Événements en double - L’enregistrement deux fois d’un même événement fausse les résultats
  • Événements dans le désordre - Un événement « Commande prête » avant « Commande passée » révèle un problème de qualité des données
  • Événements orphelins - Événements dont le Case ID n’apparaît dans aucune autre activité

3. Documenter votre extraction

Notez les éléments suivants :

  • Les tables et pistes d’audit utilisées
  • Les filtres appliqués
  • La date d’exécution de l’extraction
  • Les hypothèses retenues

Cette documentation vous sera utile lorsque vous devrez mettre à jour ou résoudre un problème dans votre journal d’événements.

4. Utiliser une nomenclature cohérente

Veillez à conserver des noms d’activités cohérents d’une extraction à l’autre :

  • « Commande passée » est préférable à l’utilisation de « Commande créée » dans certaines extractions et de « Nouvelle commande » dans d’autres
  • Choisissez une convention de nommage et respectez-la

5. Gérer les fuseaux horaires

Si vos données proviennent de plusieurs systèmes ou régions, vérifiez que tous les Timestamps utilisent le même fuseau horaire. L’UTC constitue souvent le choix le plus sûr pour garantir la cohérence.

Difficultés courantes et solutions

Illustration des difficultés courantes liées à la création de journaux d'événements de Process Mining

Difficulté : des événements sans Timestamp

Certains événements peuvent ne pas posséder leur propre Timestamp. Par exemple, un événement « Commande approuvée » peut être représenté uniquement par un indicateur booléen.

Solution : recherchez des Timestamps associés. Vous trouverez peut-être un champ « approved_at » ou pourrez utiliser le Timestamp « modified_at », correspondant au moment où l’indicateur d’approbation a changé.

Difficulté : un volume d’événements très élevé

Si votre journal contient plusieurs millions d’événements, vos requêtes d’extraction peuvent s’exécuter lentement, voire échouer.

Solution :

  • Ajoutez des filtres de date pour limiter la période d’extraction
  • Effectuez l’extraction par lots, un mois à la fois, puis regroupez les fichiers
  • Envisagez d’utiliser des outils ETL dédiés pour les extractions à grande échelle

Quelle est la prochaine étape ? Chargez votre journal d’événements dans un outil de Process Mining

Une fois votre journal d’événements créé sous forme de fichier CSV ou d’export de base de données, vous pouvez le charger dans un outil de Process Mining. La plupart des outils suivent une démarche similaire :

  1. Importez votre fichier ou connectez l’outil de Process Mining aux données extraites.
  2. Associez vos colonnes (identifiant du cas, horodatage, activité)
  3. Configurez les attributs supplémentaires
  4. Générez votre carte de processus

Les outils modernes de Process Mining, comme ProcessMind, simplifient cette démarche. Importez les données de votre journal d’événements et l’outil visualise automatiquement votre processus, en révélant les goulots d’étranglement, les variations et les possibilités d’amélioration susceptibles de réduire les coûts et d’optimiser les processus opérationnels.

Conclusion

La création d’un journal d’événements pour le Process Mining ne nécessite ni outils spécialisés ni connaissances techniques approfondies. Il s’agit essentiellement d’organiser les données de votre processus dans un tableau comportant trois colonnes essentielles : identifiant du cas, horodatage et activité.

Que vous utilisiez Excel pour les petits jeux de données ou SQL pour des extractions plus volumineuses et complexes, les principes restent les mêmes :

  1. Identifiez les événements que vous souhaitez suivre
  2. Trouvez l’horodatage correspondant à chaque type d’événement
  3. Regroupez toutes les informations dans un tableau unique
  4. Ajoutez des attributs pour enrichir votre analyse

La difficulté principale ne réside pas dans l’extraction technique, mais dans la compréhension de vos opérations métier, afin de savoir quels événements comptent réellement. Commencez par les événements évidents, comme la création et la clôture d’une commande, puis ajoutez des détails à mesure que vous découvrez les analyses révélées par votre outil de Process Mining.

Vous souhaitez aller plus loin ? Consultez nos pages consacrées à l’amélioration continue des processus pour obtenir des informations détaillées sur les activités et les exigences en matière de données de processus courants tels que Purchase to Pay, Order to Cash et Accounts Payable. Ces ressources comprennent des modèles de données pour des systèmes connus comme SAP, Oracle et Microsoft Dynamics, afin de vous aider à créer votre journal d’événements.

Commencez dès aujourd'hui

N’attendez pas d’avoir un journal d’événements parfait. Commencez avec ce dont vous disposez, tirez des enseignements des cartes de processus que vous créez et améliorez-les progressivement. Même un journal d’événements simple, avec des activités de base, peut révéler des informations utiles sur le fonctionnement réel de vos processus.

Articles de blog associés

Recevez dans votre boîte de réception les analyses d’experts sur le Process Mining et l’optimisation des flux de travail
Analyse des goulots d'étranglement : guide pratique

Analyse des goulots d'étranglement : guide pratique

Découvrez comment l'analyse des goulots d'étranglement transforme les données de Process Mining en possibilités d'amélioration métier. Explorez les tendances, i…

Pourquoi nous n'utilisons pas de connecteurs prêts à l'emploi

Pourquoi nous n'utilisons pas de connecteurs prêts à l'emploi

Les connecteurs de Process Mining peuvent ajouter de la complexité, des délais et une dépendance à un fournisseur. Découvrez comment les modèles de données simp…

Amélioration des processus Lean : un guide fondé sur les données

Amélioration des processus Lean : un guide fondé sur les données

Découvrez le processus DMAIC, le processus Six Sigma et les outils d'amélioration des processus Lean pour obtenir des résultats métier mesurables.

Alternatives à Celonis : comparez les outils de Process Mining

Alternatives à Celonis : comparez les outils de Process Mining

Comparez le Process Mining de Celonis à ProcessMind pour trouver le logiciel adapté à vos processus, à votre budget et à vos objectifs.

Concevez de meilleurs processus. Construisez une architecture connectée. Gardez le contrôle.

Obtenez un accès immédiat, sans carte bancaire ni attente. Transformez le fonctionnement de votre organisation en processus clairs et connectés.

Construisez votre architecture des processus, définissez les responsabilités et les contrôles, puis alignez les rôles et les responsabilités à tous les niveaux.

Démarrez l’essai gratuit et créez une Fondation fiable pour gouverner, gérer et améliorer continuellement vos processus.