Skip to main content

Create Object Centric Event Sources

⚠️ Warning - Out of date Information!!!: The information below regarding the tabs is out of date and will be updated asap.

 

It is very easy to create object centric event sources. Just follow the steps below. If you need background information about OCPM and OCPM event logs, then go here.

Step 1: Configure the 03_processLog-App to run in OCPM mode

  1. Set the variable mvIsOCPM to 1

    Let mvIsOCPM = 1;
  2. Optional: Define colors for your objects by changing / adding / deleting colors from the Colors-inline-Table

    Colors:
    mapping load * inline [
    No, Color
    1 ,#adceff
    2 ,#cc99ca
    3 ,#aedfe0
    4 ,#fac8a3
    5 ,#333333
    6 ,#85b6ff
    7 ,#f7ac75
    8 ,#993396
    9 ,#86ced1
    10,#8f85ff
    ];

Step 2: Create object-centric event sources

The big difference to traditional mining is that for the creation of the event sources two more fields are added (ObjectType and PrincipalObjectType), which are listed in the variable mvEventFieldsToKeep and defined in the finalEventSourceTable.

In addition, the creation of the CaseID is easier, because the object ID is often in the same table as the event data and therefore less table joins and keys are needed to get to a traditional spanning CaseID.


To create an OCPM-event source follow these steps:

  1. Give the eventSource a name by filling the variable eventSourceName:


    let eventSourceName = 'templateEventSource';

    let eventSourceName = 'invoice';

  2. Load the source tables for the definition of the events and perform the necessary transformations, as shown in the example here:


    eventSourceTable
    LOAD
    LEDGER & '_' & COMPANY & '_' & OPERATING_BUSINESS_UNIT & '_' & TRANSACTION_NUM as %DocumentID,
    TRANSACTION_CLASS,
    CREATED_BY,
    TRANSACTION_DATE,
    GL_DATE,
    DUE_DATE,
    CREATION_DATE,
    LAST_UPDATE_DATE,
    ENTRY_DATE

    FROM [lib://mpmX_Data/Invoices_Headers.csv}]
    (txt, codepage is 28591, embedded labels, delimiter is ';', msq).

The table Invoice_Header contains different timestamps and the object ID, here called %DocumentID. The different timestamps are cross-tabulated into one column to make it easier to define the activities.


rename table eventSourceTable to eventSourceTable_tmp;

eventSourceTable:
CrossTable (DateType,Timestamp,3)
load *
resident eventSourceTable_tmp;

drop table eventSourceTable_tmp;

  1. After that, the activities are defined as usual:

    NoConcatenate
    activityScenarioFieldsTable:
    LOAD * Inline [

    process; ActivityTypeID; ActivityTypeDescription_DE; ActivityType; QlikSourceWhereFilter

    y, 110, Rechnungsbetrag fällig; Invoice Amount Due; DateType = 'DUE_DATE'

    y, 120; Rechnungsupdate; Invoice Update; DateType = 'LAST_UPDATE_DATE'

    y, 130; Rechnungs-Transaktion gestartet; InvoiceTransaction started; DateType = 'TRANSACTION_DATE'

    y, 140; Technung gebucht; Invoice Entered; DateType = 'ENTRY_DATE'


    ](delimiter is ';');

  2. Create the correct format in the finalEventSourceTable for deriving the events:

    1. Define the CaseID
    2. Define start and end timestamp
    3. Optional: define the ActivityUserName
    4. Define the ActivityOrigin
    5. Define the ObjectType
    6. Define the PrincipalObjectType
    7. Define the ActivityOriginID
    8. Define the filter fields
    9. Optional: add more fields that should be present at the event after mining. These fields must be added to the variable mvEventFieldsToKeep as a comma list.
OCPM format finalEventSourceTable
OCPM format finalEventSourceTable

Information about the purpose of the ObjectType, PrincipalObjectType, and ActivityOriginID fields in OCPM can be found here.

To establish the link between different objects, a CaseID link table is created, which contains all further object relations for all object case IDs. This table can be used in the front-end for filtering, in the data model for meaningful context information, and in event log creation for easy definition of touch point events.

As a best practice format we suggest to create a table with one column CaseID and one column per object type containing all IDs related to the respective CaseID, e.g. CaseID | InvoiceID | CreditMemoID | SalesOrderID | TransportDocID.

To create the CaseID link table do the following:

  1. Draw a list of all CaseIDs from the eventSource tables and create ID columns for all object ID types

    OCPM CaseIDList
    OCPM CaseIDList
  2. Join to each CaseID successively all object IDs which are connected with it

    OCPM left join CaseID Link Table
    OCPM left join CaseID Link Table
  3. When all object relations are united in the table, ensure the final format is one column CaseID and one column per object typeID

⚠️ Attention: The final table must be named CaseID_Link_Table_$(mvProcessDescription).

OCPM CaseID Link Table mvProcessDescription
OCPM CaseID Link Table mvProcessDescription
  1. Further in the script the link table is saved and dropped in the MPM_Model folder.

Step 4: Create the touchpoint events

To show the interaction between different objects, events of several objects can be used, we call these events touch point events. Each event has an object as its main trigger and is therefore already modeled in one of the event sources.

The next step is to make an existing event available to other objects. It is important that the CaseID link table has been created b efore.

To learn more about touchpoint events refer to this link: How to Create an Event Log for OCPM

Depending on the number and complexity of touchpoint events, it may be useful to create multiple touchpoint event sources.

To create the touch point events do the following:

  1. Give the touchpoint event source a name

    let eventSourceName = 'touchpoints';
  2. Load the original event source from which the event will be duplicated

    1. Change the CaseID to the object ID from the CaseID link table
    2. Change the ObjectType field to the new Object Type
[eventLog_$(eventSourceName)]:

LOAD

 CaseID as %CreditMemoID,
 ActivityTypeID,
 ActivityStartTimestamp,
 ActivityEndTimestamp,
 ActivityType,
 ActivityUserName,
 ActivityOrigin,
 'Invoice' as ObjectType
 PrincipalObjectType,
 ActivityOriginID,
 RealUser

FROM [lib://mpmX_Data/ProcessAnalyzer_ProcessDescription/03_ProcessLogGeneration/DataSource_EventLogs/eventLog_ds_creditMemo.qvd]
(qvd)
where ActivityType = 'Credit Memo Entered';
  1. Join the new CaseID of the new object, which should get the touchpoint, to the event-source.

    Attention: Make sure to set the keys for the join correctly and rename the new object ID to CaseID.

  2. Drop the old CaseID that was renamed in step 5a.

  3. Further in the tab the event source is saved.

Step 5: Happy Mining

Once the event sources, the CaseID link table and the touchpoint events are created, the mining can be done as usual.