Skip to main content

How to Create an Event Log for OCPM


There are some main differences bewteen traditional and object-centric mining, that need to be kept in mind, when creating an event log for object-centric Process Mining.

Main differences between traditional and object-centric Event Log


The main differences between the traditional event log and the object-centric event log are:

  1. One process can have several objects, which bring their own type of CaseID. Hence, the CaseID is no longer one common identifier for the process instance to which all events are related but the identifier for the object itself, which caused the event to happen. For this reason, the former process instance is now captured in the new field Link in the CaseInformation table, while the object ID is captured in the field CaseID. To decide which CaseID belongs to which type of object, a new field ObjectType is implemented.

  2. To see the interaction of objects in the ProcessAnalyzer some key activities are used as touchpoints, which means that an activity which originates from one object, is also shown in the process flow of another object.

    Example:
    Items are packed into one package. In this case the touchpoint activity between the item and the package object could be "pack item", which originates from the item object but is also used in the package object to reflect the interaction or better said touchpoint between the two objects. The new field PrincipalObjectType has been implemented to keep the information from which object an activity was originally caused.

  3. To keep the information from which source an event stems, the field ActivityOriginID is now obligatory. Furthermore, by tracking this information the counts on number of events are always correct when referring to this unique event identifier. Most important is the correct use of the ActivityOriginID when the activities are used as touchpoints. Here, the ActivityOriginID is the same ID when used in different objects, to prevent duplicates when counting or analyzing events.

 

The following table shows the new fields and their purpose.

LinkCaseIDObjectTypeActivityTypePrincipalObjectTypeActivityOriginIDActivityStartTimestamp
10010010ItemPick ItemItem10010_pick04.04.2022 10:01:02
10010010ItemPack ItemItem10010_pack04.04.2022 10:05:32
10010020ItemPick ItemItem10020_pick04.04.2022 10:03:44
10010020ItemPack ItemItem10020_pack04.04.2022 10:06:21
10020010PackageCreate PackagePackage20010_create04.04.2022 10:04:45
10020010PackagePack ItemItem10010_pack04.04.2022 10:05:32
10020010PackagePack ItemItem10020_pack04.04.2022 10:06:21
10020010PackageSend PackagePackage20010_send04.04.2022 10:12:23

 

We see three different CaseIDs, which come from two Item objects and one Package object.

The three objects are related via the Link field, which contains in this example the customer order ID. The field ObjectType holds the information of the object type for the CaseIDs. The ActivityType and ActivityStartTimestamp fields are well known.

Finally, the purpose of the PrincipalObjectType and the field ActivityOriginID become clear when you take a closer look at the emphasized cells:

The two Pack Item events from the Items 10010 and 10020 are repeated in the Package object 20010. The PrincipalObjectType of this activity is always Item because we want to make clear that these Pack Item events are touchpoints between the Item and the Package, and that the Package did not cause the event.

Also, the ActivityOriginID is the same for the event Pack Item when used in the Item process flow and in the Package process flow. This prevents erroneous event counts as the distinct ActivityOriginID always gives the correct number of events.

 

To sum up: for OCPM four new (now obligatory) fields are required:

  1. ObjectType
  2. PrincipalObjectType
  3. ActivityOriginID
  4. Link

 

Creating an Object Centric Event Log


Given this information the creation of an object-centric event log is straight forward. We will show this with an example below. Imagine a purchase-to-pay process (P2P) including purchase orders, purchase order items, deliveries as well as invoices and payments. Every objects has its own process flow, with interactions / touchpoints to other objects. The touchpoints are marked in italic.

  • The purchase order is created, released and closed with the last order-related payment and the last item-related delivery.
  • The purchase order item is created and may have price or quantity changes. It has touchpoints with the order when the order is created, with the delivery, when goods are receipt.
  • The delivery document is created, a goods receipt is created upon delivery, and the delivery document is closed.
  • The invoice document is received and booked and closed with the last invoice-related payment.
  • The payment is scheduled and carried out.

Example: Object Centric Event Log

To create the object-centric event log we recommend to follow these steps:

  1. Create the event log for every object on its own without touchpoint events at first. Add the ObjectType,  the PrincipalObjectType field, and the ActivityOriginID to the event log table. The PrincipalObjectType equals the ObjectType as long as the event is not a touchpoint to another object. It should look like this:

    CaseIDObjectTypePrincipalObjectTypeActivityTypeActivityOriginIDActivityStartTimestampActivityEndTimestamp
    1000Purchase OrderPurchase OrderOrder Created1000_orderCreated0205.2022 11:55:0102.05.2022 11:58:41
    1000Purchase OrderPurchase OrderOrder Released1000_orderReleased03.05.2022 14:15:0803.05.2022 14:16:58
    2000Purchase OrderPurchase OrderOrder Created2000_orderCreated03.05.2022 14:15:0803.05.2022 14:16:58
    CaseIDObjectTypePrincipalObjectTypeActivityTypeActivityOriginIDActivityStartTimestampActivityEndTimestamp
    100010Order ItemOrder ItemItem Created100010_itemCreated05.05.2022 14:15:0105.05.2022 14:17:51
    100010Order ItemOrder ItemChange Price100010_changePrice05.05.2022 18:15:0805.05.2022 18:15:18
    100020Order ItemOrder ItemItem Created100020_itemCreated05.05.2022 14:15:0105.05.2022 14:17:51
    CaseIDObjectTypePrincipalObjectTypeActivityTypeActivityOriginIDActivityStartTimestampActivityEndTimestamp
    4000101DeliveryDeliveryDelivery Doc Created4000101_docCreated08.05.2022 14:15:0108.05.2022 14:17:51
    4000101DeliveryDeliveryGoods Receipt4000101_goodsReceipt09.05.2022 18:15:0809.05.2022 18:15:18
    4000102DeliveryDeliveryDelivery Doc Created4000102_docCreated09.05.2022 14:15:0109.05.2022 14:17:51
    4000102DeliveryDeliveryGoods Receipt4000102_goodsReceipt10.05.2022 18:15:0810.05.2022 18:15:18
    CaseIDObjectTypePrincipalObjectTypeActivityTypeActivityOriginIDActivityStartTimestampActivityEndTimestamp
    5000101InvoiceInvoiceInvoice Receipt5000101_invReceipt09.05.2022 18:16:0809.05.2022 18:16:18
    5000101InvoiceInvoiceInvoice Booked5000101_invBooked10.05.2022 18:15:0810.05.2022 18:15:18
    5000102InvoiceInvoiceInvoice Receipt5000102_invReceipt10.05.2022 18:16:0810.05.2022 18:16:18
    5000102InvoiceInvoiceInvoice Booked5000102_invBooked11.05.2022 18:15:0811.05.2022 18:15:18
    CaseIDObjectTypePrincipalObjectTypeActivityTypeActivityOriginIDActivityStartTimestampActivityEndTimestamp
    6000101PaymentPaymentPayment Scheduled6000101_payScheduled10.05.2022 15:16:0810.05.2022 15:16:18
    6000101PaymentPaymentPayment6000101_payment11.05.2022 16:15:0811.05.2022 16:15:18
    6000102PaymentPaymentPayment Scheduled6000102_payScheduled11.05.2022 16:16:0811.05.2022 16:16:18
    6000102PaymentPaymentPayment6000102_payment12.05.2022 17:15:0812.05.2022 17:15:18

     

  2. Create the CaseInformation table which contains the CaseID and add the link to every CaseID so that the objects become related to each other. How do you choose the Link level? We recommend taking the former traditional CaseID as the Link. In our P2P example this would be the purchase order ID. The CaseInformation table contains the case context information as you know from the traditional process mining approach.

    CaseIDLinkCaseDimension1CaseDimension2CaseDimension3CaseDimension4CaseDimension5
    10001000-----
    20002000-----
    1000101000-----
    1000201000-----
    40001011000-----
    40001021000-----
    50001011000-----
    50001021000-----
    60001011000-----
    60001021000-----

     

    Having created the single objects event logs and the object links, the different logs can already be loaded to the mpmX Template App as one concatenated event log. Since the touchpoint between the objects are still missing, the ProcessAnalyzer would show the five objects without any interaction:

    Simple Example of Creating an EventLog with no Touchpoints in the Process Analyzer for OCPM
    Simple Example of Creating an EventLog with no Touchpoints in the Process Analyzer for OCPM
  3. Create the touchpoints between the objects. You have several options here. We recommend you re-use events from other objects to create the interactions.

    CaseIDObjectTypePrincipalObjectTypeActivityTypeActivityOriginIDActivityStartTimestampActivityEndTimestamp
    1000Purchase OrderDeliveryGoods Receipt4000102_goodsReceipt10.05.2022 18:15:0810.05.2022 18:15:18
    1000Purchase OrderPaymentPayment6000102_payment12.05.2022 17:15:0812.05.2022 17:15:18
    CaseIDObjectTypePrincipalObjectTypeActivityTypeActivityOriginIDActivityStartTimestampActivityEndTimestamp
    100010Order ItemPurchase OrderOrder Created1000_orderCreated02.05.2022 11:55:0102.05.2022 11:58:41
    100010Order ItemDeliveryGoods Receipt4000101_goodsReceipt09.05.2022 18:15:0809.05.2022 18:15:18
    100020Order ItemDeliveryGoods Receipt4000102_goodsReceipt10.05.2022 18:15:0810.05.2022 18:15:18
    CaseIDObjectTypePrincipalObjectTypeActivityTypeActivityOriginIDActivityStartTimestampActivityEndTimestamp
    5000101InvoicePaymentPayment6000101_payment11.05.2022 16:15:0811.05.2022 16:15:18
    5000102InvoicePaymentPayment6000102_payment12.05.2022 17:15:0812.05.2022 17:15:18
    100020Order ItemDeliveryGoods Receipt4000102_goodsReceipt10.05.2022 18:15:0810.05.2022 18:15:18

    In general the selection / definition of touchpoints is up to the data engineer and the definition during the process mining project. Different touchpoint definitions may be helpful for different purposes. In case the objects are less kind of an object and more kind of a sub-process it may be feasible to create artificial start and end events for the subprocesses and add them as touchpoints to the parent process.

    After modeling the touchpoints and concatenating them to the event logs from step 1, the ProcessAnalyzer shows this process flow:

    Simple Example of the Process Analyzer
    Simple Example of the Process Analyzer

💡 Note: In the next section How to Configure the mpmX Template App for OCPM (fast track), we will show you in a summed-up guide how to configure the mpmX Template App correctly for OCPM.