Skip to main content

Celonis Product Documentation

Studio Release Notes

Studio release 24.05.2022

Change in view variable behavior

With our latest release on May 24th we introduced a change in view variable behavior.

Previously, variables changed back to their default value through view reload (e.g. refresh of a page or navigation between views). The selected value did not persist. If a default value is set, the variable always defaults to that. If it is not set, the value always gets reset to empty/null.

Now variables keep the latest variable value until it’s changed proactively to a new value. This reduces the end user effort and ensures the views always show relevant content. The change will also improve performance of views.

Old behavior

New behavior

Initial State

Bildschirmfoto_2022-05-18_um_11_26_04.png
Bildschirmfoto_2022-05-18_um_11_26_04.png

Variable is set

Bildschirmfoto_2022-05-18_um_11_26_12.png
Bildschirmfoto_2022-05-18_um_11_26_12.png

After refresh, page navigation, log-out

Bildschirmfoto_2022-05-18_um_11_26_28.png
Bildschirmfoto_2022-05-18_um_11_34_29.png

How can I now reset a variable to its default value after the new change?

For that use case you can build a reset button using the view component button.

Buttons can be configured to update variables. You simply list the view variables that should be reset by the click of the button and select "null" as a value.

You can either use the visual editor or the YAML editor of the button component.

Visual editor

Bildschirmfoto_2022-05-18_um_12_00_17.png

YAML editor

yaml_null.png

Null, true and false are no longer stringified in component settings

In the past, values such as null, or the booleans true or false have been turned into strings "null", "true", "false" when used in component settings. As a result, they could not be used for conditional statements within component configurations. This is now possible offering new possibilities to make a view dependant on user input.

SPA 1.29 release 28.04.22

Pinned selections

You can now set a default filter in Studio Analysis that is applied for all users every time they open the analysis. Selections can be pinned in edit mode using the Pin Selection toggle which appears in both the dropdown and full screen versions of the selection UI. This can be used to limit the scope of the analysis to data relevant to end users, bringing the functionality of the Publish with selections feature from Process Analytics to Studio. For more information, see Pinned Selections.

Pin_Selection_with_text.gif

Bug fixes

  1. The load script information in the documentation generated from CPM4-migrated analyses has been corrected.

  2. Fill components did not render properly if the loading process was interrupted by leaving the browser tab. This no longer happens.

  3. In some cases, the automatic vertical axis range for a chart with stacked KPIs would be too small, resulting in truncated data. The range is now calculated correctly.

  4. A minor visual bug in charts with horizontal scrolling was fixed.

  5. Searching an OLAP column of strings for \ (blackslash) or ' (single quote) produced an error in the OLAP that would persist until the page was refreshed. The search function now works as intended for these characters.

.

Table infinite scrolling

Infinite scrolling lets you view all your data without needing pagination. Data is continuously loaded as you scroll through the table. This is enabled in all new tables by default.

studio_110422_1.gif

To enable this in existing tables, remove the "Show Pagination" selection in the Visual Editor. 

studio_110422_2.png

Separate pagination and display limit configuration in tables

The limit field was previously set a limit or page size (depending on if pagination was enabled).

studio_110422_3.png

This process has been cleaned-up by introducing two new fields:

  1. Display Limit: If enabled, this field will limit the total number of rows displayed in the table.

  2. Show Pagination: If enabled, you can define the number of rows that will be displayed per page. If this is not enabled, there will be no pagination in the table and only infinite scroll will be used.

studio_110422_4.png

Empty row issue fixed in table

“Hide empty rows” will no longer be a configuration and will be always set to “true” to prevent empty rows from displaying with scroll in the tables.

In the past, this configuration was used to maintain the table height when applying view filters.

studio_110422_5.gif

However, this will no longer be needed with the following changes:

  1. When pagination is enabled the default table height will always be based on the number of rows set per page (or defined container height) and will not change as the table is filtered.

  2. When pagination is not enabled and infinite scroll is used, the table height will by default adjust in height as it is being filtered. You can define a container height in the layout if you wish to keep this height from changing.

studio_110422_6.gif

Inline editing for Date type attributes

In-line editing can be used for "Date" type attributes.

studio_110422_7.png
studio_110422_8.png

Sticky header configuration deprecated and set to true in all tables 

The sticky header configuration will be removed from the YAML and will by default be set to "True" in all tables. This configuration has not been functioning correctly for several months so there will be no change in behavior for any users.  Currently, all tables already have sticky headers enabled and will continue to have these enabled.

studio_110422_39.gif

Comment Component Visual Editor

The comment's component can now be made with a visual editor.

studio_110422_3_10.png

You can now save time by quickly jumping to the Base Knowledge Model your KM extends from with just one click!  Now every Knowledge Model Extension will have a button redirecting to its Base Knowledge Model.

studio_3103.png

Learn more about Base and Extension Knowledge Models.

Note

This release features several table usability enhancements.

Column Hover Over Help Text

Help text will now automatically display for each column header on-hover. This text will be populated from the Knowledge Model description field for both Attributes and KPIs. 

studio_2203_1.gif

Populate this help text by filling out the "Description" field in the Knowledge Model editor.

studio_2203_2.png

Column Resizing

Users can now manually resize columns in the table to quickly customize the width to their preference. Any resizing changes will be saved in a user's preferences. This means that if one user resizes columns, these changes will not affect another user's table.

studio_2203_3.gif

Column Sizing Configuration

Two new configurations have been introduced into the table visual editor that enable users to adjust the column size and resizing method.

studio_2203_4.png

Expand to fit content: Columns will expand to show all column header and cell content using a horizontal scroll, if required. As columns are resized the table width will expand/condense based on adjusted columns.

studio_2203_5.png

Fit to table width: Columns will be equally spaced to fit in defined table width. The table width will not change even as columns are resized.

studio_2203_6.png

Line-Break Configurations

Line-break configurations are added into visual editors for both headers and within the cells.

studio_2203_7.png
studio_2203_8.png

Visual Editors for Actions

Easily build automations by integrating existing Skills to your Views with the NEW Visual Editor for Actions.

  • Faster Skill Connection: Easily connect existing Skills to your Actions and quickly specify the Attributes you want to pass through your Skill Inputs. The Record your Attributes belong to will be automatically connected to the Action.

    studio_0703_1.gif
    studio_0703_2.png
  • Easier Filter Addition: Use the PQL Editor to quickly specify in which situations the Action will be available for users by creating a Filter statement. 

    studio_0703_3.png
  • Streamlined Button Creation: Quickly design the button to trigger your Action using the Button Visual Settings.

Connect Flags to KPIs Using Visual Editors

Quickly connect Flags to KPIs impacted by the Flags added to your data to add these to the Execution Gaps Component.

  • Streamlined Flag Creation: Easily monitor unwanted behaviour in the data by creating a new Flag Statement using the PQL Editor. Quickly see if the Flag impacts the data by looking at how many rows have been flagged on the Record.

    Flagged_Rows.gif
  • Easy Flag Impact Recognition:  Easily identify the impact the Flags have over the data by adding different KPIs to the Impacted KPIs list and seeing how they interact with the Flag.

    Impact_Calculation_Gif.gif

Improvements

  1. The PQL editor preview now shows the common table of the PQL query. The common table is important because only tables sharing a common table can be joined and the results of a KPI may depend on the common table. For more information, see Join Functionality.

    SPA_1_26_1.png
    SPA_1_26_2.png
  2. For design consistency, PQL documentation is now accessed from the PQL editor by clicking pql_reference_icon.png; this replaces the former toggle.

  3. The wording for the settings Allow bpmn export of the process explorer and Show filter UI on published version was updated.

Bug fixes

  1. The sorting buttons in the Throughput times section of Process Overview had no effect. The buttons now sort by slowest/fastest as intended.

  2. Previously, renaming a bookmark highlighted it in the bookmarks menu. This no longer happens.

Waterfall is getting a visual editor!

Waterfall is joining the new visual editing experience.

Visual editors are the default way to edit and create both components; you can also switch between the Visual Editor and YAML editor.

studio_230222_1.png

New look and feel for visual editor for Charts

We've improved the visual editor for Charts. You can now easily control and manage chart settings with Chart layers.

studio_230222_2.png

Process Explorer with a pre-configured event log

We now provide the Process Explorer pre-configured, based on the first event log defined in your Knowledge Model. You can easily add the component to your Views and start getting insights without requiring initial configuration.

studio_23022022_3.png

Improvements

A new option is null has been added to the color threshold dropdown of the color mapping editor. This lets users define color mappings based on null values of the dimension or series.

color_mapping_editor.png
city_count_list.png

Bug fixes

  1. When switching the order of KPIs in a line chart, the KPI names were not reordered in the hover legend unless the component was refreshed. The hover legend now adjusts immediately.

  2. A minor visual bug in the sticky Violations header of the conformance checker was fixed.

Knowledge Model Updates: PQL Editor Dark Mode

Rest your eyes and save energy on your device with the new PQL Editor Dark Mode. PQL Editors for Knowledge Model Objects are now shown by default in dark mode.

studio_release_15_02.png

Improvements

  1. Pagination has been introduced for conformance checker violations. This prevents the browser from slowing down or crashing in cases where there are a large number of violations.

  2. The descriptions of each action in the info message found in the button component settings have been revised to be more detailed and accurate.

    SPA_1_24_1.png

Bug fixes

  1. For histograms, coloring mappings based on dimension did not apply to buckets covering a range of values, only to buckets consisting of a single value. The bucket is now colored if it lies entirely within the user provided threshold. For example, the histogram on the right has the color mapping: green if less than or equals 10 and red if greater than 10.

  2. Process explorer/variant explorer KPI:

    1. It was not possible to provide different units for more than one Variant explorer connection KPI. The unit labeling now works as intended.

    2. The option to format all KPIs according to one of the formulas did not work, so it has been temporarily removed to avoid confusion. The feature will be reinstated in a future release.

    SPA_1_24_2.png
Knowledge Model Updates

Active Data Model Variable Selection

Know more swiftly and easily the origin of the data you are using. Quickly identify the active Data Model Variable in your Knowledge Model by looking at the highlighted Data Model Key in the Data Model variable chooser.

studio_01_22_22_1.png
Referencing of KPIs within the KNowlege Model becomes case-sensitive

After the release, the referencing of KPIs becomes case-sensitive everywhere the KPI Id is referenced. The change only applies to the usage of KPI(...) within Knowledge Models, so the referencing of a KPI Id within the same Knowledge Model (see examples below).

In all other cases, the behavior when referencing a KPI Id was already case-sensitive before (for example in the Table or the Attribute List components in Views).

Examples where this change has no impact at all:

  1. IDs of KPIs have been copy-pasted or written exactly in the same way (as in their Knowledge Model definition) wherever they have been referenced.

  2. All KPIs always have been defined and referenced with fully capitalized IDs.

Example where this change has an impact:

studio_01_22_22_2.png

In the Knowledge Model, there is a KPI which is defined by the ID "StrAnGe_WAY_toWriteanID"

If you reference this KPI within the Knowledge Model as "KPI(STRANGE_WAY_TOWRITEANID)", it will fail. This can impact tables and other components relying on this reference.

Checking a Knowledge Model for incorrect KPI references

The following script can be used in the Machine Learning workbench to check your Knowledge Model for wrongly referenced KPIs. However, for smaller Knowledge Models without many KPIs it also can be looked up manually.

CHECK

Visual editor for variables update

Deletion prompt and tooltip added

Work more easily with variables and leverage the visual editor for them. The editor makes it easier to create new Variables with only a few clicks and no need to go into YAML.

To enhance the editor and secure the work, the deletion of a variable must now be confirmed, after clicking on delete within the visual editor.

Additionally tooltips are shown when hovering over the icons for edit and delete.

studio_01_2_22_4.gif
studio_01_22_22_3_pn4.png

Table Virtual Scrolling

Virtual scrolling was implement to increase the table's performance by decreasing the load time. It does this by only rendering the rows/columns that are initially display and then loading the data and you scroll to view it. There should be no impact on how you interact with or use the table.

studio_24_01_22.gif
Copy query to new clipboard

Users can now copy the complete backend query for OLAP tables and KPI components (Gauge, Fill, Number Radial) from the context menu in edit mode, or from the icon menu in preview mode. Analysis load scripts, hidden columns and selections are not copied.

SPA_1_23_1.png
SPA_1_23_2.png

Copy query is available for the following components:

  • KPI (Gauge, Fill, Number, Radial)

Quickly copy PQL statements to use in other components without having to go to the PQL editor.

Copy_Query.gif
  • OLAP table

Example

FILTER "LFA1"."NAME1" IS NOT NULL, TABLE ( "LFA1"."NAME1" AS "Vendor", KPI("First Time Right Ratio") AS "FTR Ratio" FORMAT "%" ) ORDER BY KPI("First Time Right Ratio") DESC NOLIMIT;

COMING SOON! Reuse the data in the table in Action Flows by pasting the query into the Query Data module.

Bug fixes

  1. Setting an activity table other than the default as the custom dimension in the conformance checker returned NaN or 0. This use case now works as intended.

  2. The word "Events" has been removed from Steps per case in the conformance checker in order to match the overview.

New Studio features give you more flexibility, speed and transparency when you customize the business logic in your Knowledge Models!
Visual Editor for Augmented Attributes

Quickly and easily store additional information on top of your existing data with the implementation of the Visual Editors for Augmented Attributes! These allow users to:

  • Create Augmented Attributes with a few Clicks: Easily create and customize Augmented Attributes inside the Visual Editor for Records. Define their name, data type, and values with just a few clicks.

    60363327.gif
  • Easily Add Augmented Attributes To Your View Components: Quickly add Augmented Attributes to your View Components from within your View. Easily modify or create new Augmented Attributes altogether while you build your View Components.

    60363339.gif
  • Update Augmented Attribute Values with a Few Clicks: Use the inline editing feature to update the value of your Augmented Attributes as needed.

    60363333.gif
Visual Editor for Flags

Define and identify execution gaps and anomalies in your data with the implementation of the Visual Editors for Flags! These allow users to easily create and customize Flags inside the Knowledge Model, through the Visual Editor for Records. Quickly define the conditions they will evaluate using the PQL Editor!

60363335.gif
Use Identifiers in Views

Users can now use the identifier inside components within Views! The identifier is now usable as an attribute.

60363338.png
Revert Knowledge Model Objects to their Base State in Views

Users are now able to see how Objects in Knowledge Model Extensions differ from their Base State and revert these Objects from inside the Views

60363325.png

Bug fixes

1. If the user deleted an image from the settings but kept the image component in the analysis, the image component would become transparent and an undefined error pop-up would briefly appear. There will no longer be any error pop-up shown. Instead, there will be a placeholder image and warning on the image component itself.

2. Sheets excluded from publishing are now grey in Studio Preview to distinguish them from non-excluded sheets.

3. Members were able to change the columns used for Conformance RCA. The PI configuration link is now hidden from Apps.

4. In rare cases, the filter icons would get hidden behind other components. This no longer happens.

5. The decimal separator for Spanish and French has been corrected.

6. Pie/donut chart labels sometimes got cropped out when there were many slices. The size of the chart now better adjusts to fit all labels.

7. Hidden activities in the Process Explorer/Variant Explorer will be saved with bookmarks going forward. Bookmarks created before this release will not change.

8."Percent" is now correctly translated to "Prozent" for German users.

Sankey and Treemap are getting a visual editor!

Both components are joining the new visual editing experience.

Visual editors are the default way to edit and create both components, nevertheless, it is still possible to switch between the visual editor and YAML editor.

60362589.png
60362588.png
Custom KPI formatting is now supported on Process Explorer
60362592.png

Formatting of custom KPIs is now possible.

With it, you can add custom units and how the KPI is being visualized.

More information in Formatting Custom KPI.

Knowledge Model Objects Release 22.12.21

New Studio features for the personalisation of the business logic within Knowledge Models!

Implementation of Internal Note in Knowledge Model Objects

Studio now allows users to provide comments to their Knowledge Model objects in the Visual Editors with the addition of the Internal Note field. This gives users the space to add additional information about the object as needed.

studio_22_12_21_1.png

Use of Variables within PQL statements

Reuse and make the business logic inside your Studio Knowledge Model more flexible by using variables, runtime variables and parameters inside your PQL statements: 

NEW Autosuggestions inside the PQL field: The PQL field inside Knowledge Models now suggests possible variables and runtime variables to include as part of the PQL statement.

studio_22_12_21_2.png

NEW Suggested variables and runtime variables inside the PQL editor: Implement existing variables and runtime variables within your PQL statements with just a few clicks! Existing variables and runtime variables are now listed under the 'Variable" category within the PQL editor and can be added to PQL statements with just one click.

studio_22_12_21_3.png
Several View components have been made more accessible for all users

Table and KPI List are now accessible via keyboard

Elements in KPI List and Table are now accessible and focusable via Keyboard. Use the TAB key to navigate through all elements. Actions (filter, select, sort, etc.) can be performed on the element in focus by selecting ENTER.

60361835.gif
Aria Labels and Titles added to several components

Aria labels and titles have been added to several elements within the table and KPI bowler to enable users with accessibility screen readers to more easily navigate their views.

Table cell remains focused after opening profile views

After opening profile views from a table cell, the cell will remain in focus after closing the profile view.

60361836.gif
Sheet copy-paste functionality

It is now possible to copy an entire sheet from one Analysis to another in Studio. When right clicking on a sheet tab in the bottom bar, the options Copy Sheet to Clipboard and Paste Sheet appear in the context menu. In contrast to copying components, copying the sheet will keep the position of each component on the sheet the same. Sheets can be copied across analyses, packages, and spaces, but not teams.

  • What is copied: Components and their settings, sheet format, sheet filter.

  • What is NOT copied: Saved formula and variable definitions, analysis filter, selection filters, image uploads, bookmarks.

60361974.gif
Bug fixes
  1. The Open Document button action was always bringing the user to a blank console. The button action now works as intended.

  2. In certain cases, hover tooltips would remain on the screen after switching to a different asset. The tooltip now always disappears upon switching to a different asset.

Studio now allows users to revert changes in the definitions of their Knowledge Model (KM) Extensions objects to the version of the same object in the KM Base, in case users want to return an object in their KM Extension to its original base version.

Tip

Follow this CHECK link to learn more about Base and Extension Knowledge Models.

With this feature:

- Users can identify from inside the KM whether an object definition in a KM Extension is different from the definition of the same object in its KM Base. Users are also able to see exactly in what way these objects are different.

60360820.png

- Users can revert an overwritten object to its base state from within the object in the KM Extension. This gives users the opportunity to return individual parts of their KM Extension to their original base state with just a few clicks.

60360461.gif
Visual components are now accessible via keyboard

Elements in Bar Charts, Scatterplots, Waterfall Charts, and World Map are accessible and focusable via Keyboard.

Additionally, the tooltip is displayed once these elements are focused.

Use the TAB key to navigate through elements.

60361187.gif
World map countries and zoom controls are now accessible via keyboard

World Map countries are accessible and focusable via Keyboard. A tooltip is displayed once these elements are focused, and after pressing ENTER a filter is applied.

60361188.gif

Table Column Filtering and Search

Users can now search and filter within the table columns themselves . Please note, that this is currently limited to STRING data types.

studio_24nov21_table_col_1.png
studio_24nov21_table_col_2.png
Text Box Component Visual Editor

The Text Box component can now also be built using Visual Editors.

studio_24nov21_text_box.png

Visual Editors are now available for the following View components:

  • Table

  • KPI List

  • Chart

  • Process Explorer

  • Dropdown List

  • Attribute List

  • Network Explorer

  • Worldmap

  • Quick Filters

  • Button List

  • Textbox

Custom Dimension in Conformance Checker
Conformance custom dimension

Users can now provide a custom dimension in the conformance checker to measure the conformance of a column other than the default activity column.

Available in edit mode of Analysis in both Process Analytics and Studio...

  • ...in the options menu of an existing sheet. Allow listed violations, KPIs and the process model will remain unchanged.

CC_Custom_Dimension_1.gif
  • ...in a new sheet, when Mine the target process is selected during setup.

CC_Custom_Dimension_2.gif
Conformance custom dimension

Users can now provide a custom dimension in the conformance checker to measure conformance of a column other than the default activity column.

Available in edit mode of Analysis in both Process Analytics and Studio...

  • ...in the options menu of an existing sheet. Allow listed violations, KPIs, and the process model will remain unchanged.

59048659.gif
  • ...in a new sheet, when Mine the target process is selected during setup.

59048661.gif
Studio Release 02.11.21
Button List component Block & Size configurations moved to general component settings

Previously, the block & size configuration options were listed as a per button configuration option. To keep consistency in the component, these settings will be moved to the general component settings. The Block configuration was also renamed to "Orientation" to keep consistency with other components.

Note

Both configuration changes are backward compatible. This means that the view will still work with per button configurations at the moment but will show as deprecated configurations. These will eventually also be removed so everyone is encouraged to move these over as soon as possible. If you make any changes in the visual editor this will be added into the new general configurations and will override any per button configurations your component may still have.

Old Method

New Method

id: button-list-d732900e-050f-42c8-816f-b680617262a8
type: button-list
settings:
  buttons:
    - label: new button
      variant: neutral
      size: small
      id: 318e235f-f161-4187-a45e-39c6f175b58e
      order: 100
      block: false
    - label: new button
      variant: neutral
      size: small
      id: 74e2877a-590f-4c91-979d-13c4a7e3a5e0
      order: 200
      block: false
id: button-list-d732900e-050f-42c8-816f-b680617262a8
type: button-list
settings:
  buttons:
    - label: new button
      variant: neutral
      id: 318e235f-f161-4187-a45e-39c6f175b58e
      order: 100
    - label: new button
      variant: neutral
      id: 74e2877a-590f-4c91-979d-13c4a7e3a5e0
      order: 200
  orientation: vertical
  size: small
Quick-Filter and Button List Component Visual Editors

The Quick-Filter and Button List components can now also be built using visual editors.

Visual Editors are now available for the following View components:

  • Table

  • KPI List

  • Chart

  • Process Explorer

  • Dropdown List

  • Attribute List

  • Network Explorer

  • Worldmap

  • Quick-Filters

  • Button List

Button List Visual Editor

Quick Filters Visual Editor

57543137.png
57543136.png

Additional components will follow soon!

For the components that currently can't be built using the Visual Editing Experience, YAML can still be used. Find out more about YAML in the documentation or in the Academy Training "App Creator".

Table OnClick Configuration Enhancements

Users can now link both Profile Views & Views within the table component. For both you can define the following configurations:

  • Carry Filters: Defines if filters should be carried from the current view to the linked view. This will apply to all filters applied to the view (i.e. applied from dropdowns, quick-filters, charts, etc.)

  • Carry Selections: Defines if table selections should be carried from the current view to the linked view. This should only be enabled if both your current and linked views contain table components.

  • Variables: Defines a variable(s) in the view that should be carried over to the linked view. Previously, only the selected value could be carried to the profile view, now any additional variable information can also be carried (e.g. any href attribute)

The profile view configuration method was updated in YAML to better align with the new open view feature. We encourage everyone to migrate to the new structure, but the YAML will remain backward compatible with the old structure. If you wish to use the additional configurations mention above, you will need to first update to the new YAML structure.

Note

If you update the view and/or profile view link within the visual editor (i.e. update filters, selections, variables settings) , your configuration will automatically be updated to the structure in YAML.

Old Method

New Method

onClick:
  LinkToRecordProfile
onClick:
  openView:
     openInSideOverlay: true
     carryFilters: true
     carrySelections: true
     variables:
         - name: Task
           value: "5"
     profileView: true
While it is encouraged to utilize the table visual editor, you can now link views or profile views using the following methods:

Link view or profile view through table visual editor

Link any view in YAML

Link Profile view in YAML

57543140.png
id: table-a721dcbf-955a-4f45-a2b8-b0c69d7effa4
type: table
settings:
  data:
    columns:
      - field: ORDERS.COUNTRY
        id: 3efc2c85-41e2-4954-a330-c000c8257cbd
        order: 100
        onClick:
          openView:
            openInSideOverlay: true
            viewKey: testprofileview-copy
            carryFilters: true
            carrySelections: true
            variables:
              - name: Task
                value: "5"
      - field: ORDERS.CUSTOMER_ID
        id: 04aa4e7f-7ff3-422f-873f-42b2320a9907
        order: 200
      - field: ORDERS.CUSTOMER_NAME
        id: 3a421c18-ce0d-456d-93e1-8c3cfb66892c
        order: 300
onClick:
  openView:
     openInSideOverlay: true
     carryFilters: true
     carrySelections: true
     variables:
         - name: Task
           value: "5"
     profileView: true
Table OnEdit Changes

You now have the ability to trigger the following actions when editing cells within your table:

  1. Update Augmented Attributes (In-Line Editing)

  2. Execute a skill when table value is changed

In-Line Editing

You can now easily use the in-line editing feature for all augmented attributes without needing to set up a skill beforehand. You can set this up for augmented attributes in YAML or the table visual editor.

Note

You will need to first configure/display your augmented attributes in the table using "<Record ID>.AUGMENTED_<Augmented Attribute ID>". Additional information on Augmented Attributes can be found here.

Visual Editor

YAML

57543150.png
data:
  columns:
...
...
   - field: PIZZA.TYPE
     id: df08a98d-812d-4008-ae80-583375530f0e
     order: 400
   - field: PIZZA.SIZE
     id: 3730ffb3-9e5b-40c2-85cc-f3d1c852e6d4
     order: 500
   - field: PIZZA.AUGMENTED_CATEGORY
     id: 8f04b729-cbbd-4185-8735-ada87bba5228
     order: 600
   - field: PIZZA.AUGMENTED_COMMENT
     id: c41d4c95-933d-47b3-81e7-256b2b1a50b9
     order: 700
     onEdit: 
                updateAugmentedAttribute: true
Execute a skill

You can trigger skills to be executed when any augmented attribute is updated in the table. To use the inputs within the skill, you can set up a manual sensor as shown below:

Step

Details

Setup

Final Setup

Create a manual sensor

Create a manual sensor with the following inputs

NEW_VALUE

IDENTIFIER

55707649.gif
55707650.png

Release Notes of the Visual Editing Experience

Building powerful Apps in Celonis Studio was never easier!

What’s new

The Celonis Studio Visual Editing Experience is now live! With the big release of the Visual Editors, we enable you to make changes to your Studio package with a couple of clicks! Now you can edit your KPIs on the fly while configuring a table.

Simply switch to the Visual Editor and experience the new powerful capabilities!

Note

Currently, not all View components and Knowledge Model objects configured in YAML can be edited in the Visual Editor. However, the number of components will be steadily increased.

[1] View edit mode - What you see is what you get!

Our Visual Editing Experience allows you to use Visual Editors, so you can always see what you are currently building on your Views!

Visual editing in Views consists of:

  • A fast and intuitive way of creating layouts through point and click.

  • Visual experience for views metadata.

  • Visual View-filter configuration

  • Visual editing for embedded Views

What you see is what you get! Create layouts through point and click!

Easily switch between the Code Editor and the Visual Editor.

57542312.gif
[2] Visual Editors for our most important View components

From now on the components such as Table, KPI List, Chart, and many more can be built using the Visual Editors. The Visual Editing Experience guides you through the component configuration process.

Visual Editors are now available for the following View components:

  • Table

  • KPI List

  • Chart

  • Process Explorer

  • Dropdown List

  • Attribute List

  • Network Explorer

  • Worldmap

Other components will follow soon!

For the components that currently can't be built using the Visual Editing Experience, YAML can still be used. Find out more about YAML in the documentation or in the Academy Training "App Creator".

57542406.png

Find the YAML Documentation here.

Simply create a new chart using the Visual Editor.

Create a chart and apply a filter to the chart
[3] Visual editing and a new Interface for the Knowledge Model

Create Knowledge Model objects with ease - without YAML! Explore the new interface for the Knowledge Model. Additionally, components like KPIs can simply be edited from within the new KPI Editor.

Visual editing for the Knowledge Model consists of:

We introduce a new interface for the Knowledge Model with the Visual Editor.

57542407.gif

Edit a KPI within the Visual Editor.

57542408.gif

Browse and manage Knowledge Models from within Views.

57542265.gif
Improved E2E Workflows:
  • Not only can you use the visual interface to configure individual components, but you can also bring the different assets of your app closer together

  • Create KM objects on the fly, reducing the time building through blended edit flows

  • Visual Editors reduce the need to rely on documentation through built-in guidance

Known Issues

In the following section we describe known issues with the release, as well as how to work around them:

Object

Issue

Workaround

Expected Resolution Date

Dropdown Component

Custom Objects are currently not displayed in the Visual Editor data selector.

If you wish to add new Custom Objects within your dropdown component, please add these through the YAML editor.

Nov. 5th, 2021

Empty Preview State

The empty state preview window for some View components is currently broken.

This has no effect on creating or editing your component, and the preview will display correctly once you have defined the component's data. No workaround is necessary.

Nov. 5th, 2021

Chart Auto Height

When using auto-height on the View section, the legend of a chart may overlap the axis.

Set a fixed height for the layout section or column.

Nov. 5th, 2021

Adding new field "internalNote" to KM objects for YAML Documentation

There is a new field introduced to KM objects called internalNote. It is currently accessible via the YAML Editor and is designed for internal usage only.

It will allow developers to insert documentation for each KM object.

Note

In preparation for the Visual Editing Experience Release on October 26th 2021 it is mandatory and important to copy all existing comments in YAML to the new internal Note section in corresponding KM objects. After October 26th comments in YAML (starting with a # ) are no longer supported and all existing comments will automatically be deleted.

Example KPI configuration

kpis:
  - id: _open_invoices
        displayName: "# Open Invoices"
        description: Open Invoices
        internalNote: This is my documentation for complicated things which is not visible to business users. 
        pql: COUNT(DISTINCT "RSEG"."_CASE_KEY")
        

Pie Chart Component having decimals in percentage value

In the Pie Chart Component of Studio Analysis, it is now possible to display decimals in percentage values in order to have consistent values in different components such as a Single KPI Component.

Table inline editing

Users can now use in-line editing for any augmented attributes in the new table component.

55707648.png

Setup steps

  1. Create an augmented attribute using the steps defined here.

  2. In the Table's Visual Editor, add the newly created augmented attribute into the Table component.

    table_inline_editing_1.png
  3. Open the attribute's settings, by clicking on the Augmented Attribute within the selected data list. Within the "On Edit" settings, select "Update Augmented Attribute".

    table_inline_editing_2.png

Corresponding YAML configuration

id: table1-c124731f-480a-49f8-b72e-2fc5f26dcd30
type: table
settings:
  data:
    columns:
      - field: ORDERS.augmentedattribute_example
        id: 53fc5dbe-971d-4147-9d02-996c57d4577d
        order: 100
        onEdit:
          updateAugmentedAttribute:true
Table Multi-Column Sorting

Multi-sorting will automatically be available to use within the table. The sorting can be applied using the sort arrows at the top of each column. Multi-sorting can be used by selecting the arrows in the order you would like to sort.

sorting_gif.gif

Note

Sorting is not currently available for augmented attributes.

Table Scroll Reset During Pagination

Users will now be taken back to the top of the table when navigating between table pages.

scroll_rest_during_pag.gif
Table Sort ID Added to Support Extension Views

The "SortBy" configuration will now support an ID configuration to allow users to edit/remove the sort within any extension view.

Example

Table base code:

settings:
   data:
     sortBy:
     - field: REC.ATTR
       direction: ASC
       id: SMTH
       order: 1
       scope: HIDDEN
    - field: ....

Possible extension changes

  1. Set the scope to "Hidden" to allow users to remove this sort in the extension.

    settings:
       data:
         sortBy:
         - field: REC.ATTR
           direction: ASC
           id: SMTH
           order: 1
           scope: HIDDEN
        - field: ....
  2. Edit the direction of the sort in the extension.

    settings:
       data:
         sortBy:
         - field: REC.ATTR
           direction: DESC
           id: SMTH
           order: 1
        - field: ....

UPDATE

Process Explorer: Custom KPIs

Deprecation Notice

The process explorer configuration is deprecated as of this release. We will stop supporting this configuration until 31.10.2021, so your components will still work up until that date. We encourage you to update your components as soon as possible, you can read up on the migration guide here.

Event Log Automerge

Global Filters

Package Types will be removed both from Studio and Store

Package Types will be removed from both Studio and Store

50731047.png

Section-Title and Single KPI List Components will be deleted

The Section-Title and Single KPI List components have been fully removed from the code base and will no longer be available within the studio. These components were already deprecated and not actively being supported so no change should be required for users.

Multi-Event Log: New filtering possibilities
Activities and Edges pop-up

Clicking on activities or edges will now prompt a pop-up. This pop-up contains specific information of the selected activity or edge and also allows for custom filtering scoped to each selection.

When adding multiple filters, each filter gets added on top of the last one.

50727583.gif
Option to show all connections

Useful for cases when it is required to show loops that otherwise would only appear after increasing activities.

Option showAllConnections allows users to show all possible connections of the first variant by default.

50727569.png
type: process-explorer
settings:
 name: MEL Loops
 showAllConnections: true
 eventLogs:
   - ACTIVITYTWO.FINDINGS
Multi-Event Log: Improvement on interactions
User states

Process Explorer now saves the state of the sliders and collapsed event logs even after reloading the page.

In addition, the state of the sliders will remain after filters are applied.

50727581.gif
Hovering on the activity name

In cases where the activity name exceeds the available size, we enabled the full visualization of it when hovering with the mouse.

50727578.png
Profile View

Node pop-up now includes an Open details button which opens a Profile View that the user can configure.

More information: Process Explorer

50727586.gif
Multi-Event Log: Readability

Virtual nodes (start and end) have both a new format and design that intends to make it easier to tell them apart from activity nodes and reduce redundancy.

Depending on the number of event logs being shown on the process explorer the formatting will vary:

One event log:

  1. Start nodes will be named: Start.

  2. End nodes will be named: End.

Multiple event logs:

  1. Start nodes will be named: Start: [Activity Name]

  2. End nodes will be named: End: [Activity Name]

50727591.png
50727592.png
Bug fix: Axis in Charts always start from zero

Charts are enabling again the configuration of the initial and final value of an axis,

Before the bugfix, the axis always started from zero.

It can be done with the encoding options [domain] and [zeroBased].

 encodings:
    y:
      field: FIELD_Y
      domain:
        - 3
        - 20
      zeroBased: false
50727598.png
(Minor) metadata.order is removed

The order in the metadata of a view will be removed this did not have any functionality for a year and will now be cleaned up from the YAML suggestions and validations. Please simply remove it from your metadata.

New Component Editor Slide In

In preparation for the upcoming new visual editors, we are changing how the Component Editor looks. It will now slide in from the side when opening in edit mode by clicking on a component.

Now possible to use variables in the view title

You can now use variables in a view title. This allows you for example to show the Invoice ID on the profile view of the invoice.

Simply use the value like shown below in the name of the view:

View Configuration

metadata:
  key: invoice-details
  template: false
  name: Invoice Details ${id}
  knowledgeModelKey: ap-operational-knowledge-model-sap-only
  knowledgeObjectId: INVOICE
  profileView: true
variables:
  - name: id
    defaultValue: 564255d
    type: string

The variables even update when the variable changes within a given view.

Warning for comments in view

Due to technical reasons, comments are not supported in view YAML configurations. We now additionally show a warning message if comments are used in the YAML.

50727482.png
KPI-List Sorting Configuration

KPI list configuration options added that will allow users to define the method and direction of how the KPIs are sorted within the KPI-list component.

- id: kpi-list-styling
  type: kpi-list
  settings:
    options:
      sortBy: value #name, order #Defines the sort method. Optional. Default value: order (KPI order that is defined in the individual KPI options).
      sortDirection: DESC #ASC #Defines the sort order. Optional. Default value: ASC. 
    data:
      kpis:
        - kpi: TOTAL_NUMBER_OF_INVOICES_2
          show: true
          order: 1
Version Control for Studio Analysis

We are excited to introduce Version Control capability for the Analysis asset in Studio.

Hide Views and Analyses from the published Package in Apps

You can now define the visibility (shown, hidden) of assets in the published packages while continuing to include them in the published package.

This functionality is useful when

  • you are working on an analysis or a view that is not ready to be used by the business users, which you however want to include in the published versions to create a proper package version history

  • when you want to remove a view or an analysis from Apps which was published

  • when you want to remove a package from Apps which was published in the past

How it works

There are two options on how to hide/unhide assets

  • Via the context menu of the view or analysis

50727230.png

2. On the package settings in the tab Apps Perspective

50727231.png

For the setting to take action, the package has to be published.

50727232.png
Gridlines, position and target lines
Gridlines

From now on charts will have gridlines enabled by default.

The option to disable it is available:

encodings:
    x:
      field: [FIELD]
      axis:
        grid: false
50727185.png
id: chart
type: chart
settings:
  limit: 1000
  name: Risk Scatterplot
  interactions:
    selection: true
    tooltip: false
  showLegend: true
  encodings:
    x:
      field: RISKSCATTER.LIKELIHOOD
      axis:
        grid: false
    y:
      field: RISKSCATTER.IMPACT
  visuals:
    - mark:
        type: point
        labels: true
Position & Target Lines

Position lines are available, together with the option to disable target lines.

Target Lines

Assuming one of the kpis has a defined target on the knowledge model, the following yaml will show a target line:

YAML configuration

settings:
 encodings:
   x:
     field: KPI
   y:
     field: KPI2

On the other side, if this target line needs to be hidden, it can be done by:

YAML configuration

settings:
 encodings:
   x:
     field: KPI
         kpiTargets: false
   y:
     field: KPI2
Position Lines

Position lines can be defined. As well as its format and color.

50727188.png
id: longLabels
type: chart
settings:
  name: Simple Bar chart
  showLegend: false
  encodings:
    x:
      field: RISKSCATTER.RISK
  visuals:
    - mark:
        type: bar
      encodings:
        y:
          title: Likelihood
          field: AVG_RISKSCATTER_LIKELIHOOD
          kpiTargets: false
    - mark:
        type: rule
        labels: true
        color: BLUE_50
        style: solid
      encodings:
        y:
          datum: AVG_RISKSCATTER_LIKELIHOOD

More information can be found in our documentation.

Beta: Visual Layout Editor for Views

The time has come - we are surpassing the text-only configuration for the views and introducing a new Visual Layout Editor.

Here is a video of how to build and set up a layout (using existing, predefined components from the view)

You can always go back to using the YAML only way of creating the Layout but please give us feedback on how you like the new editor.

50726416.gif
Call to action for view creators: Layout changes

To allow for the visual layout we had to introduce how the layout works. If our team has not been in contact with you yet, please check the following:

  • Do you have columns in a row that have a summed size of more than one? Please make sure to put the overflowing columns in their own row (as they are displayed currently) before the release.

layout:
- rows:
  - columns:
     - id: a
       size: 1/2
     - id: b
       size: 1/2
     - id: c       
       size: 1/2
50726583.jpg
  • Do you have a grow-height: true within a tab, but not on the parent (the column including the tab)? → add the grow height on parent level and remove from within the tab

  • Try not to use layouts in columns when it is not needed (like having one component in a column but still having that component wrapped in an inner layout (new term: inner section))

  • Make sure you have an explicit order defined. If not, the view layout might be displayed in one or the other way. (only problematic in very few cases)

50726609.png
50726610.png
50726611.png
Display timestamps in UTC and not browser timezone

Fixed the timestamps are displayed in UTC and no longer in the browser timezone. With this Studio and Process Analytics reporting is fully aligned.

Support only record.attribute and no longer record_attribute

With this release, we are no longer going to support "record_attribute" but only "record.attribute". This change was announced several weeks back and gave you enough time to migrate your views.

Content-cli - pull package draft

We have included a new content-cli command which allows you to pull the package draft. Until now, it was only possible to pull the published version of the package.

// Pull draft version of package
content-cli pull package --profile my-profile-name --key ap-operational-app --draft

This command is included in the content-cli version 0.1.2, find the documentation at https://github.com/celonis/content-cli

Hide Views and Analyses from the published Package in Apps

You can now define the visibility (shown, hidden) of assets in the published packages while continuing to include them in the published package.

This functionality is useful when

  • you are working on an analysis or a view that is not ready to be used by the business users, which you however want to include in the published versions to create a proper package version history

  • when you want to remove a view or an analysis from Apps which was published

  • when you want to remove a package from Apps which was published in the past

How it works

There are 2 options on how to hide/unhide assets

  • Via the context menu of the view or analysis

50727230.png

2. On the package settings in the tab Apps Perspective

50727231.png

For the setting to take action, the package has to be published.

50727232.png
Order change of the EMS Services in the Navigation Bar/Toolbar

Starting from 17th of June 2021, we are changing the default order of the services in the EMS navigation bar.

Today, Process Analytics is in the first position in the EMS navigation bar, Apps and Studio are on 6 and 7. See screenshot below:

50726061.png

From 06/17/2021, the new order will be 1. Apps, 2. Studio, 3. Process Analytics, …(the rest follows as before):

50726062.png

This change will make the Apps service the default landing page. This change does not affect users who have already set a custom order in their team. If you wish to change the order for yourself, you can do so by customizing the Toolbar.

50726063.png
Overflow and alignment configuration for dropdown and kpi-list component

As we have already added the overflow and alignment configuration options for the quick filter components we are now adding it to two more components: dropdown-list and kpi-list component.

Dropdown - View

  - id: doropdown-list-styling
    type: dropdown-list
    settings:
      name: Basic Dropdown Bottom Right
      styles:
        overflow: line-break #full-width, scroll #Defines the overflow behavior in case there are too many items in the list. Optional. Default value: full-width.
        position:
          horizontal: center #right, left, full #Defines the horizontal position of the component within its layout. Optional. Default value: full.
          vertical: center #top, bottom Defines the vertical position of the component within its layout. Optional. Default value: bottom.
      data:
        columns:
          - order: 100
            attribute: ACTIVITY.USERNAME
            id: 5f66bd61-417d-483b-8e25-a0200d256513

KPI List - View

  - id: kpi-list-styling
    type: kpi-list
    settings:
      styles:
        overflow: line-break #full-width, scroll #Defines the overflow behavior in case there are too many items in the list. Optional. Default value: full-width.
        position:
          horizontal: center #right, left, full #Defines the horizontal position of the component within its layout. Optional. Default value: full.
          vertical: center #top, bottom Defines the vertical position of the component within its layout. Optional. Default value: bottom.
      data:
        kpis:
          - kpi: TOTAL_NUMBER_OF_INVOICES_2
            show: true
            order: 1

Important

With this change, we also deprecate the old configuration scroll: true There is an automated migration that will migrate to the new schema.

Various Execution Gap component improvements
Numbers are right aligned

All numbers within the Execution Gap component will by default be aligned on the right to keep constituency within the table. There is no configurational change required.

50726300.png

Anomalies with 0 occurrences

When there are Anomalies with 0 occurrences we now display that the respective impact is 0 as well.

50726332.png
Pagination option

Pagination was added to the Execution Gap component to help users easily tab through all identified gaps.

50726301.png

View Example

  - id: anomaly1
    type: execution-gap-list
    settings:
      kpi: ${kpiId}
      name: Execution Gaps
      columns:
        issue:
          title: Issue
        kpi:
          title: ${kpiId}
        occurrences:
          title: Invoices
      sortBy:
        defaultColumn: impact
        direction: ASC
      tableView: true
      limit: 5 #Defines the limit on how many Execution Gaps should be displayed per page. Optional. Default value: 8
Indicate link only if knowledgeObjectId is defined

From now on we will only show the link in the Execution Gap list if the Knowledge Model.

50726332.png

KM Example

  - id: EANOMALY_HIGH_PROFIT_ORDERS
    displayName: Orders with a profit higher than 100 dollars
    description: This Anomaly displays Orders with a profit higher than 100 dollars
    flag: EFLAG_HIGH_PROFIT_ORDERS
    kpis:
      - kpiId: SUM_OF_SALES_EX
      - kpiId: KPI_AVERAGE_PROCESS_TIME
    knowledgeObjectId: ORDERS_ANOMALY #Link indication only appears if this object is defined in the KM
Hide anomalies with 0 occurrences

We have now added the configuration hideEmptyOccurrences, which allows you to hide anomalies with 0 occurrences. This field is optional and by default we display 0 occurrences.

50726333.png

View Example

   - id: anomaly2
    type: execution-gap-list
    settings:
      kpi: ${kpiId}
      name: Execution Gaps
      hideEmptyOccurrences: true #Defines if  anomalies with 0 ooccurrences should be displayed . Optional. Default value: false
    columns:
        issue:
          title: Issue
        kpi:
          title: ${kpiId}
        occurrences:
          title: Invoices
      sortBy:
        defaultColumn: impact
        direction: ASC
      tableView: true
Change Assignee function in Tasks is highlighted

When hovering over the avatar for the current assignee of a Task, it is clearer that users can interact with this user avatar to change the Task Assignee.

50726454.png

Introducing package/runtime variables

Previously, variables (formerly known as inputs) were restricted to be either within Views or within Knowledge Models, but they could not influence each other.

You can now use variables on package level that can even change values in the Knowledge Model on runtime (Without having to publish the package)

Use Cases:

  • Changing values for KPI calculations on a global level.

    • A Sales Director might want to change the current quarter revenue goal within a view that should be reflected across all views to calculate the revenue gap, etc.

Note

Please don't use variable names with operators like "-", "/", "*" or "+"

For more information, see Package runtime Variables.

Automatic mobile layout

Previously, if you wanted to make a layout work well for mobile, you probably had to define a layout yourself, with columns as broad as possible. Now, when a view is used on mobile, all components are automatically put below each other and will span the full width.

Example of a view that is not optimized for mobile:

Before:

After:

50725686.png
Overflow and alignment property for button and quick-filters components

You now have full flexibility to ensure that your button and quick-filters are perfectly aligned in your layout by defining overflow and position attributes.

Button
50725664.png

View

  - id: button
    type: button-list
    settings:
      styles:
        overflow: full-width #Options: line-break, scroll. Defines how the component should overflow if there is not enough space. Default 
        position: #Defines the position of the component. Optional
          horizontal: left
          vertical: top
      name: Open PDF
      buttons:
        - label: Open PDF
          onClick:
            href: https://test.de
            openInNewTab: true
          id: 71f2f99f-bc83-434c-9b85-3e374ccb57f3
          order: 100
Quick-filters
50725663.png

View

 - id: quick-filters
    type: quick-filters
    settings:
      single: true
      styles:
        overflow: full-width #Options: line-break, scroll. Defines how the component should overflow if there is not enough space. Default value: full-width
        position: #Defines the position of the component. Optional
          horizontal: left 
          vertical: bottom
      attributeFilters:
        - attribute: ACTIVITY.USERNAME
          type: string
          values:
            - name: Zoe
              value: Zoe
            - name: Fabian
              value: Fabian
User based hide/view configuration for table component

Until now the selection of which table column should be shown/hidden was all users the same. Now we store the preferences for each user. This allows users to fully customize their views without affecting their co-workers.

50725140.png
Storing the state of dropdown, table, kpi-list after task execution

We now store the state of the selected dropdown option, table pagination and sorting, kpi-list selection. Even if the user navigates to a different view and then comes back the selection is still the same.

Group by capabilities for table component

Now you can analyze KPIs across different attributes by viewing/hiding the different attributes. For this, you simply need to set the table to:

distinct: true

allowInvisibleColumns: true

For more details, please check out the example below.

Potential pitfalls

Ensure that non of the following is activated in the table

1- showing tasks

2- showing alerts

3- having onClick action

4- selectable is enabled (for the whole table)

View YAML

  - id: table1
    type: table
    settings:
      name: Test
      data:
        columns:
          - order: 150
            field: ORDERS.CUSTOMER_ID
            id: 149e396e-37ad-4d6b-a877-74fafb14ba88
          - field: ORDERS.SUBCATEGORY
            id: 76c315b2-e140-44f8-ad9c-02146be9bb37
            order: 500
          - order: 200
            field: ORDERS.PRODUCT_NAME
            id: a29df326-1962-420d-b6ac-90c322edad12
          - field: ORDERS.SHIP_MODE
            id: 35f49dc3-eac0-4939-8d74-5f6ddbbe2e3e
            order: 600
          - order: 300
            field: ORDERS.QUANTITY
            id: eddbd1dc-55c3-4986-a96a-86a09ed3055a
          - field: SUM_OF_SALES_EX #Reference a KPI
            id: 3c66dafb-e3ee-4b73-b2e5-526cb52b926f
            order: 700
        limit: 10
        distinct: true #Ensure that this configuration is TRUE
      options:
        allowInvisibleColumns: true #Ensure that this configuration is TRUE
50725161.gif
Horizontal and vertical alignment for input-checkbox, input-box components

We have added the capability to align the input-checkbox and input-box components vertically and horizontally.

View YAML

  - id: input-checkbox-unchecked
    type: input-checkbox
    settings:
      styles: #Align the component horizontally and vertically.
        position:
          horizontal: right
          vertical: bottom
      name: Unchecked
      label: Activate
      isChecked: false

View YAML

  - id: input-box-time
    type: input-box
    settings:
      styles: #Align the component horizontally and vertically.
        position:
          horizontal: center
          vertical: top
      name: "Input Box: Time (${selectedTime})"
      type: time
      value: Time-value
      placeholderText: Enter your Time here...
      onChange:
        update:
          variables:
            - name: selectedTime
Set variable on onClick for table component

Now it's possible to update a variable upon clicking in a table. This allows you for example display the details of a specific line item right underneath the table component, instead of opening it in a separate profile view.

55705770.gif

View

variables:
  - name: demo #Defines demo variable.
    defaultValue: demo text
...
components:
  - id: table1
    type: table
    settings:
      data:
        columns:
          - order: 100
            field: ORDERS.ORDER_ID
            id: 893b4d4a-37e3-400a-af89-13692a9cf2f1
            onClick:
              linkToRecordProfile: true
            showTasks: true
          - order: 150
            field: ORDERS.CATEGORY
            id: 149e396e-37ad-4d6b-a877-74fafb14ba88
            onClick:
              update:
                variables:
                  - name: demo #Sets demo variable when the user clicks on the row. 
  - id: text
    type: task-list
    settings:
      name: ${demo.ORDER_ID} #Displays the ORDER_ID of the variable demo.
Charts updates

Screenshot

Description

50725566.png
Accessibility

We introduced a feature that allows users with visual impairments to start working with Charts.

Now users that had enabled screen readers on their machines will get a description of a Chart and its elements when the Chart is focused via keyboard or mouse click.

Recommended Screen Readers
  • VoiceOver for Mac

  • Window's Narrator

  • Screen Reader extension for Google Chrome

50725594.png
Size encoding

We introduced a third encoding, size, that might be of use for scatter-plots or bubble charts:

type: chart
settings:
  encodings:
    x ...
    y ...
    color ... 
   visuals:
    - mark:
        type: point
        labels: true
        point:
          shape: circle
          width: 10
      encodings:
        size: //<--- Size encoding
          field: FIELD
          range: // <--- Size of the bubbles
            - 0
            - 1
          domain:
            - 100
            - 1

Before / After
50725602.png
image
Styling

We incorporated a few styling changes on charts overall, these include:

  • Font size for better information hierarchy:

    • Reduced font size of axis tick labels and legend labels to 11px.

    • Data labels and axis/legend titles stay at font-size 13px.

  • Axis:

    • Titles:

      • Added vertical or horizontal arrows to axis titles to better indicate which axis they belong to (and to signify that they belong to the axis and not to the legend)

    • Ticks:

      • Made all axis ticks visible to better convey where the label belongs to and where the value is located.

      • If ticks are skipped we reduce the length of them (skipped ticks: 4px long, normal ticks: 6px long; before we had 6px/8px).

    • Labels:

      • Improved label rotation when the overlap is detected.

      • Improved handling of label overflow on-axis edges.

      • Ensure adequate yet minimal spacing between axis titles and closest axis labels.

  • Paddings:

    • Made legend padding minimal. (minimum 4px top padding to axis content above in case a scrollbar is needed at the bottom).

    • Removed axis title paddings (can lead to overlaps as of now, but will be fixed in follow up).

Network Explorer updates
  • Network Explorer configuration upgrade

We are introducing a new configuration for the Network Explorer. Starting from this release nodeKpi and edgeKpi are deprecated attributes. You will need to update your widget configurations to use the new attributes which are now called nodeLabels and edgeLabels respectively. Besides the name change, these two attributes now accept an array of values which can be a KPI or Attribute. For the nodeLabels these attributes will be all listed in the pop-up while for the edges we currently consider only the first one, in the future, we will support showing all the values in the array. We highly suggest updating your configurations to be compatible with the new version because the deprecated configuration will lose support in the not-so-distant future.

Warning

NOTE: nodes is also a required property with the new configuration

components:
  - id: ninja-round-circle
    type: ninja-explorer
    settings:
          ...
      nodes: MSEG.LINK_SOURCE_REGION

Below you can see the two configurations side by side:

Deprecated Configuration

New Configuration

components:
  - id: ninja-round-circle
    type: ninja-explorer
    settings:
      source: MSEG.LINK_SOURCE_REGION
      target: MSEG.LINK_TARGET_REGION
      edgeKpi:
        kpi: EDGEKPI_TPT
        displayContentRule: KPI_DISPLAY_RULE
      nodeKpi:
        kpi: NODEKPI
        displayContentRule: KPI_DISPLAY_RULE_VARIATION
      layout: HIERARCHY
      nodes: MSEG.LINK_SOURCE_REGION
components:
  - id: ninja-round-circle
    type: ninja-explorer
    settings:
      source: MSEG.LINK_SOURCE_REGION
      target: MSEG.LINK_TARGET_REGION
      edgeLabels:
        - field: EDGEKPI_TPT
          displayContentRule: KPI_DISPLAY_RULE
      nodeLabels:
        - field: NODEKPI
          displayContentRule: KPI_DISPLAY_RULE_VARIATION
      layout: HIERARCHY
      nodes: MSEG.LINK_SOURCE_REGION
  • Node popup

Screenshot

Description

50725572.png

We Introduced a node popup that opens after the user clicks on a node. The popup contains the available filter options and a list of attributes that belong to the selected node.

The list of attributes is populated with the configuration passed in the nodeLabels.

  nodeLabels:
    - field: NODE_ATTR_1
      displayContentRule: NODE_DIMENSION_RULE
    - field: NODE_ATTR_2
    - field: NODE_ATTR_3
    - field: NODE_ATTR_4
    - field: NODE_ATTR_5

NOTE: displayContentRule will only be read from the first node of the list, meaning that if it is defined in any other element at `nodeLabels` it won't be applied to the node styles.

  • Popup positioning

Usage

Description

positioning
closeoutside
scrollblock

The node popup will be positioned outside of the network explorer's canvas. Meaning that no matter how zoomed in or zoomed out the network is, the popup will always maintain the same size.

Some of the default behaviors implemented are:

  • Open, popup can be opened by:

    • Clicking on any node.

  • Close, popup can be closed by:

    • Clicking on the X button on the top right of the popup.

    • Clicking outside of the network explorer's canvas.

    • Pressing the ESC key.

    • Clicking on another node will close the current popup and open a new one.

    • Clicking on the same node that opened the popup in the first place.

  • Positioning

    • Popup will be positioned left or right of the recently clicked node, depending on the space (this is automatic).

    • The popup will not go past any of the viewport's boundaries: it won't be hidden at any time.

    • If the popup is open and the explorer underneath is moved, the popup won't move with the explorer.

    • The popup will cover any on-screen element if active.

  • Scroll block:

    • Scrolling can zoom in and out of the explorer by using the CTRL/CMD key + scrolling, if the popup is open, scroll block is disabled and zooming in and out of the explorer can be done by regular scrolling.

Configurable Tooltip Content for Charts

A detail encoding can take one more fields to be shown in the Tooltip in addition to the data that is visually shown in the chart (see View YAML below, line 22).

View YAML

id: ganttChart
type: chart
settings:
  name: Gantt Chart v1
  interactions:
    selection: true
    tooltip: true
  sortBy:
    - field: GANTT_ACTIVITIES.START
  visuals:
    - mark:
        type: rect
        orientation: none
      encodings:
        x:
          field: GANTT_ACTIVITIES.START
          format: "%d.%m.%y"
          title: Time
        x2: GANTT_ACTIVITIES.END
        color: GANTT_ACTIVITIES.ACTIVITY
        y: GANTT_ACTIVITIES.ACTIVITY
        detail:
          - field: GANTT_ACTIVITIES.milestone
          - field: GANTT_ACTIVITIES.START
            title: Custom Start Title
            format: "%d.%m.%y"

Result:

60361552.png
Zoom Behaviour

Screenshot

Description

mel

We introduced an unified zoom behavior for `world-map`, `ninja-explorer` and `process-explorer`. This behavior prevents the user from "miss zooming" into the widgets when they are scrolling down in a page. Now users must press `ctrl` or `command` + zoom in order to scroll.

ninja
worldmap
Charts allow removing footer space reserved for the legend

You can now configure if you want to reserve the legend space below the chart or that space can be filled by the charts themselves. This is managed by a new attribute in the config blockFooterSpace which is set to false by default.

Before

After

Screenshot 2021-05-11 at 10 27 30

The current default behavior. To use the before behavior set blockFooterSpace to true.

Screenshot 2021-05-11 at 10 29 30
Configuration example
id: test
type: chart
settings:
  name: Daily Users
  blockFooterSpace: true # default is false
  encodings:
    x:
      field: USER_STATS__GABI_TEST.TIMESTAMP_Gabi
      format: "%d.%m.%y"
  visuals:
    - mark:
        type: line
        point: true
      encodings:
        y:
          field: NUMBER_OF_USERS
          title: Temperature

UPDATE

Audit Logs for Studio interactions

Introducing Studio spaces

SPA 1.29 release 28.04.22

Pinned selections

You can now set a default filter in Studio Analysis that is applied for all users every time they open the analysis. Selections can be pinned in edit mode using the Pin Selection toggle which appears in both the dropdown and full screen versions of the selection UI. This can be used to limit the scope of the analysis to data relevant to end users, bringing the functionality of the Publish with selections feature from Process Analytics to Studio. For more information, see Pinned Selections.

Pin_Selection_with_text.gif

Bug fixes

  1. The load script information in the documentation generated from CPM4-migrated analyses has been corrected.

  2. Fill components did not render properly if the loading process was interrupted by leaving the browser tab. This no longer happens.

  3. In some cases, the automatic vertical axis range for a chart with stacked KPIs would be too small, resulting in truncated data. The range is now calculated correctly.

  4. A minor visual bug in charts with horizontal scrolling was fixed.

  5. Searching an OLAP column of strings for \ (blackslash) or ' (single quote) produced an error in the OLAP that would persist until the page was refreshed. The search function now works as intended for these characters.

.

Added additional href linking option for table component

As of now, it was only possible to link a table with a profile view. Now it's also possible to link to any other page and make use of the attributes within the URL.

55705702.gif

Knowledge Model

      - id: HREF_USERNAME
        displayName: Href Username
        pql: '''https://www.google.com/?q='' || "PizzaP2P-fixed_xlsx_Sheet_0"."USER_NAME"' #create a new attribute which defines the URL structure. In this example it will create a search query to Google to search by the user name e.g. https://www.google.com?q=Lukas
        filterIds: []
        columnType: string

View

- id: table
    type: table
    settings:
      data:
        columns:
          - field: ACTIVITY.CASEKEY
                        order: 100
            id: baffa132-b23a-4470-b2b6-36b069e6f893
            onClick:
              hrefAttribute: ACTIVITY.HREF_USERNAME #Reference the attribute defined in the Knowledge Model
              openInNewTab: true #Define if the URL should be opened in a new tab or not. Default: false
Improved layout for dropdown, search, quick-filter, and time filter component
  1. Dropdown, search, quick-filter, and time filter take full width by default.

  2. If a style is applied (horizontal alignment) then the component won't take full width of the cell anymore.

  3. By default the components are bottom aligned (including KPI list, time filter, and image).

41196666.png

4. If the text inside the quick filter component is too long we will automatically shorten it by "...". Upon hover the full text is still visible:

41196664.png
Execution gap component

Added `forwardFilterToProfileView` to configuration:

  • id: Execution Gap List

    type: execution-gap-list

    settings:

    ...

    forwardFilterToProfileView: true # Defines wether to forward the blocker as a filter to associated profile views or not. Defaults to false.

    columns:

    ...

Changed how to send KPI parameters for kpi-list, button-list, text-box, and iframe component

KPI parameters used to then be passed as the following

Important

This is a breaking change for which we can't write a migration. Therefore it would be important that you update your views respectively.

Current logic

      - show: true
        kpi: SUM_OF_PARAMETER
        id: bd7e5555-3a36-488a-9849-0f03c6ab17aa
        order: 100
        parameters: 
            - "string value"
            - 123

New logic

      - show: true
        kpi: SUM_OF_PARAMETER
        id: bd7e5555-3a36-488a-9849-0f03c6ab17aa
        order: 100
        kpiParams: # parameters is getting renamed into kpiParams
            - id: columnName # This ID must match KPI parameter ID defined in KM
              value: "string value"

Knowledge Model

  - id: SUM_OF_PARAMETER
    displayName: Sum Of Selected Column
    customAttributes:
      active: true
    pql: SUM("Sample-sales-data-excel_xlsx_Orders"."{p1}")
    filterIds: []
    format: ',.2f'
    breakdowns: []
    aggregations: []
    parameters:
      - id: columnName #Needs to be referenced in the View YAML
        displayName: name of a column to calculate the sum
        defaultValue: SALES
    targets: []
    type: KPI
Renamed Inputs to Variables

With growing capabilities of the EMS Studio we expanded the functionality of "inputs" on views. Also as preparation for upcoming additional improvements, we will rename inputs to variables.

We will do a migration for you, so you do not have to change your exiting views.

This does not only effect the input definition on root level, but also when defined within components.

Examples:
41195974.png
41195975.png
41195976.png
41195977.png
Streamlined how we reference Knowledge Model objects from components

We are streamlining the pattern on how we reference Knowledge Model objects from components. This will make it easier to quickly set up new component.

In the example below you will see the changes more clear:

  1. We make it more explicit, which KM objects can be referenced (e.g. attribute or kpi). The YAML structure will be automatically updated with the release.

  2. When referencing attribute we now enforce to reference them by <record>.<attribute> and not only <attribute> anymore. The updated pattern is needed to be manually updated by the board owner, since there might be attributes with the same name belonging to different records.

Important

We will grant a grace period of one month until when you need update update your board yaml from <attribute> to <record>.<attribute>. In the meantime we will support both <attribute> and <record>.<attribute>

41195912.png

Attribute

Current configuration

   - id: basic-attribute
     type: attribute-list
     settings:
       data:
        - id: ACTIVITY.ACTIVITIES #It's not clear what Knowledge Model object can be referenced. Furthermore ID is not necessarily unique within the application
                  order: 100
        - id: ACTIVITY.EVENTTIME
                  order: 200

New configuration

   - id: basic-attribute
     type: attribute-list
     settings:
       data:
        - field: ACTIVITY.ACTIVITIES #Now we clearly state, which object is getting referenced. In this example field defines that it can be different data types like a KPI or attribute. 
                  id: 100 #Column need to have a unique ID to support base/extension logic
                  order: 100
        - field: ACTIVITY.EVENTTIME
                  id: 200
                  order: 200

Dropdown

Current configuration

  - id: dropdown1
    type: dropdown
    settings:
      data:
        columns:
          - id: ID #It's not clear what Knowledge Model object can be referenced. Furthermore ID is not necessarily unique within the application
            order: 100

New configuration

  - id: dropdown1
    type: dropdown-list #Streamlined the type to indicate that an entire list can be provided
    settings:
      data:
        columns:
          - attribute: ACTIVITY.ID #Now we clearly state, which object is getting referenced. In this example an attribute. Furthermore the attribute is now getting referenced by <record>.<attribute>
            id: auto_generated #Column need to have a unique ID to support base/extension logic
            order: 100

Search

Current configuration

  - id: basic-search
    type: global-search
    settings:
      search:
        - USERNAME #It's not clear what Knowledge Model object can be referenced. Furthermore ID is not necessarily unique within the application

New configuration

  - id: basic-search
    type: global-search
    settings:
      search:
        - attribute: ACTIVITY.USERNAME #Now we clearly state, which object is getting referenced. In this example an attribute. Furthermore the attribute is now getting referenced by <record>.<attribute>

Quick filters

Current configuration

- id: quick-filters
  type: quick-filters
  settings:
      single: true 
      filters: 
          - JAN16
          - APR16
      attributeFilters: 
          - attribute: USERNAME
            type: string
            values:
                - name: Zoe
                  value: Zoe
                - name: Fabian
                  value: Fabian

New configuration

 - id: quick-filters
  type: quick-filters
  settings:
      single: true 
      filters: 
          - filter: JAN16 #Now we clearly state, which object is getting referenced. In this example a filter object.
          - filter: APR16
      attributeFilters: 
          - attribute: USERNAME #Also RECORD.ATTRIBUTE is possible.
            type: string
            values:
                - name: Zoe
                  value: Zoe
                - name: Fabian
                  value: Fabian

Time filter

Current configuration

  - id: time-filter
    type: time-filter
    settings:
      data:
        dateColumn: EVENTTIME

New configuration

  - id: time-filter
    type: time-filter
    settings:
      dateAttribute: ACTIVITY.EVENTTIME #Now we clearly state that an attribute with the type date needs to be referenced.

Table

Current configuration

  - id: table
    type: table
    settings:
      data:
        columns:
          - order: 100
            field: ACTIVITY.ID
            id: fa7b2fe1-d397-4b17-91f8-52d3432aeb35
            link:true

New configuration

  - id: table
    type: table
    settings:
      data:
        columns:
          - order: 100
            field: ACTIVITY.ID
            id: fa7b2fe1-d397-4b17-91f8-52d3432aeb35
            onClick: 
              linkToRecordProfile: true #Defines if a link to the record profile should be added
              showInModal: true #Defines if a modal gets opened or a slide in will appear
          - order: 200
            hide: false
            field: ACTIVITY.CASEKEY
            id: c2c9a34a-1766-4b26-b3c4-83f395488ac0

Activity History

Current configuration

    - id: Activity
      type: activity-history
      settings:
          recordMetadataId: ACTIVITY
          usernameColumn: USERNAME
          activityColumn: ACTIVITY_NAME

New configuration

    - id: Activity
      type: activity-history
      settings:
          recordMetadataId: ACTIVITY
          usernameAttribute: ACTIVITY.USERNAME #Renamed attribute and referencing is done by using record.attribute
          activityAttribute: ACTIVITY.ACTIVITY_NAME #Renamed attribute and referencing is done by using record.attribute

KPI Bowler

Current configuration

- id: kpi-bowler
    type: kpi-bowler
    settings:
      data:
        mainDimension: TASK_COUNT_GEN
        pivotDimension: EVENTTIME
        firstKpi: AVERAGE_NETWR_CONVERTED
        secondaryKpis:
          - AVERAGE_NETWR_CONVERTED
          - COUNT_TABLE__PIZZAP2P_XLSX_SHEET_0

New configuration

- id: kpi-bowler
    type: kpi-bowler
    settings:
      data:
        mainAttribute: ACTIVITY.TASK_COUNT_GEN #Attribute name indicates to reference attribute and attribute get referenced by record.attribute
        pivotAttribute: ACTIVITY.EVENTTIME #Attribute name indicates to reference attribute and attribute get referenced by record.attribute
        firstKpi: AVERAGE_NETWR_CONVERTED
        secondaryKpis:
          - AVERAGE_NETWR_CONVERTED
          - COUNT_TABLE__PIZZAP2P_XLSX_SHEET_0

Recommendation list

Current configuration

- id: List
  type: list
  settings:
    data:
      kpis:
        - TOTAL_NUMBER_OF_INVOICES
        - TOTAL_REVENUE
      process: AP

New configuration

- id: List
  type: list
  settings:
    data:
      kpis:
        - kpi: TOTAL_NUMBER_OF_INVOICES # Clearly defined that a KPI needs to be referenced
          id: 100 #Added uniqe identifier
          scope: visible
        - kpi: TOTAL_REVENUE
          id: 200 #Added uniqe identifier
      process: AP

Time filter

Current configuration

- id: time-filter
    type: time-filter
    settings:
      data:
        dateColumn: EVENTTIME         

New configuration

- id: time-filter
    type: time-filter
    settings:
      data:
        dateAttribute: ACTIVITY.EVENTTIME #Attribute name indicates to reference attribute and attribute get referenced by record.attribute
Reminder for changed definitions in the view
  • KPI list:

    • type does not have to be defined anymore (settings.data.type: default)

    • you now have more abilities to style by adding "options"

      41196027.png
  • Table

    • Allowsearch is not an option anymore

Version Control on Knowledge Model Level

Every time you save your Knowledge Model, Studio stores it as a new version which you can browse and bring back at any time. Compared to the version control on package level, can also browse through the saved versions which are all part of the same unpublished package.

Note

Unpublished (they were never part of a published package) versions that are older than your last 2 published packages will be automatically deleted.

Version Control will soon be available for all assets inside Studio. Read more about Version Control in Studio.

You can access the Version History from the View or Edit mode of the Knowledge Model

41195593.png

In there, you can browse past versions and bring them back if needed.

41195594.png
Faster PQL Validations inside the Knowledge Model

We have improved the speed at which we can run the PQL validations inside the Knowledge Model. With this change, when PQL errors come up in the error panel, you are now also able to jump directly to the line with the PQL error by clicking on the error.

Delete Installed App/Instrument Content (analyses, views...)

You can now delete content that is part of an installed Package (App/Instrument) and we'll bring it back in case the next Package Update contains changes on that deleted content.

Overwrite Packages (Apps/Instruments) across your Team(s)

With the 'Copy To' functionality available for Packages you can now also choose to overwrite existing packages. This works between packages in the same team, but also across teams. The functionality is also available in the content-cli version 0.0.44 in the Machine Learning Workbench.

Open only the asset, without navigation

If you want to open the asset without any navigational elements around you can use https://team.realm.celonis.cloud/package-manager/ui/views/ui/full-screen/assets/{Asset-ID}

This will open the asset in "Business View Mode" so without the ability to edit. Authentication is still required.

Open tabs preserved

The current active state of tabs is now preserved for you. e.g. when you refresh the page or when components like the KPI Bowler refresh to apply changes like the current KPI Target.

Align components vertically and horizontally

To optimize the layout of your view you can now align your dropdown list, quick-filter, time-filter, and image components. To do this you can make use of the following new properties:

Example

  - id: dropdown
    type: dropdown
    settings:
      floatingPlaceholder: true
      styles:
        position:
          horizontal: left #left/center/right Defines the horizontal orientation of the component. Default value: left
          vertical: top #top/center/bottom Defines the vertical orientation of the component. Default value: top
      data:
        columns:
          - id: CATEGORY
            order: 100
Process Explorer - use any Event Log column from the Knowledge Model

The Process Explorer component in Views in the Studio accepts now any column from the Knowledge Model that represents an Eventlog.

With this change, you can now have two Process Explorers showing data from two different columns in the same activity table:

41195601.png

Multiple performance improvements will make your experience in Studio a lot smoother and faster!

The dropdown-filter component was deprecated quite a while ago. Please use the dropdown component instead.

When making use of attributes in placeholders you now need to reference them by using record.attribute and not attribute anymore.

41194838.png

Before it was able to reference attributes like the following:

Old configuration

  - id: table1
    type: table
    settings:
      name: my table
      data:
        limit: 20
        columns:
          - id: ORDERS.STATE
            order: 600
          - id: ORDERS_TASK_COUNT_GEN #It was possible to reference the object with an "_"
            order: 700

Now we have streamlined how we reference attributes like the following:

Old configuration

  - id: table1
    type: table
    settings:
      name: my table
      data:
        limit: 20
        columns:
          - id: ORDERS.STATE
            order: 600
          - id: ORDERS.TASK_COUNT_GEN #Now this attributes syntax has changed to ".". "_" are no longer supported
            order: 700

Important

There is a grace period of two weeks, where we will support both formats. After two weeks we will only support the standardized format with a dot ".". Example: ORDERS.TASK_COUNT_GEN

We introduced new error states for situations when something went wrong in your view components. For example, You miss entering the required fields? The view component will let you know and allow you to quickly access the YAML editor. The Data Model is not loaded? The view component will inform you and give you the option to reload the Data Model.

The change will be available for most components with this first release, most charts (World map, Sankey, Treemap, Waterfall, Process Explorer, Network Explorer), dropdown, kpi list, global search, quick filter, anomaly list...

41194627.png
41194628.png

You can now access the information stored in the knowledge model for the table, anomaly, and kpi list component. This can help the board creator to simplify the board creation.

Let's say we have a View consisting of the three component: table, anomaly, and kpi list:

41195110.png

View

metadata:
  key: anomaly
  template: false
  name: Anomaly
  knowledgeModelKey: new-sales-data
variables:
  - name: kpiId
    defaultValue: KPI_AVERAGE_PROCESS_TIME
layout:
  rows:
    - id: row1
      columns:
        - id: column_e78735d4-a6de-4826-842a-c8f91ffa06ff
          componentId: kpi1
          size: "1"
          order: 1
        - id: column_d1118984-0ab0-4a7f-a924-e02c080fecbf
          componentId: anomaly1
          size: "1"
          order: 2
        - id: column_e739fee0-7faa-4187-92f9-a65c7c6e4046
          componentId: table1
          size: "1"
          order: 100
      order: 100
components:
  - id: kpi1
    type: kpi-list
    settings:
      options:
        size: sm
        showSettings: true
        showBenchmark: true
        showTarget: true
        showPriority: true
        scroll: false
        responsive: false
      data:
        kpis:
          - show: true
            id: a1812c90-2656-456c-a5a1-5a0218a1e61b
            kpi: KPI_AVERAGE_PROCESS_TIME
            order: 100
          - show: true
            kpi: SUM_OF_SALES_EX
            id: a2463161-e7c5-4ab4-947f-c4bf3d8616f3
            order: 200
        onClick:
          update:
            variables:
              id: kpiId
  - id: anomaly1
    type: anomaly-list
    settings:
      kpi: ${kpiId}
      name: Systemic Blockers
  - id: table1
    type: table
    settings:
      data:
        columns:
          - id: ORDERS.ORDER_ID
            link: true
            order: 100
          - id: ORDERS.PROCESS_TIME
            order: 150
          - id: ORDERS.PRODUCT_NAME
            order: 200
          - id: ORDERS.QUANTITY
            order: 300
          - id: ORDERS.OORDER_DATE
            order: 400
        limit: 10
      options:
        stickyHeader: true
        showPagination: true

KPI

Now let's modify the View to make use of the meta information for the KPI List.

41195128.png

Knowledge Model snipped

metadata:
  key: anomaly
  template: false
  name: Anomaly
  knowledgeModelKey: new-sales-data
variables:
  - name: kpiId
    defaultValue: KPI_AVERAGE_PROCESS_TIME
  - name: kpiMeta #Defines the input parameter of name kpiMeta. The object itself is defined in line 56. We recommend to define a default value for the object, so that no NULL values are shown up-on page load.
layout:
  rows:
    - id: row1
      columns:
        - id: column_e78735d4-a6de-4826-842a-c8f91ffa06ff
          componentId: kpi1
          size: "1"
          order: 1
        - id: column_d1118984-0ab0-4a7f-a924-e02c080fecbf
          componentId: anomaly1
          size: "1"
          order: 2
        - id: column_e739fee0-7faa-4187-92f9-a65c7c6e4046
          componentId: table1
          size: "1"
          order: 100
        - id: column_e739fee0-7faa-4187-92f9-a65c7c6e4045 #Added an additional component to display all information of the KPI object
          componentId: text1
          size: "1"
          order: 200
      order: 100
components:
  - id: kpi1
    type: kpi-list
    settings:
      options:
        size: sm
        showSettings: true
        showBenchmark: true
        showTarget: true
        showPriority: true
        scroll: false
        responsive: false
      data:
        kpis:
          - show: true
            id: a1812c90-2656-456c-a5a1-5a0218a1e61b
            kpi: KPI_AVERAGE_PROCESS_TIME
            order: 100
          - show: true
            kpi: SUM_OF_SALES_EX
            id: a2463161-e7c5-4ab4-947f-c4bf3d8616f3
            order: 200
        onClick:
          update:
            variables:
              metadata: kpiMeta #Defines the KPI object with the name kpiMeta
  - id: anomaly1
    type: anomaly-list
    settings:
      kpi: ${kpiMeta.id} #Referencing the KPI ID
      name: Systemic Blockers
  - id: table1
    type: table
    settings:
      data:
        columns:
          - id: ORDERS.ORDER_ID
            link: true
            order: 100
          - id: ORDERS.PROCESS_TIME
            order: 150
          - id: ORDERS.PRODUCT_NAME
            order: 200
          - id: ORDERS.QUANTITY
            order: 300
          - id: ORDERS.OORDER_DATE
            order: 400
        limit: 10
      options:
        stickyHeader: true
        showPagination: true
  - id: text1
    type: text-box
    settings:
      title: Listing meta data from the knowledge model
      content: <strong>id:</strong> ${kpiMeta.id} <br/><br/> <strong>name:</strong> #Defined in the knowledge model below in row 2
        ${kpiMeta.displayName} <br/><br/> <strong>pql:</strong> ${kpiMeta.pql} #Defined in the knowledge model below in row 3 and 6
        <br/><br/> <strong>unit:</strong> ${kpiMeta.unit} <br/><br/> #Defined in the knowledge model below in row 8
        <strong>format:</strong> ${kpiMeta.format} <br/><br/> #Defined in the knowledge model below in row 9
        <strong>desiredDirection:</strong> ${kpiMeta.desiredDirection} #Defined in the knowledge model below in row 15
        <br/><br/>

Knowledge Model snipped

kpis:
  - id: KPI_AVERAGE_PROCESS_TIME
    displayName: Average Order Proccess Date (days)
    customAttributes:
      absoluteCalculation: true
    pql: AVG(DAYS_BETWEEN("Sample-sales-data-excel_xlsx_Orders"."ORDER
      DATE","Sample-sales-data-excel_xlsx_Orders"."SHIP DATE"))
    filterIds: []
    unit: Days
    format: ',.2f'
    breakdowns: []
    aggregations: []
    parameters: []
    targets: []
    desiredDirection: INCREASE
    type: KPI

Anomaly

Next let's create a Profile View for the Anomaly component. Here you can find a screenshot on how the provided example will looks like:

Profile View

metadata:
  key: anomaly-detail
  template: false
  name: Anomaly Detail
  knowledgeModelKey: new-sales-data
  knowledgeObjectId: ORDERS_ANOMALY
  profileView: true
variables:
  - name: anomaly #Defines the anomaly object to access its meta data from the knowledge model
# Default input parameters, which can be used for an anomaly component
  - name: blockerId
  - name: blockerName
  - name: blockerValue
  - name: flagId
  - name: flagName
  - name: kpiId
includedTools:
  - default-action
layout:
  rows:
    - id: row1
      columns:
        - id: row1-col4
          componentId: text2
          size: 1/2
          order: 400
      order: 100
components:
  - id: activity1
    type: activity-history
    settings:
      objectId: ${id}
      recordMetadataId: ORDERS
      name: Activity History
  - id: text2 #Listing meta data from the knowledge model
    type: text-box
    settings:
      title: Listing meta data from the knowledge model
      content: "<strong>id:</strong> ${anomaly.id} <br/><br/> #Defined in the knowledge model below in row 2 and 15
        <strong>displayName:</strong> ${anomaly.displayName} <br/><br/> #Defined in the knowledge model below in row 3 and 16
        <strong>Description:</strong> ${anomaly.description} <br/><br/> #Defined in the knowledge model below in row 4 and 17
        <strong>Flag:</strong> ${anomaly.flag} <br/><br/> #Defined in the knowledge model below in row 9 and 21
        <strong>prop1:</strong> ${anomaly.customAttributes.prop1} <br/><br/> #Defined in the knowledge model below in row 6 and 19
        <strong>prop2: </strong> ${anomaly.customAttributes.prop2}<br/><br/> #Defined in the knowledge model below in row 7 and 20
        <strong>prop3: </strong> ${anomaly.customAttributes.prop3}" #Defined in the knowledge model below in row 8. In the screenshot above we look at the second anomaly which doesn't have this object defined and therefore returns null.
  - id: text3 #Listing default input parameters
    type: text-box
    settings:
      title: Listing default input parameters
      content: " <strong>blockerId:</strong> ${blockerId} <br/><br/>
        <strong>blockerName:</strong> ${blockerName} <br/><br/>
        <strong>blockerValue:</strong> ${blockerValue} <br/><br/>
        <strong>flagId:</strong> ${flagId} <br/><br/> <strong>flagName:</strong>
        ${flagName} <br/><br/> <strong>kpiId:</strong> ${kpiId}"


Knowledge Model

anomalies:
  - id: ANOMALY_LATE_PROCESSED_ORDERS
    displayName: Orders processed later than 5 days
    description: This Anomaly displays Orders processed later than 5 days
    customAttributes:
      prop1: anomaly1_value1
      prop2: anomaly1_value2
      prop3: test_test
    flag: FLAG_LATE_PROCESSED_ORDERS
    kpiIds:
      - KPI_AVERAGE_PROCESS_TIME
      - SUM_OF_SALES_EX
    knowledgeObjectId: ORDERS_ANOMALY
    type: ANOMALY
  - id: ANOMALY_HIGH_PROFIT_ORDERS
    displayName: Orders with a profit higher than 100 dollars
    description: This Anomaly displays Orders with a profit higher than 100 dollars
    customAttributes:
      prop1: anomaly2_value1
      prop2: anomaly2_value2
    flag: FLAG_HIGH_PROFIT_ORDERS
    kpiIds:
      - KPI_AVERAGE_PROCESS_TIME
      - SUM_OF_SALES_EX
    knowledgeObjectId: ORDERS_ANOMALY
    type: ANOMALY

Table

Next let's create a Profile View for the table component. Here you can find a screenshot on how the provided example will looks like:

Orders Profile View

metadata:
  key: order-details
  template: false
  name: Order Details
  knowledgeModelKey: new-sales-data
  knowledgeObjectId: ORDERS
  profileView: true
variables:
  - name: record #Defines the table object to access its meta data from the knowledge model
  - name: id # Default input parameters, which can be used for a table component
layout:
  rows:
    - id: row1
      columns:
        - id: row1-col1
          componentId: activity1
          size: "1"
          order: 200
        - id: row1-col2
          componentId: text1
          size: 1/2
          order: 300
      order: 100
components:
  - id: activity1
    type: activity-history
    settings:
      objectId: ${id}
      recordMetadataId: ORDERS
      name: Activity History
  - id: text1 #Listing meta data from the knowledge model. As of this is only limited to the object used in the table. Other attributes can not be displayed.
    type: text-box
    settings:
      title: Listing meta data from the knowledge model
      content: ${record.PRODUCT_NAME}<br/><strong>Process Time:</strong>
        ${record.PROCESS_TIME}<br/><strong>Order ID:</strong>
        ${record.ORDER_ID}<br/><strong>Quantity:</strong>
        ${record.QUANTITY}<br/>
  - id: text2 #Listing default input parameters
    type: text-box
    settings:
      title: Listing default input parameters
      content: <strong>id:</strong> ${id} <br/> <strong>Product Name:</strong>

View - Table configuration

  - id: table1
    type: table
    settings:
      data:
        columns:
          - id: ORDERS.ORDER_ID
            link: true
            order: 100
          - id: ORDERS.PROCESS_TIME
            order: 150
          - id: ORDERS.PRODUCT_NAME
            order: 200
          - id: ORDERS.QUANTITY
            order: 300
          - id: ORDERS.OORDER_DATE
            order: 400

We used to create a new filter chip from each component which has generated the filter. This made it difficult to keep track which filters are applied for a particular attribute furthermore it wasn't possible to modify a filter, which were applied by a different component. Now the filter chips are getting combined.

41194849.gif

From within the Smart Sensor configuration users can add filters either by creating a new filter via a PQL editor or by selecting them out of a list of existing filters.

A preview also indicates the amount of matching Signals already during the configuration. (See Celonis Smart Sensor for more details)

41195105.png

The metadata setting "order" and "icon" are not having any function since a year and will now not be allowed as a setting in the metadata anymore. You can simply remove them.

After the first filter was applied to a table column users weren't able to further narrow down their filters. Now users can apply multiple filters on the same column.

41194844.gif
  • Extension support! Validation is now also supported within Extended Views

  • Auto-Suggestion for:

    • Included Tools

    • scope (implemented for most cases)

    • Skill keys (for skills from the same package)

    • knowledgeObjectId (for Profile Views)

  • During Validation the save button indicates now that the validation is still ongoing

  • List items excluded using "scope: hidden" are not validated (and can be wrongly configured if chosen so)

 

Users can now resize the Profile View in order to see all relevant information at one spot. As of now the size of the Profile View is not persisted but might be added further down the road.

41194505.gif

The new Search functionality allows you to search for any view, analysis, knowledge model, skill, even package, to find what you are looking for faster.

41194527.png

Time charts that have a temporal data series as x-axis are now by default sorted in chronological order.

We have introduced a new configuration option, which will allow you to control the text wrapping in tables. This attribute can be used when your table is set to "scrollHorizontally: false"

New attribute:

  • preventLineBreak: true | false Defines if the text should be displayed in one row (true) or displayed in multiple rows (false). preventLineBreak can be used if your table is set to scrollHorizontally: false. Optionally Default value: true

View YAML

  - id: table1
    type: table
    settings:
      name: my table
      data:
        limit: 20
        columns:
          - id: ORDERS.ROW_ID
            showTasks: true
            order: 100
            link: true
          - id: ORDERS.ORDER_ID
            order: 200
            link: false
          - id: ORDERS.SALES
            order: 300
          - id: ORDERS.PRODUCT_NAME
            order: 400
          - id: ORDERS.CUSTOMER_NAME
            order: 500
          - id: ORDERS.STATE
            order: 600
      options:
        scrollHorizontally: false #preventLineBreak can be used if your table is set to scrollHorizontally: false
        preventLineBreak: true #false Defines if the text should be displayed in one row (true) or displayed in multiple rows (false). Default value: true

preventLineBreak: true

50725450.png

preventLineBreak: false

50725449.png

We introduced a new dynamic legend that users can use for a variety of data series types like sequential color schemes with custom thresholds or categorical data:

41194472.svg
41194471.svg
41194470.svg
41194474.svg

Consistent with our new branding, we introduced a new color palette. Check out the available colors in charts.

The colors follow the highest scientific standards to ensure they are effective and readable for everyone.

They improve the overall user experience and make identifying and resolving execution gaps easier.

41194435.svg
41194436.svg
41194495.svg
41194437.svg
41194423.svg

You will notice that the default doesn't contain green, red and, yellow. And that’s on purpose! In the next releases you can expect us to simplify how to combine those semantically important colors with your key targets. Stay tuned!

The Sankey Diagram and Treemap components now have a reduced default layout. The dropdowns for the KPI selections are now hidden by default. They can be enabled in the settings.

41194457.svg
41194458.svg
  - id: SankeyDiagram
    type: sankey
    settings:
      showConfig: false

Changes on Profile Views are propagated immediately

If something is changed in a profile view during use (e.g. changing the status of a task) it is immediately propagated to the underlying action view.

41194196.gif
Refactored KPI list settings and made configuration more flexible

We removed the attribute "type" which was used to define if the KPI list is of type default (non-interactive) or tile (interactive). Interactive KPIs always required an onClick therefore it will not change how existing KPI list work. Still we recommend to remove the type attribute from your KPI lists.

41193935.png

Example of an old configuration

 - id: basic-kpi-list-non-interactive
    type: kpi-list
    settings:
      name: Basic KPI List + not interactive
      data:
        type: default #Not interactive
        kpis:
          - kpi: COUNT_TABLE__ACTION_HISTORY
            show: true
            id: ""
            order: 100
          - kpi: COUNT_TABLE__ACTION_TYPE
            show: true
            id: ""
            order: 200
  - id: basic-kpi-list-interactive
    type: kpi-list
    settings:
      name: Basic KPI List + interactive        
      data:
        type: tile #Interactive
        kpis:
          - kpi: TOTAL_NUMBER_OF_INVOICES_2
            show: true
            id: ""
            order: 1
          - kpi: COUNT_TABLE__ACTION_HISTORY
            show: true
            id: ""
            order: 102
          - kpi: COUNT_TABLE__ACTION_TYPE
            show: true
            id: ""
            order: 200
        onClick: #Always required to make KPI list really interactive
          update:
            inputs:
              id: kpiID
              name: kpiName

New configuration

  - id: basic-kpi-list-non-interactive
    type: kpi-list
    settings: 
      name: Basic KPI List + not interactive
      data: #No longer requires the attribute "type: default/tile"
        kpis:
          - kpi: COUNT_TABLE__ACTION_HISTORY
            show: true
            id: ""
            order: 100
          - kpi: COUNT_TABLE__ACTION_TYPE
            show: true
            id: ""
            order: 200
  - id: basic-kpi-list-interactive
    type: kpi-list
    settings: 
      name: Basic KPI List + interactive
      data: #No longer requires the attribute "type: default/tile"
        kpis:
          - kpi: TOTAL_NUMBER_OF_INVOICES_2
            show: true
            id: ""
            order: 1
          - kpi: COUNT_TABLE__ACTION_HISTORY
            show: true
            id: ""
            order: 102
          - kpi: COUNT_TABLE__ACTION_TYPE
            show: true
            id: ""
            order: 200
        onClick: #Required to make KPI list interactive
          update:
            inputs:
              id: kpiID
              name: kpiName

Furthermore we now provide more flexibility on configuring the required KPI list layout. Following options were added:

  • size: sm | lg: Defines the font size for the KPI. Default value for non-interactive KPI: small and for interactive KPI: large

  • showSettings: false | true Defines if a Setting option will be displayed. Default value: false

  • showBenchmark: true | false Defines if benchmark information is displayed. Default value: true (it will only displayed if data is available)

  • showTarget: true | false Defines if target information is displayed. Default value: true (it will only displayed if data is available)

  • showPriority: true | false Defines if priority information is displayed. Default value: true (it will only displayed if data is available)

41193937.png

Control font size

  - id: basic-kpi-list-non-interactive
    type: kpi-list
    settings:
      name: Basic KPI List + not interactive
      data:
        kpis:
          - kpi: COUNT_TABLE__ACTION_HISTORY
            show: true
            id: ""
            order: 100
          - kpi: COUNT_TABLE__ACTION_TYPE
            show: true
            id: ""
            order: 200
      options:
        size: lg #Defines the font size of the displayed KPI. Non-interactive KPIs are by default small, while interactive KPIs are by default large
                showSettings: false | true Defines if a Setting option will be displayed. Default value: false
                showBenchmark: true | false Defines if benchmark information is displayed. Default value: true (it will only displayed if data is available)
                showTarget: true | false Defines if target information is displayed. Default value: true (it will only displayed if data is available)
                showPriority: true | false Defines if priority information is displayed. Default value: true (it will only displayed if data is available)
  - id: basic-kpi-list-interactive
    type: kpi-list
    settings:
      name: Basic KPI List + interactive
      data:
        type: tile
        kpis:
          - kpi: TOTAL_NUMBER_OF_INVOICES_2
            show: true
            id: ""
            order: 1
          - kpi: COUNT_TABLE__ACTION_HISTORY
            show: true
            id: ""
            order: 102
          - kpi: COUNT_TABLE__ACTION_TYPE
            show: true
            id: ""
            order: 200
        onClick:
          update:
            inputs:
              id: kpiID
              name: kpiName
      options:
        size: sm #Defines the font size of the displayed KPI. Non-interactive KPIs are by default small, while interactive KPIs are by default large
                showSettings: false | true Defines if a Setting option will be displayed. Default value: false
                showBenchmark: true | false Defines if benchmark information is displayed. Default value: true (it will only displayed if data is available)
                showTarget: true | false Defines if target information is displayed. Default value: true (it will only displayed if data is available)
                showPriority: true | false Defines if priority information is displayed. Default value: true (it will only displayed if data is available)
Make use of KPIs and Attributes values in the Text component or URLs

Generate dynamic text or URLs by making use of placeholders. You can define the placeholders at a central place and reference the objects within the component.

Example: "{0}" will reference the first placeholder object. In the example below this will be the "KPI: NUMBER_OF_SOLD_PRODUCTS_EX". "{1}" will reference the second object and so on.

41193909.png

You can make use of placeholders for the following components:

Text

Text example

  - id: textbox1
    type: text-box
    settings:
      content: |-
        <dl>
          <dt class='bold'>NUMBER OF SOLD PRODUCTS</dt>
          <dd>{0}</dd> #References the first placeholder kpi: NUMBER_OF_SOLD_PRODUCTS_EX

          <dt class='bold'>SUM OF SALES</dt>
          <dd>{1}</dd> #References the second placeholder kpi: SUM_OF_SALES_EX

          <dt class='bold'>PRODUCT NAME</dt>
          <dd>{2}</dd> #References the third placeholder attribute: PRODUCT_NAME

          <dt class='bold'>Price</dt>
          <dd>{3}</dd> #References the forth placeholder attribute: SALES
        </dl>
      placeholders: #Defines the required placeholders
        - kpi: NUMBER_OF_SOLD_PRODUCTS_EX
        - kpi: SUM_OF_SALES_EX
        - attribute: PRODUCT_NAME
        - attribute: SALES

Button

Button example

  - id: buttons1
    type: button-list
    settings:
      buttons:
        - label: Signle KPI test
          onClick:
            href: http://www.sap.com?sumofsales={0} #References the first placeholder kpi: SUM_OF_SALES_EX
            placeholders: #Defines the required placeholders
              - kpi: SUM_OF_SALES_EX
          id: 35cd1ac6-6f01-4646-896c-4b2bbeb25a71
          order: 100
        - label: Multiple KPIs test
          onClick:
            href: http://www.sap.com?sumofsales={0}&numberofsoldproducts={1} #References the first and second placeholder
            placeholders: #Defines the required placeholders
              - kpi: SUM_OF_SALES_EX
              - kpi: NUMBER_OF_SOLD_PRODUCTS_EX
          id: 35cd1ac6-6f01-4646-896c-4b2bbeb25a72
          order: 200

iFrame

iFrame example

  - id: iframe1
    type: iframe
    settings:
      name: Multiple KPIs and Attributes test
      src: http://www.celonis.com?sumofsales={0}&numberofsoldproducts={1}&productname={2}&sales={3} #References the first, second, and third  placeholder
      placeholders: #Defines the required placeholders
        - kpi: SUM_OF_SALES_EX
        - kpi: NUMBER_OF_SOLD_PRODUCTS_EX
        - attribute: PRODUCT_NAME
        - attribute: SALES
      height: 600px
      width: 100%
Move Studio Content across Teams and Packages

You can now move Apps/Instruments or individual Views, Analyses, Knowledge Models and Skills across teams. Furthermore, Views, Analyses, Knowledge Models and Skills can be moved across Apps/Instruments within your team with the drag and drop interaction.

41194165.png
The editing lock is acquired automatically when returning

Whether you are editing a View, Knowledge Model, Skill or Analysis in Studio, you lock the asset in order for others to not overwrite your changes. The lock automatically expires after 5 minutes of inactivity, and if you return within this time period, your lock is automatically acquired back and restated.

Update installed Apps/Instruments to the latest Marketplace versions

The Dependency section informs you about updates on your installed Apps/Instruments and allows you to directly update to the latest version.

41194168.gif
New Action to Duplicate Apps/Instruments

You can now duplicate your Apps/Instrument. When duplicating, only the latest current version will be duplicated, the app/instrument history will not be available in the new App/Instrument.

41194189.png
The app/instrument version is increased automatically

We automatically suggest the next version number when you publish your App/Instrument. The suggestion can be manually overwritten.

41194170.gif
Preview the Data Model directly from Studio

Use the Data Model icon inside the Knowledge Model to preview the Data Model used.

41194172.gif

When the user applied a filter on a table and performed an action on precisely the filtered attribute (e.g. assignee) then the line item was still selected even though it was no longer shown in the table. This logic has been adjusted so that we remove the selection after an action was performed.

If a dropdown contained really long text the text was simply cut. Now the text is getting wrapped and three dots indicate that the text is too long to fit into the dropdown. Up-on hovering the entire text is getting displayed.

41193904.png
Added reloading of a table after task is executed

In addition to the user name, who has performed an action, we now also display the users avatar. The avatar is automatically displayed and doesn't require any additional setting change.

41193907.png

The Table component is using a "link: true" attribute but the Profile View is not created yet. The user will then see the below shown error message.

41194003.png

You can now send parameters from a KPI list component to the Knowledge Model. This can be used to display revenue in the user preferred currency.

41194028.gif

View Example

  - id: drop-product-categories # Defines a dropdown which defines on which column the number should be summed up.
    type: dropdown
    knowledgeModelKey: sales-data
    settings:
      data:
        columns:
          - id: SALES_DATA_COLUMNS
            selected: ${kpiParameterName}
            displayName: Select a column to calculate sum
            onClick:
              update:
                inputs:
                  - name: kpiParameterName
            order: 100
      floatingPlaceholder: true
  - id: kpi-sales-with-parameters
    type: kpi-list
    knowledgeModelKey: sales-data
    settings:
      options:
        size: sm
        showSettings: false
        showBenchmark: true
        showTarget: true
        showPriority: true
        scroll: false
        responsive: false
      data:
        kpis:
          - show: true
            kpi: SUM_OF_PARAMETER
            parameters: #Set the parameter defined in the dropdown and passes it to the Knowledge Model.
              - ${kpiParameterName} 
            id: bd7e5555-3a36-488a-9849-0f03c6ab17aa
            order: 100
          - id: bd7e5555-3a36-488a-9849-0f03c6ab17ab
            kpi: AVERAGE_SHIPPING_DURATION_EX
            show: true
            order: 200

Knowledge Model Example

 -
  id: SUM_OF_PARAMETER
  displayName: Sum Of Selected Column
  customAttributes:
    active: true
  pql: SUM("Sample-sales-data-excel_xlsx_Orders"."{p1}") #Makes use of the passed parameter to run SUM function on the respective column
  filterIds: []
  format: ',.2f'
  breakdowns: []
  aggregations: []
  parameters:
   -
    id: columnName
    displayName: name of a column to calculate the sum
    defaultValue: SALES
  targets: []
  type: KPI
filters: []
variables: []
activities: []
actions: []
anomalies: []
eventLogs: []
customObjects: # Custom object is used for the dropdown component
 -
  id: SALES_DATA_COLUMNS
  displayName: Sales Data Column Names
  customAttributes:
    list:
     -
      name: SALES
     -
      name: QUANTITY
     -
      name: DISCOUNT
     -
      name: PROFIT

Removed the browser hover state, which was overlapping with the customized hover state.

41194144.png
  • Stability Improvements

    • Tools and components can better cope with internal issues and are a lot more stable

  • Show Headline on hover

    • 41194192.png
  • Editor Documentation improvement

    • e.g. more powerful search