Execution Gap List
Overview
Placement | |
Required KM objects |
Introduction to Execution Gap List
Use the "Execution Gap List" component in Views to give your users a quick overview of all automatically detected anomalies in their system. It provides an overview of the defined KPIs, occurrences and impact.
Details of an Execution Gap can be analyzed on Profile View.
This is what the component looks like:
![]() |
And here you can see the interaction with a profile view providing your business users more details of an anomaly.

Related content
Basic configuration
How the impact gets calculated
The default impact calculation: "(flagged - global) / global"
Let's say we have an On-Time Payment rate of 7% due to the slow approval rate. In all other cases, we detect an On-Time Payment rate of 23%.
Then the impact of the anomaly slow approval rate on On-Time Payment can be calculated as:
(7% - 23%) / 23% = - 69%
This means that with slow approval rates the On-Time Payment is -69% worse than it could be when resolving the anomaly (of slow approval rates).
Custom impact calculations: For many KPIs and anomalies a different impact calculation may make more sense than the default outlined above.
Therefore you can define custom impact calculations in the Knowledge Model to be used in the Execution Gap List component.
Example: "flagged / global" Consider the KPI Lost Cash Discount which is measured in dollars and not in percent like On-Time Payment.
Let's say we have a Lost Cash Discount of $67k with invoices that have a slow approval rate. In total, across all invoices, we have a Lost Cash Discount of $200k.
Thus the impact of the anomaly slow approval rate on Lost Cash Discount can be calculated as:
67k / 200k = 33.5%
This means that 33.5% of our Lost Cash Discount is affected by slow approval rates.
The components need to be set up using the following steps:
Set up KM KPI.
Set up KM Anomaly.
Set up KM Flags in Record.
Set up View execution-gap component.
Set up Profile View using Anomaly knowledgeObjectId.
1. Set up KM KPI
First, we will start to set up a KPI. This KPI will serve as an input for the execution-gap component since we want to render multiple Anomalies which impact a certain KPI.
For this go to the KM and add a new KPI:
Potential pitfalls
When setting up the KPIs in the Knowledge Model, make sure they have the attribute "desiredDirection" defined. It is important for the correct display of the impact.
Knowledge Model
kpis: - id: KPI_TOTAL displayName: Total count description: Total count pql: COUNT_TABLE("VBAK") desiredDirection: INCREASE # Make sure they have the attribute "desiredDirection" defined format: .3s
2. Set up KM Anomaly
Configure anomalies in the Knowledge Model. See here for more information on anomalies and how to configure the impact calculation.
In this set, you connect the KPI with Anomaly and provide the required information for rendering the Anomaly in the execution gap component.
You connect the KPI with the flag, which is used for the impact calculation.
Knowledge Model
anomalies: - id: ANOMALY_EXPRESS_1 displayName: Anomaly Express delivery 1 # Defines the display name of the anomaly in the execution gap component description: Anomaly Express delivery 1 flag: FLAG_EXPRESS_1 # Reference a flag definition from a record. Make sure this record has an identifier defined (record.identifier.pql). It is needed to calculate the number of occurrences. kpis: # References a list of KPIs in the Knowledge Model. Make sure those KPIs have the attribute "desiredDirection" defined. It is important for the correct display of the impact. - kpiId: KPI_TOTAL #impactCalculation: IMPACT_FOR_PERCENTAGES optional - reference a kpi definition as your custom impactCalculation for this kpi and anomaly knowledgeObjectId: ANOMALY # The knowledge model object will be used when creating the Profile View #customAttributes: optional - allows to pass custom attributes to the Profile View #prop1: anomaly_express_1_customattribute1 #prop2: anomaly_express_1_customattribute2 - id: ANOMALY_EXPRESS_7 displayName: Anomaly Express delivery 7 description: Anomaly Express delivery 7 flag: FLAG_EXPRESS_7 kpis: - kpiId: KPI_TOTAL knowledgeObjectId: ANOMALY #customAttributes: #prop1: anomaly_express_7_customattribute1 #prop2: anomaly_express_7_customattribute2
3. Set up KM Flags in Record
To flag cases which impact our initially-defined KPI, go to Records and add flags. Please find below an example configuration of flags:
Knowledge Model
records: - id: VBAK displayName: Vbak pql: '"VBAK"' # ... flags: # Insert the following flag configuration - id: FLAG_EXPRESS_1 displayName: Flag Express 1 description: Flag Express 1 pql: "\"VBAK\".\"VTWEG_TEXT\" = 'Express 1'" # Defines the condition when a record.attribute should be flagged for calculating the impact on a KPI - id: FLAG_EXPRESS_7 displayName: Flag Express 7 description: Flag Express 7 pql: "\"VBAK\".\"VTWEG_TEXT\" = 'Express 7'"
4. Set up View execution-gap component
Now go to the View where you want to place the execution-gap component. Here you can insert the following configuration:
Attribute | Required | Type | Description |
---|---|---|---|
kpi | true | KPI Views Variable (containing KPI id) | References the KPI in the Knowledge Model. Also, a variable ${currentKpi} can be used. |
Info
optimised for component editor
View
id: execution-gap-list-0d1ac17b-dd43-4e75-84f8-9bb669000d66 type: execution-gap-list settings: kpi: KPI_TOTAL
5. Set up Profile View using Anomaly knowledgeObjectId
You cannot click on an Anomaly to retrieve more details. To do this, you must create a new Profile View:
Profile View
metadata: key: execution-gap-profile-view template: false name: Execution Gap Profile View knowledgeModelKey: knowledge-model knowledgeObjectId: ANOMALY # References the knowledgeObjectId (see Knowledge Model configuration) for the respective anomaly profileView: true # Defines that the it's a profile view variables: - name: id layout:
Note
If you don't want to create separate Profile Views for each Anomaly:
Assign the Anomalies in the KM the same knowledgeObjectId.
Go to your Execution Gab component and enable forwardFilterToProfileView: true.
Lastly, you can make use of Object Variables in your Profile View. By this, you can then render the content dynamically based on the selected Anomaly.
Click here to see exampleProfile View
metadata: key: execution-gap-profile-view template: false name: ${anomaly.displayName} # Example of Object variable. It takes the displayName straight from the KM knowledgeModelKey: knowledge-model knowledgeObjectId: ANOMALY profileView: true variables: - name: id - name: anomaly # Defines an object variable of type anomaly defaultValue: id: ANOMALY_EXPRESS_1 layout: ... components: - id: text-box-5a30b628-f9f1-4f30-9f05-a351cbaf99ae type: text-box settings: title: Object based values content: | <p><strong>id:</strong> ${anomaly.id} <p/> # Displays the different object variables, which are available from the KM <p><strong>name:</strong> ${anomaly.displayName} <p/> <p><strong>description:</strong> ${anomaly.description} <p/> <p><strong>flag:</strong> ${anomaly.flag} <p/> <p><strong>prop1:</strong> ${anomaly.customAttributes.prop1} <p/> <p><strong>prop2: </strong> ${anomaly.customAttributes.prop2} <p/> <p><strong>prop3: </strong> ${anomaly.customAttributes.prop3} <p/>
Warning
If you make use of customAttributes in your Anomaly, please make sure that all Anomalies are configured with the customAttribute otherwise the Profile View will fail to render.
Advanced configuration
Attribute | Required | Type | Possible values | Default Value | Description |
---|---|---|---|---|---|
name | false | String | Defines the title displayed above the component. | ||
forwardFilterToProfileView | false | Boolean | true false | false | Defines whether to forward the blocker as a filter to associated profile views or not. |
hideEmptyOccurrences | false | Boolean | true false | false | Defines if anomalies with 0 occurrences should be displayed. |
sortBy | false | Enum | customColumn defaultColumn direction | Defines by which column the items should be sorted. Can be either one of the defaultColumn keys (issue, impact, kpi, or occurrences) or a customColumn kpi reference. | |
customColumn | false | ||||
defaultColumn | false | ||||
direction | false | Enum | DESC ASC | Defines the directions of the sorting. | |
tableView | false | Boolean | true false | false | |
limit | false | Integer | 8 | Defines the limit on how many Execution Gaps should be displayed per page. | |
columns | false | Enum | issue, occurrences, kpi, impact | Rename column title or hide one of the standard columns. | |
issue, occurrences, kpi, impact | false | Enum | title hide | Defines the column you want to modify. | |
title | false | String | Defines the table title of the column. | ||
hide | false | Boolean | true false | false | Defines if the column should be hidden. |
custom | false | List of KPIs | Defines a list of KPIs, which should be additionally added to the component. | ||
kpi | false | KPI | References a KPI from the Knowledge Model, which will be displayed in an additional column. |
Info
optimised for component editor
View
id: execution-gap-list-0d1ac17b-dd43-4e75-84f8-9bb669000d66 type: execution-gap-list settings: kpi: ON_TIME_PAYMENT name: Execution Gaps forwardFilterToProfileView: true hideEmptyOccurrences: true sortBy: # customColumn: CASH_DISCOUNT Sorting can only be applied to customColumn XOR defaultColumn and both at ones defaultColumn: occurrences direction: DESC tableView: true limit: 5 columns: issue: title: Issue hide: false impact: hide: false kpi: hide: false occurrences: title: "# Invoices" custom: - kpi: CASH_DISCOUNT