Validating KPIs for the case-centric Unshipped Orders app
In the Unshipped Orders app’s Knowledge Model “Knowledge Model”, check that all the KPIs (key performance indicators) contain the correct business logic for your organization.
The main Knowledge Model for the Unshipped Orders app is “Knowledge Model”. Work with this Knowledge Model to validate and change KPIs. “Knowledge Model” points to the base Knowledge Model stored in the Celonis Marketplace, which you can’t update directly. Changes that you make to the PQL formulas, KPI names, or formatting in “Knowledge Model” override the base Knowledge Model.
“Knowledge Model - User Guide” is in the folder User Guide. The User Guide’s Knowledge Model extends “Knowledge Model” and picks up your changes to that model automatically, so you don’t need to validate the KPIs again. You normally only need to work with “Knowledge Model - User Guide” if you want to add something extra in the User Guide that won’t appear in the Action View.
Each KPI in a Knowledge Model contains a PQL (Process Query Language) formula. Some KPIs are reused inside other KPIs as nested formulas. When you adjust the business logic in a single formula, and save it, the change is simultaneously reflected in all the KPIs that reuse the formula.
You work with Knowledge Models in Studio, and any changes you make are applied when you publish a new version of the app. You’ll need Analyst permissions on Studio and the Knowledge Model to modify any of the KPIs and their calculations. If you need training, check out the training track “Build Knowledge Models and Views” on the Celonis Academy.
Here’s how to work with the KPIs in “Knowledge Model ”:
In the Celonis navigation menu, select Studio.
Find the Unshipped Orders app in your Studio space navigation.
Expand the package’s structure using the arrow.
Go to the Knowledge Models folder and select “Knowledge Model”.
Select the KPIs section of the Knowledge Model.
You can sort and search the KPIs using their name or ID. The prefix to the ID shows what type of component they are. At the end of these instructions, we’ve noted the most important KPIs to check.
To see and edit the full PQL formula and other settings for a KPI, click its row to open an editor. The editor automatically validates any changes that you make in the PQL formula.
If you want a fuller-featured PQL editor that lets you select from the tables and columns in your data, click on the pen icon next to the PQL formula.
If you need to disable a KPI or formula, click the three vertical dots at the top of the editor, and select Disable Scope, then click Disable to confirm. When you do this, the object can't be accessed or used anywhere in the package, including by other apps that depend on it.
When you’ve made changes to the KPIs, use the Publish Package button at the top of the screen in your Studio space to publish a new version of the app.
For the Unshipped Orders app, you can manage the settings for most of the important KPIs using the Setup and Validation view and Settings view. The important KPIs that you can only manage in the Knowledge Model are:
- FORMULA_DELIVERY_INDICATOR_OVERDUE_GOODS_ISSUE
This formula indicates with a 1 or 0 whether a delivery is overdue by checking if the due date is in the past and the goods issue is still pending.
CASE WHEN WORKDAYS_BETWEEN ( ${VARIABLE_DUE_DATE}, TODAY(),WEEKDAY_CALENDAR (${VARIABLE_WORKING_DAYS}) ) > 0 AND KPI(FORMULA_DELIVERY_INDICATOR_PENDING_GOODS_ISSUE) = 1 THEN 1 ELSE 0 END
- FORMULA_DELIVERYITEM_INDICATOR_PENDING_GOODS_ISSUE
This formula indicates with a 1 or 0 whether a delivery is still pending a goods issue by checking the goods movement status.
CASE WHEN PU_COUNT(LIKP,FILTER_TO_NULL(LIPS.VBELN),COALESCE(PU_FIRST(LIPS, ${VARIABLE_DELIVERY_ITEM_STATUS_TABLE}."WBSTA"),'') NOT IN ('C') )>0 THEN 1 ELSE 0 END
- FORMULA_DELIVERYITEM_PARAMETER_VALUE
This formula calculates the value of a delivery by taking only the value of the order item corresponding to the amount being delivered.
PU_FIRST(LIPS,FILTER_TO_NULL(BIND(VBFA,FILTER_TO_NULL ("VBAP"."NETWR_CONVERTED"/"VBAP"."KWMENG"))))*"LIPS"."LFIMG"
- FORMULA_DELIVERY_INDICATOR_NOT_PICKED
This formula indicates whether a delivery is waiting to be picked by checking its picking and packing status. A delivery is waiting to be picked if:
The number of delivery items on the delivery whose picking status is A or B, and packing status is not C or null, is bigger than 0, OR
The number of delivery items on the delivery whose picking status is null, and packing status is either not C or null, is bigger than 0.
CASE WHEN PU_COUNT( LIKP, FILTER_TO_NULL(LIPS.VBELN), PU_FIRST(LIPS,${VARIABLE_DELIVERY_ITEM_STATUS_TABLE}.KOSTA) IN ('A','B') AND (PU_FIRST(LIPS,${VARIABLE_DELIVERY_ITEM_STATUS_TABLE}.PKSTA) !='C' OR PU_FIRST(LIPS,${VARIABLE_DELIVERY_ITEM_STATUS_TABLE}.PKSTA) IS NULL) ) > 0 OR PU_COUNT(LIKP, FILTER_TO_NULL(LIPS.VBELN),PU_FIRST(LIPS,${VARIABLE_DELIVERY_ITEM_STATUS_TABLE}.KOSTA) IS NULL AND (PU_FIRST(LIPS,${VARIABLE_DELIVERY_ITEM_STATUS_TABLE}.PKSTA) !='C' OR PU_FIRST(LIPS,${VARIABLE_DELIVERY_ITEM_STATUS_TABLE}.PKSTA) IS NULL) ) > 0 THEN 1 ELSE 0 END
- FORMULA_DELIVERY_INDICATOR_PICKING_COMPLETED
This formula indicates whether the delivery is picked and waiting to be packed. A delivery is picked and waiting to be packed if:
The number of delivery items on the delivery whose picking status is not C or is null is 0, AND
The number of delivery items on the delivery whose packing status is different than C or null, is bigger than 0.
CASE WHEN PU_COUNT(LIKP, FILTER_TO_NULL(LIPS.VBELN), PU_FIRST(LIPS,${VARIABLE_DELIVERY_ITEM_STATUS_TABLE}.KOSTA) !='C' OR PU_FIRST(LIPS,${VARIABLE_DELIVERY_ITEM_STATUS_TABLE}.KOSTA) IS NULL ) = 0 AND PU_COUNT(LIKP, FILTER_TO_NULL(LIPS.VBELN), PU_FIRST(LIPS,${VARIABLE_DELIVERY_ITEM_STATUS_TABLE}.PKSTA) !='C' OR PU_FIRST(LIPS,${VARIABLE_DELIVERY_ITEM_STATUS_TABLE}.PKSTA) IS NULL ) > 0 THEN 1 ELSE 0 END
- FORMULA_DELIVERY_INDICATOR_PACKING_COMPLETED
This formula indicates whether the delivery is packed and waiting for goods issue. A delivery is packed if the number of delivery items on the delivery whose packing status is A or B or null is 0.
CASE WHEN PU_COUNT(LIKP, FILTER_TO_NULL(LIPS.VBELN), PU_FIRST(LIPS,${VARIABLE_DELIVERY_ITEM_STATUS_TABLE}.PKSTA) IN ('A','B') OR PU_FIRST(LIPS,${VARIABLE_DELIVERY_ITEM_STATUS_TABLE}.PKSTA) IS NULL ) = 0 THEN 1 ELSE 0 END