Skip to main content

2025.1

· 71 min read

In this release of the Thinkwise Platform, we have made significant improvements to the configuration of action bars in the Universal GUI. You now have more control over the placement of action bars within a screen and can manage their content and appearance more flexibly. In addition, the new UI Styling has been applied to the new action bars.

We have also added a number of other new features for the Universal GUI, such as collapsible sections for forms, a relative setting for the form column width, and expanding settings for grids.

Cubes are now more user-friendly to set up. We have redesigned the cube screen and added support for editable pivot grids and calculated cube fields.

The most significant new feature in IAM is the ability to plan the clean-up of applications, branches, and models. This feature helps you keep your IAM environment tidy by automatically removing applications, branches, and models that are no longer in use.

With this release, we also introduce the first official version of the Windows GUI (3-tier) via Indicium, making Indicium Basic end-of-life. This year (2025) is the last year the 2-tier architecture is supported. Note that the Windows GUI (3-tier) is a backup plan if moving to the Universal GUI directly proves problematic. It is only available for those participating in the early-adopter program. The 3-tier architecture is much more secure and stricter regarding the quality of your model, so to prepare for the transition to the Universal GUI or to the Windows GUI (3-tier), we recommend fixing all findings in validations and smoke tests.

This release contains 25 Community ideas representing a record of 588 votes. The most popular ideas were:

  • Assign tasks, reports, and filters to a bar (77 votes, and long-awaited!)
  • Create alternative translations for objects (71 votes)
tip

Questions or suggestions about the release notes? Let us know in the Thinkwise Community!.

Contents


Upgrade notes

System requirements

For a full overview, see the System requirements.

  • The Thinkwise Platform requires SQL Server 2019.

  • For AI-powered enrichments, use the latest AI models for the best results. For OpenAI, we recommend GPT 4 or up.

  • .NET Framework requirements:

    ComponentMinimum .NET version
    Windows GUI4.7
    Indicium8.0
    Indicium Basic4.7.2

Breaking

User interface - Changes to the positioning of action bars in Universal GUI

Universal GUI

In previous versions of the Thinkwise Platform, the Universal GUI would first apply the screen type to a subject, removing any non-applicable components, before placing the automatic action bar(s). As a result of this behavior, the formalization of the action bars in this release might affect their positioning. For more information, see User interface - More control over action bar placement in Universal GUI.

For example, if a screen type has a scheduler placed vertically next to a tab container with 3 component tab pages, the following would happen:

  • When applied to a subject with a scheduler configuration, the action bar would be placed at the top of the screen.
  • Without a scheduler configuration, the scheduler would be removed, and the tab container would become the root component, resulting in an action bar being placed on every component tab page. This is no longer possible; the formalized action bar will now always be placed at the top of the screen.
Check the positioning of the action bar(s) in your screen types
  • If this update results in the action bar(s) being placed in an unexpected position, update your screen types to reposition the action bar.
  • If no action bar has been placed at all, the screen type may contain a faulty screen component tree. In this case, edit the screen type and save it again (menu User interface > Screen types > tab Design).

Authorization - Plan application, branch, and model clean-up

new

We have introduced a new feature to help you keep your IAM environment tidy: an automated process that you can configure to clean up applications, branches, and models. Every Sunday, a system flow checks which offline applications have a clean-up date set in the past and removes them automatically.

For more information, see Authorization - Plan application, branch, and model clean-up.

Check retention period and schedule

When upgrading, the default application retention period is set to 60 days. To prevent unwanted model removal:

  • Check the schedules for the following system flows: system_flow_gui_appl_clean_up and system_flow_model_clean_up (menu Authorization > Applications > tab General settings > tab Scheduled system flows > tab Schedules). Make sure the system flows are running at a time when your system is in low use, for example, during the night. It is better to run system flows at regular intervals and clean up smaller amounts, than to clean up a lot all at once.
  • Check if the application retention period of 60 days suits your needs (menu Settings > Global settings > tab Form > group Logging > field Application retention). We added an upgrade validation for this check.
  • Check your inactive applications, execute the task Take application offline , and set a clean-up date.

User interface - More control over action bar placement in Universal GUI

Community idea change Universal GUI

In this release, we have significantly improved the configuration of screen types for the Universal GUI. As a result, you have more flexibility to position bars within the screen and to manage their content and appearance.

Screen areas instead of detail groups

The setting Detail groups has been renamed to Screen areas (menu User interface > Screen types > tab Design / Screen areas). So, instead of a detail group, you can assign a screen area to a detail tab, detail tile, and detail reference. Fallback groups have been renamed accordingly, from Fallback group to Fallback area (menu User interface > Screen types > tab Design / tab Screen components).

Screen areas also for tiles and bars

You can now assign a screen area not only to details, but also to task and report tiles, and to task, report, prefilter, and cube view bars (menu User interface > Screen types > tab Design).

Assigning a screen area to task tiles

Assigning screen areas to tiles and bars allows you to place buttons for table tasks, table reports, prefilters, and cube views at different locations on a screen. You can connect these subjects to a screen area in the following menus:

  • Table tasks - menu Processes > Tasks > tab Default/Variants > tab Table tasks > tab Form
  • Table reports - menu Processes > Reports > tab Default/Variants > tab Table reports > tab Form
  • Prefilters - menu User interface > Subjects > tab Default/Variants > tab Data > tab Prefilters
  • Cube views - menu User interface > Cubes > tab Default/Variants > tab Cube views

When the screen area is left empty, the component uses the fallback area to display the tiles, bars, and subjects.

Assigning a screen area to a table task

You can reuse a screen area multiple times in a screen type, allowing tiles and buttons to be available more than once on a screen. This also applies to the fallback mechanism: a table task, table report, cube view, or prefilter can fall back to multiple bars or tiles.

Detail tabs can be placed only once within a screen. When more screen areas are available, the Universal GUI will arbitrarily choose a detail tab component. Three validations have been added to make you aware of this:

  • Multiple detail tab components with fallback allowed
  • Multiple detail tab components with the same screen area
  • Multiple detail tab components without screen area

Display types

It is now possible to select a default display type for task, report, prefilter, search, and cube view bars at the screen type level. With a display type you can select, for example, whether a task by default should be displayed as an icon, an icon with text, or remain hidden.

To override this default, you can set a custom display type for table tasks, table reports, prefilters, and cube views. This is not required, but if set, they will take priority over the default display type.

You can select the Custom display type in the following menus (for table tasks and table reports, the field Display type has been renamed to Custom display type):

  • Table tasks - menu Processes > Tasks > tab Default/Variants > tab Table tasks > tab Form
  • Table reports - menu Processes > Reports > tab Default/Variants > tab Table reports > tab Form
  • Prefilters - menu User interface > Subjects > Default/Variants > Data > Prefilters
  • Cube views - menu User interface > Cubes > Default/Variants > Cube views

Assigning a custom display type to a cube view

Freely model your action bars

There are two types of action bars that can both be used in the same screen type:

The Action bar follows the default configuration defined for a branch in the menu Model overview > Branches > tab General settings > tab Default action bar. Changes to this default configuration affect all screens with Action bars. At screen type level, you can only include and exclude actions, in the menu User interface > Screen types > tab Action bars > tab Default action bar set-up.

Default action bar set-up

In a Custom action bar you can include or exclude actions, and change their order, default display type, screen area, and fallback settings (menu User interface > Screen types > tab Action bars > tab Custom action bar set-up). You can use screen areas to assign table tasks, table reports, prefilters, or cube views to a Custom action bar.

Custom action bar set-up

As a result of the changes mentioned above and the two new action bars, you can now freely model action bars for the Universal GUI. For example:

  • If you place a Task bar screen component in your screen type, you probably do not want the same tasks to be shown in the Action bar as well. In that case, you can now exclude tasks from the Action bar.
  • In reverse, you can also decide to show the same tasks multiple times on a screen. In that case, you can include tasks in both the Action bar and the Task bar.

Note that the new (Custom) action bars have a single overflow menu at the far side of the screen; the prefilter overflow menu has been removed. The fallback display type behavior to the overflow menu is evaluated for each individual button, starting at the far side of the screen. In a default setup, this means that all tasks, reports, and CRUD buttons will move to the overflow menu before any prefilter. Search will be the last to fall back to icon size or the overflow menu.

Now that you have full control over the content and appearance of the action bars in your screens, the following settings are no longer available:

  • The checkbox Hide the main action bar
  • The setting toolbar_order

An action bar and a custom action bar

'Hide main action bar' setting obsolete

The setting Hide main action bar has been removed (menu User interface > Screen types > tab Form). All action bars are now a formal part of the screen type.

What happens to existing screen types?

During the upgrade, all action bars that the Universal GUI has automatically placed in screen types will be converted to formal (Custom) Action Bar screen components as long as they are not marked as hidden. These formal action bars are placed in the screen type, similarly to how the Universal GUI originally placed them.

One or more (Custom) Action Bars are placed in the screen type according to the following rules:

  • In a tab container with component tab pages at the highest level of the screen type, an Action bar is placed in every component tab page unless the component tab page only contains details.
  • In a screen type with a vertical splitter at the highest level where one side only contains bars (tasks, prefilters), and the other side contains a tab container with one or more component tab pages, an action bar is placed on every component tab page.
  • When the setting toolbar_order was used to change the button order, Custom action bars are placed to retain the modified order and any other configuration changes.
  • In all other situations, default Action bars with a default configuration are placed.
  • Action bars are still merged. For example, a Task bar will be merged to an adjacent (Custom) action bar.

The Custom action bar configuration is modified further per screen type to allow for a one-to-one migration:

  • Action buttons already present elsewhere in the screen type will be omitted. This includes tasks in Task bars or Task tiles, reports in Report bars or Report tiles, cube views in Cube view bars, prefilters in Prefilter bars, or the Search bar.
  • If you have used the setting toolbar_order to prevent action buttons from being removed, the configuration will be adjusted accordingly.
  • If you have used the setting toolbar_order to hide additional items, such as the Search field, the configuration will be adjusted accordingly.

To avoid bars above detail tab pages:

  • By default, the action bar is placed horizontally at the top of the screen type (or every component tab page).
  • When there is a detail tab page on the upper-right side of the screen (ignoring any vertical bars, such as tasks and prefilters), the action bar will be placed at the upper-right side of the first vertical splitter touching the upper side.
  • When there is a detail tab page on the upper-left side of the screen (ignoring any vertical bars, such as tasks and prefilters), the action bar will be placed at the upper-left side of the first vertical splitter touching the upper side.

New and changed in the Software Factory

Models - Limit branch access for users

Community idea new

You can now limit branch access for users to prevent accidental changes to a branch. This is especially useful for the MAIN branch, where changes are typically not made directly but added through merging.

Only users in the new IAM user group SF Main developer can manage branch access for other users. Users can be added to this group in IAM: menu Authorization > User groups.

If you are a member of this user group, you can configure access for each user and each branch in the Software Factory in the menu Maintenance > Users > tab Branch Access. The options are:

  • Full access - Users can make changes in the branch, either directly or through a merge session.
  • Only allow merging - Users are only allowed to merge into the branch.
  • Read-only - Users are not allowed to make changes in that branch, either directly or through a merge session.

You can use the task Set default branch access to set branch access for all existing branches and as default for new ones. Note that a developer who creates a branch always has full access to that branch, so they can manage their work without restrictions.

You can override the default for individual branches by changing the access level in the column Branch access.

Users who are not allowed to make changes in a branch will only get a notification after they try to save a row or execute a task. This is done to maintain performance.

note

Do not confuse this setting with branch protection. A protected branch cannot be archived or deleted by any user.

Models - Easier merge conflict resolution

new

Fields that are functionally related are now also linked in the merge session (menu Models > Merging > tab Active conflicts). This makes it easier to resolve some conflicts because all related fields are automatically resolved in the same way. For example, the data model's Identity settings (Identity, Seed and Increment) are linked.

When there are merge conflicts in one or more columns, the solutions should come from the same branch. This prevents merging actions that do not logically belong together. In this case, when Seed is changed from 1 to 20, and Increment from 1 to 100, you either want Seed 1 and Increment 100 or Seed 20 and Increment 1, not a combination of both.

The same merge conflict resolution for linked fields

You can recognize functionally linked fields by the existence of dependent actions (menu Models > Merging > tab Active conflicts > tabs Dependent actions (Source branch) / Dependent actions (Target branch). Conflicts in linked fields cannot be resolved by merging the updated value. When a linked field is automatically resolved, it can no longer be resolved using the task Resolve conflict or by editing the merge conflict. The automatically chosen resolution is marked grey.

Disable the prefilter Hide all solved conflicts to see the manual and automatic resolutions.

The automatic resolution of linked fields is marked grey

Models - Only '(merging)' in breadcrumb during merge execution

change

In the breadcrumbs, the text '(merging)' was added whenever a branch was part of a merge session, and it was not meant to be changed. In a previous release, we introduced a check for this situation and made it easier to refresh the session. Therefore, it is only relevant to know when the merge session is executed.

Now, the text '(merging)' is added only during a merge execution. This allows you to create a concept merge session without affecting other developers.

Data - Create indexes on history tables

Community idea new

The Thinkstore solution Add index temporal table allows you to create indexes on history tables. Adding this type of index to a history table can significantly improve performance when querying it. This feature has been implemented as an integrated solution in the Software Factory.

The new index type Non-clustered (history) is now available in the menu Data > Data model > tab Tables > tab Indexes. When creating this type of index, you must also specify which columns have to be included in the index. After running the creation process, the specified index will be included in the indexes script.

Additionally, the columnstore index types have been slightly renamed, and the order of the index types has been changed to make it more logical:

  • Columnstore (clustered) is now Clustered columnstore
  • Columnstore (non-clustered) is now Non-clustered columnstore
note

Because of the introduction of the new index type Non-clustered (history), the Thinkstore model Add index temporal table has been changed. It now contains a dynamic model. When the tag add_history_index is added to a table, the dynamic model creates an index on the history table based on the primary key of the original table. This index helps when you have included the Thinkstore solution Logging data available in the GUI in your model or when you query your history table with the original primary key.

Data - Performance improvements with history tables

new

We applied the new index type Non-clustered (history) to the Software Factory. As a result, some processes in the Software Factory have become a lot faster, for example:

  • Opening historical overviews.
  • Reviewing control procedures with many templates (menu Business logic > Functionality > tab Code review).
  • Setting up a Smart upgrade (menu Deployment > Creation > tab Generate definition > task Execute all creation steps > group Generate source code > field Upgrade method).

Data - Support for sequences in Oracle models

new Oracle

We have added support for sequences in models with RDBMS type Oracle.

Sequences are database objects that can be used as a counter. A sequence can be queried to get the next number in the series. When a sequence is created, it will be generated to its own code file that can be run on the database.

The columns with the property Identity in an Oracle model are now also created as a sequence when the definition is generated.

Data - Data migration improvements

new

In the Software Factory, it was possible to manually re-apply a data migration across multiple branches with the task Re-apply intermediate mappings (menu Data > Data Migration). This task will now be executed automatically when the data migration is generated. As a result, it is no longer possible to forget to re-apply the intermediate mappings. The task has therefore been removed from the screen.

In addition, we have adjusted the task Fully reset data migration . It now also removes the intermediate mappings across the branches. This prevents the data migration from being reintroduced after a reset if it comes from a branch.

Processes - Preview a file before downloading

new Universal GUI

We have added a new input parameter Try to preview to the process action Download file. The value can be set to Yes or No:

  • Yes - The file will be previewed instead of being downloaded. Previewing is not possible for all file extensions. If previewing is not possible, the file will be downloaded directly.
  • No - The file is downloaded directly and not previewed.
note

This feature is not yet supported by the Universal GUI. More information about which file extensions can be previewed will be provided in the near future.

Processes - Determine how a zoomed document is opened

new Universal GUI

A new input parameter, Open as, has been added to the process flow action Zoom detail (menu Processes > Process flows > tab Process actions > tab Input). With this input parameter, you can determine how a zoomed document is opened. You can select whether the document should be opened as Document, Floating window, or Modal document. This is similar to the process action Open document.

note

Support by the Universal GUI for this feature will be added soon.

New input parameter Open as

Processes - Asynchronous subflows

new

The process flow action Execute subflow has a new input parameter called Asynchronous. When set to Yes, Indicium will start the subflow in the background, in a 'fire and forget' manner. This means that Indicium will not wait for the completion of the subflow before continuing with the rest of the process flow.

Key differences between asynchronous and synchronous (default) subflows:

  • Asynchronous subflows run in the background and do not block the continuation of the process flow. The parent process flow can run to completion while the asynchronous subflow is still running in the background.
  • Asynchronous subflows are entirely separated from and cannot impact the remainder of the parent process flow. It is not possible to map the output parameters of an asynchronous subflow and use them later in the parent process flow.
  • Asynchronous subflows run in the system context, not in the user context. This means that the tsf_user() function returns the pool user in an asynchronous subflow, even when a user initiated the parent process flow.

New input parameter for a subflow

Processes - Process flow grid now shows columns for system flows

new

In the screen Process flow (menu Processes > Process flows), the system flow settings Multiple running instances and Custom schedule allowed are now visible in the grid. This allows for a quick overview of the system flow settings.

Improved overview of system flow settings

Business logic - Support for default values in Functions and Procedures

Community idea new

We added support for subroutine default values for SQL Server, Oracle, and DB2. When creating a subroutine of type Function or Procedure, you can now add a default value to your parameters (menu Business logic > Subroutines > tab Subroutine parameters > group Default value). Based on your programming language, a default value can be used to omit parameters from your code. Use the keyword DEFAULT to instruct the database to use the parameter's default value.

For example in SQL Server with procedures, you can leave out the second parameter parmtr2 if it has a default value:

-- Named approach, automatically applies the default
execute my_procedure @parmtr1 = 5, @parmtr3 = 'example';
-- Index based approach
execute my_procedure 5, DEFAULT, 'example';

Consult the documentation of your model's database language for all the usage differences.

Business logic - Improved logging for atomic transactions

Community idea change

We have improved the logging capabilities for subroutines, handlers, and tasks that are used as atomic transactions. In an atomic transaction, all code is run inside a transaction. We have split the template transaction_catch into two templates, enabling custom logging at key transaction points. This ensures you can preserve critical logs before and after rollbacks, improving error tracking and debugging.

For more information about atomic transactions, see subroutines, handlers, and tasks.

Custom logging for atomic transactions

Business logic - Changed icons for generating and executing program objects

change

The icons indicating whether a program object has been generated and executed on the database have been changed (menu Business logic > Functionality). Previously, the use of a single green checkmark for a generated program object could give the impression that it had already been executed on the database. To prevent this, we have changed the icons.

  • A generated program object is now indicated by a green gear .
  • The single green checkmark now indicates that a program object has been executed on the database.

The following example shows two program objects, where task_approve_sales_invoice has been generated, and task_calculate_route has been executed on the database.

Left, the old icons; right, the new icons

Translations - Generate alternative translations for objects

Community idea new Universal GUI Windows GUI (3-tier)

In the Thinkwise Community, a highly requested feature was the ability to create alternative translations for objects. This feature is now available, allowing you to generate an alternative translation label for table (variant) columns, task (variant) parameters and report (variant) parameters. It allows you to keep generic column names while customizing the translations in your applications based on context or purpose.

Alternative translation labels are created directly for the same object type as the original object. This approach ensures consistency and reduces the total number of translation labels. For example, the column customer_number will share the same translation as its alternative translation label customer_number because they belong to the same object type.

For columns, you can enable alternative translations by going to menu Data > Data model > tab Tables > tab Columns or menu User interface > Subjects > tab Columns and selecting the checkbox Alternative translation. In the field Label, you can enter the alternative translation label for the column. After saving, this label can be translated.

Enabling an alternative translation for a column

Once enabled, the new tab Alternative translations becomes available, where the alternative translation label is shown. In the example below, instead of showing the translation for customer_id, the user interface will now show the translation for customer_number.

In a similar way, you can create alternative translations for:

  • Table (variant) columns - menu User interface > Subjects > tab Default/Variants > tab Columns > group General
  • Task (variant) parameters - menu Processes > Tasks > tab Default/Variants > tab Task parameters > group General
  • Report (variant) parameters - menu Processes > Reports > tab Default/Variants > tab Report parameters > group General

Alternative translation for a column

To facilitate this feature, the checkbox Translate has been moved:

  • For table variants, it is now located in the menu User interface > Subjects > tab Variants > tab Settings > group General, and in the task pop-up for creating variants.
  • For task and report variants, it is now located in the menu Processes > Tasks/Reports > tab Variant > tab Form > group General, and in the task pop-ups for creating task and report variants.

Translations - Generating translations objects per object type

new

The tab Translation allows you to generate translation objects. A screen with all translation objects is available in the menu User interface > Translations. In addition, all objects that can be translated have their own Translation tabs.

In the Translation screens, translation objects were previously generated for all objects at once. Now, translation objects are generated only for the current object type. This change reduces unnecessary data traffic and improves performance.

Furthermore, this approach allows for generating translation objects and alternative translation labels directly when needed, so you no longer need to do this manually. Some examples where this is applied:

  • Community idea When you indicate that a variant should be translated, the translation objects are generated immediately upon creation.
  • When you indicate that a column, task or report parameter should have an alternative translation, the alternative translations are also immediately generated upon creation.

Cubes - Cube screen enhancements

Community idea change

We have enhanced a number of cube-related screens to improve clarity and usability. These changes will help you configure your cube views more efficiently.

In summary, the following changes have been made:

  • Menu
    • In the menu group User interface, the menu item for cubes is now called Cubes instead of Business intelligence.
  • tab Cube
    • The field Dragging fields has been renamed to Enable cube panel.
  • cube fields in separate tabs
    • The detail tab Cube fields has been split into two tabs: Dimensions and Values. This change makes it easier to add the cube field of your preferred type and configure it accordingly.
    • The fields Summary type and Summary display type have been renamed to Aggregation type and Aggregation display type. This change makes it clearer how the fields are used.
  • tab Cube view
    • The detail tab Cube view now has a grouped grid, similar to other screens in the Software Factory. Cube views are shown in their respective groups, which you can configure in the detail tab Cube view groups.
    • The new Cube set-up panel allows you to configure the cube view fields visually, similar to how you would create a cube view in your application. The cube areas use the same name and icon as in the application: Filters, Series/columns, Categories/rows, and Values. You can use drag-drop to place fields into a cube area, to remove them from a cube area, or to change the field order within an area.
    • Settings specific to the cube view type are shown in vertical detail tabs:
      • Pivot settings - contains all pivot-related settings of the cube view. A pivot table helps you view your data in a spreadsheet-like format. It is useful to dynamically summarize, organize and manipulate large datasets.
      • Chart settings - contains all chart-related settings of the cube view. A chart is a graphical representation of data used to visualize patterns, trends, and comparisons.
      • Filter - the dimensions you added to the areas Series / Columns and Categories / Rows in the Cube set-up panel are available for filtering in the cube view. You can also make additional dimensions available by adding them to the area Filters. If you add more dimensions to the Filters area in the Cube set-up panel, they will become available for filtering as well.
      • Sort - the fields you added to the areas Series / Columns, Categories / Rows, and Values in the Cube set-up panel are available for sorting in the cube view. This should not be confused with changing their relative order; this can be done in the Cube set-up panel. Each area has its own tab for sorting.
  • Model content
    • The screens Cube fields, Cube views, and Cube view fields are now also available as detail tabs in the menu Models > Model content. These screens contain objects that are not shown in their parent context and can be used for global actions such as filtering, searching, analyzing, comparing, and (mass) updating data.

The enhanced Cube view tab with the set-up panel

Cubes - Support for editable pivot grids

new Universal GUI

We have formalized the extender default_editable_cube that allows you to make a pivot grid editable in the Windows GUI. During the platform upgrade to version 2025.1, the extender's settings are processed into your model.

The formalized version is only used by the Universal GUI. The extender remains available in the Windows GUI, but if your transition to the Universal GUI, the extender is no longer necessary.

You can make a pivot grid editable by making one or more cube fields editable. The checkbox Editable is available for values in the menu User interface > Cubes > tab Default/Variants > tab Values. The following conditions must be met:

Make a cube field editable

Check rights

Making a pivot grid editable affects access rights. Check the rights for all tables that contain a cube in the menu Access Control > Model rights/Roles > tab Tables > tab Cube > tab Cube fields. If a cube field becomes editable, the appropriate rights must be granted. Use the task Explain question mark to check the editable state of the cube field.

Check access rights for editable cube fields

Cubes - Calculated cube fields

new Universal GUI

You can now create calculated cube fields of the type Value for the Universal GUI (menu User interface > Cubes > tab Tables > tab Default/Variants > tab Values > tab Form). Set the Aggregation type to SQL expression and enter an expression in the Query field. If you want to use other cube fields use the convention t1.cube_field_id to refer to the field. It is mandatory to use the alias t1 and the cube field ID is the name of the cube field.

For the Windows GUI, the checkbox Calculated field has been replaced with Aggregation type = Formula (deprecated). This change was made because the original setting used a custom DevExpress language which cannot be directly migrated to SQL expressions.

If you are transferring from the Windows GUI to the Universal GUI, you can add both settings to your cube view. SQL expression will be ignored by the Windows GUI, and Formula (deprecated) will be ignored by the Universal GUI.

What are calculated cube fields?

Calculated cube fields are fields that are not directly available in the database but are calculated based on other cube fields They are evaluated on cells and (sub)totals after intervals have been applied to dimensions and after values have been aggregated. You can use them to analyze data without modifying the database. Furthermore, they are evaluated separately for totals, which allows for advanced aggregations that are not possible with regular aggregation types.

For example, a profit margin calculation ((revenue - costs) / revenue) cannot be calculated in the database and aggregated as an average. The weighting of each profit margin and revenue is not taken into account for each (sub)total. Instead, this average must be re-evaluated for each (sub)total based on the summed revenue and summed costs.

Some other examples of when calculated cube fields can be useful:

  • Average selling price: total revenue / number of units sold
  • Year-over-year growth: (revenue this year - revenue last year) / revenue last year * 100%

User interface - Setting for expanding grouped grid

new

We have introduced a new setting for tables and table variants that supports the default expansion of a grouped grid. This feature works the same way as the setting already available for tree structures.

The new setting is called Default expanded. It is a checkbox with the input field Level, where you can enter the number of levels you want to expand. You can find it in the menu User interface > Subjects > tab Default/Variants > tab Settings > group Grid.

Previously, the Windows GUI used the Tree setting Default expanded to control the grouped grid as well. This has been changed. To avoid a change in your application's behavior, the new setting for the Grid will inherit the same values as the Tree.

User interface - Collapsible sections for Universal GUI forms

Community idea new Universal GUI

In the Universal GUI, form tabs are not implemented because forms can extend indefinitely in the vertical direction. Instead, new tabs are interpreted by the Universal GUI as new sections. For example, the Trace info in the Software Factory is a tab in the Windows GUI, but in the Universal GUI it is implemented as a section. For more information, see Form tabs as sections.

As of this release, you can configure sections to remain collapsed. By default, all sections are expanded, showing all columns inside them.

To prevent a section from being expanded, the following requirements must be met (menu User Interface > Subjects > tab Default/Variants > tab Components > tab Form):

  • The first column in a section must have the setting Field on next tab page enabled.
  • The section must have a Tab page label. Ensure this label clearly explains to the user which fields may be present in the collapsed section without opening it.

In the same tab, you can now disable the setting Default expanded to prevent the section from being expanded.

In IAM, a main administrator can decide whether the last state of a section is saved as a user preference. For more information, see User interface - Save collapsed/expanded sections for users.

Collapsible sections in Universal GUI forms

User interface - New relative form setting: Form column width factor

new Universal GUI

Previously, the column sizes in the Universal GUI were calculated based on the fixed-size settings for the Windows GUI. Now, we have added a new setting, the Form column width factor, to the Software Factory. You can use this setting to configure relative form column width sizes in the Universal GUI. The default factor is 1.00. To make your columns twice as wide, set the factor to 2.00.

The differences between forms in the Windows GUI and the Universal GUI

A form consists of one or more columns with one or more fields. How a form is constructed is different in the Windows GUI and the Universal GUI:

  • In the Windows GUI, a form consists of one or more tabs. A tab contains one or more columns with form fields. Those fields can be placed in groups, but are not automatically kept together: form fields in groups can be forced to a new column. The form column and form field sizes are configured in pixels.
  • In the Universal GUI, a form consists of one or more sections. A section contains one or more columns with form fields. Form fields can be placed in form groups to keep them together, to prevent them from being spread out over multiple columns. The Universal GUI is a responsive user interface that automatically adjusts to a user's screen size. This means that the column and field sizes are relative to the available space.

The example below shows a form on a desktop. In this form, the columns are placed next to each other because the available horizontal space is sufficient:

A desktop screen with two columns

On a mobile device, the columns are merged into one column as soon as the available horizontal space is insufficient:

A mobile screen where two columns are merged into one

With the Form column width factor, you can manipulate the point at which the columns are merged into one. For example, a factor of 0.50 would show 3 or 4 columns on a desktop, and 2 columns on a mobile device.

You can find this setting in the following locations. During the upgrade, the factor is calculated where possible:

  • Default form setting for a model/branch (menu Models > Model overview > tab Branches > tab Model settings > group Form) - Mandatory. This is the default Form column width factor. During the upgrade to this version of the Software Factory, the factor is calculated based on the specified Field width (px) for the model/branch. You can change it but it cannot be left empty because it is used as a fallback: when the factor is not configured at a deeper level as explained in the next bullets, the factor from the model/branch is used.
  • Form setting for a subject (menu User interface > Subjects > tab Default/Variants > tab Settings > tab General > group Form) - Optional. During the upgrade, the factor is calculated based on the specified Field width (px) for the subject.
  • User interface setting for a task pop-up (menu Processes > Tasks > tab Default/Variants > tab Settings > tab General > group User interface) - Optional. Remains empty during the upgrade because its value cannot be calculated; it depends on multiple existing task parameters.
  • User interface setting for a report pop-up (menu Processes > Reports > tab Default/Variants > tab Settings > tab General > group User interface) - Optional. Remains empty during the upgrade because its value cannot be calculated; it depends on multiple existing report parameters.
warning

The upgrade may change the response of forms in the Universal GUI, so check their appearance on various devices and screen sizes.

note

As of release 2025.1.10, this setting is available for forms in the Universal GUI. For task and report pop-ups, support will follow.

User interface - Maximum form column size as a percentage

new Universal GUI

The Software Factory now shows the form column space as as percentage for a form field, report parameter, or task parameter. This information is only relevant for the Universal GUI because it is a responsive user interface that automatically adjusts to the screen size.

The Max. form-col space is calculated based on the Label width (px) and Field width (px) settings in the preceding columns. If you place more than one field on a single line, the Max. form-col space determines how the available space is divided between the fields.

Example

The screenshot below shows one column in a form with the fields for the start and end date/time placed on the same line. These date/time fields have been calculated as 50% of the available space. If the screen size increases or decreases, the fields will adjust accordingly: their width will adjust, but they will remain on the same line, equally divided.

One column in a form with two fields placed on the same line

You can change the Max. form-col space by adjusting the settings Field width (px) and Label width (px). The Max. form-col space information is available in the following locations:

  • Form columns - menu User interface > Subjects > tab Default/Variants > tab Components > tab Form
  • Task parameters
    • menu Processes > Tasks > tab Default > tab Task parameters
    • menu Processes > Tasks > tab Variant > tab Form (execute task Set up form to make tab Form visible)
  • Report parameters
    • menu Processes > Reports > tab Default > tab Report parameters
    • menu Processes > Reports > tab Variant > tab Form (execute task Set up form to make tab Form visible)

The maximum form column space is calculated as a percentage

User interface - Disable multirow selection in grid

new Universal GUI

The extender disable_multirow_select is only available for the Windows GUI. For the Universal GUI, we have formalized this extender as a new grid setting for tables and table variants.

The setting is called Multirow selection enabled and is available in the menu User interface > Subjects > tab Default/Variants > tab Settings > tab General. You can use it to enable or disable the possibility for users to select multiple rows in the grid. Disabling multirow selection can be useful on small devices where you always need to select only one row at a time within the grid. By default, multirow select is enabled.

User interface - Hierarchy grouping support for Scheduler

Community idea new Universal GUI

It is now possible to group resources hierarchically in a Scheduler. This feature allows resources to be displayed in a tree-like structure, where resources can be organized under other resources. You can use this feature, for example, to show an organizational hierarchy with employees and their managers.

You can configure the Grouping type in the menu User interface > Schedulers.

  • Single column uses one resource grouping column.
  • Hierarchy requires an additional parent column to be selected. You can also expand the hierarchy by default by selecting Default expanded and specifying the level to which it should expand.
note

Support by the Universal GUI for this feature will be added soon.

Hierarchy grouping resources

User interface - Changed default lookup control

change

To ensure optimal performance for the Universal GUI, we have changed the default lookup control for new columns, task, and report parameters from Combo (alphabetical) to Suggestions (starts with) (menu User interface > Subjects > tab Default/Variants > tab Settings > tab General > group Look-up).

The Combo (alphabetical) lets a user select a value from a combo box, where the list is sorted alphabetically, while Suggestions (starts with) filters and displays options dynamically as you type. For more information on lookup presentation, see Lookup presentation.

It is possible to override the default:

  • For task parameters, you can set up a lookup control in the menu Processes > Tasks > tab Tasks > tab Default > tab Task parameters > tab Look-up. Select the checkbox Show lookup and select a Task reference and Look-up control.
  • For report parameters, you can set up a lookup control in the menu Processes > Reports > tab Reports > tab Default > tab Report look-ups > tab Form > tab Report look-up > group Model settings. Select a Look-up control.

As part of this update, we added an upgrade validation that lets you review if existing data should use the lookup control Suggestions (starts with). Once this check is complete, the validation can be approved.

User interface - Maximum size for modal documents

Community idea new Universal GUI
note

Support for the Universal GUI will be available soon.

The extended properties FloatingDocumentSize and LookupDialogSize are only available for the Windows GUI. For the Universal GUI, we have added new settings to accomplish the same. You can now configure a modal size (height and width) for screen types.

A maximum screen type size is relevant when a document is opened in the following ways:

  • as a lookup pop-up
  • as a Floating window or Modal document in an Open document process action
  • as a Floating window or Modal document in a Zoom detail process action

To set the maximum size for a screen type, we have added two settings, Max. width and Max. height, in the menu User interface > Screen types > tab Form > tab Screen types > group Modal size (Universal GUI only). The following options are available:

  • Automatic - The Universal GUI determines the width or height of the screen type.
  • Maximum - The Universal GUI uses as much width or height as possible within the screen or browser limits.
  • Custom - A number of pixels, for example 850, which will not be exceeded.

For lookup pop-ups, floating windows, and modal documents, the modal size settings from the initial screen type will be used. Settings from subsequent breakpoint screen types will not be applied when the breakpoint is activated.

An upgrade validation has been added to remind you to set up the correct maximum size for your screen types.

Set the maximum size for a screen type

Access Control - New objects overview

new

When setting up access control for users, you can use the screens Roles and Model rights in the Software Factory (menu group Access control). Each screen gives a different perspective on setting up roles and rights: the Roles screen focuses on roles, while the Model rights screen focuses on model objects. However, neither screen offers a clear view of executed model changes and their impact on access control. To address this, we have introduced the screen New objects, which is also located in the menu group Access control.

The new screen is similar to the Model rights screen but has one major difference: it shows which model objects are new in the current branch and need access control verification. This is shown with icons and badges:

  • Tabs show a badge with the number of objects that are new or have child objects introduced in the current branch and have not yet been verified.
  • Rows show an icon to display the verification status.
    • Unverified
    • Unverified - Parent and children
    • Unverified parent - Verified children
    • Verified parent - Unverified children
    • Verified
    • Verified - Parent and children

Example: Both the table sub_task and some of its columns are unverified:

The new screen New objects in the Software Factory

Access control - 'Allow for PAT' removed from the Software Factory

change

In the 2024.3 release, we introduced Personal Access Tokens (PATs). Since then, we have received feedback regarding the field Allow for PAT. The main concern was that Software Factory developers should not be responsible for allowing a role to be used in PATs; this responsibility should lie with the application administrator in IAM. To address this, we have removed the field Allow for PAT from the Software Factory (menu Access control > Roles > tab Role > tab Form).

See also Access control - 'Allow for PAT' removed from IAM.

Quality - New tasks for validations

new

We have added new tasks to validations that were already available for individual validation messages. The new tasks allow you to affect all messages for a validation at once, including those that may fall outside the initial top 25.

The following tasks have been added at validation level in the menu Quality > Validations > tab Validation:

  • Approve all messages (Alt + A) - All messages for this validation will not reappear in the future unless the approval is manually undone.
  • Hide all messages in this branch (Alt + H) - All messages for this validation may reappear in other branches or in the future, depending on the specified value in Hide until.
  • Assign all messages (Alt + B) - All messages for this validation will be assigned to the selected user.

Assign all messages for a validation to a user

Quality - Validation improvements

change

Several validations regarding references could be difficult to understand. Because of this, the descriptions, consequences and solutions of the following validations have been rewritten:

  • Detail reference does not contain the full primary key of the source or target table
  • Lookup reference does not contain the full primary key of the source table
  • Foreign key reference with integrity does not contain the full primary key of the source table
  • Report reference does not contain the full primary key of the source table
  • Task reference does not contain the full primary key of the source table

In addition, we have improved the code behind Detail reference does not contain the full primary key of the source or target table. Previously, this validation was intended to return the references that did not contain the full primary key of the source table. This makes sense when it concerns a parent-child relation, such as model > branch or tab > col. However, detail references are not only used for parent-child relationships, but also to display additional information.

For example, when an invoice has a debtor_id, and you want to display all debtor-related detail information next to the invoice. In this case, the full primary key of the source table is not required, and sometimes the reference columns used are not even part of the primary key of the source table. Because of that, we have extended the validation. It now also verifies whether the full primary key of the source table is used. As a result, the validation will only return references in which neither the full primary key of the source nor the full primary key of the target table is used.

Quality - New validations

new
  • Universal GUI When creating a conditional layout, it is possible to leave the styling for the Universal GUI empty or partially empty. This may cause conditional layouts to not appear where they are expected to appear. To prevent this, two validations have been added for the following situations:

    • The styling options for the Universal GUI have been left empty for a conditional layout.
    • Styling has been omitted for either dark mode or light mode.
  • A new validation is available that warns you to whitelist the file extensions necessary for the application. The extension whitelist for file storage locations is empty by default (menu Integration & AI > File storage locations) However, when it is empty, files of any type can be uploaded to the corresponding file storage location. This results in a vulnerability since it allows dangerous files to be uploaded.

  • Custom protocols and API subroutine aliases may cause issues in the connection to Indicium when multiple exposed API entities within a model share the same name. To address this, we have added two new validations that alert you to this issue:

    • Custom protocol is not unique.
    • Subroutine alias is not unique.

Quality - Optimized unit testing

change

We improved unit testing by reorganizing the presentation and execution order of unit tests (menu Quality > Unit tests > tab Unit tests > tab List).

  • We have placed the three columns Object, Unit Test Type, and Unit Test at the front of the grid to make the sorting of the tests more intuitive.
  • The unit tests are now always executed per object.

Quality - Unit testing for Oracle

new Oracle

We have re-enabled unit testing for the Oracle database platform (menu Quality > Unit tests). These unit tests have some limitations in the use of mock data:

  • Mock data in views is not yet supported.
  • Mock data never uses fallback values. Instead, the mocked tables do not have any mandatory non-key columns for the duration of the unit test. All non-key columns with no configured value or set to fallback value will be null.
  • During the unit test, triggers and constraints are disabled on mocked tables. This allows the real data to be temporarily removed and the mock data to be inserted. Due to technical limitations, the triggers cannot be re-enabled for the duration of the subsequent unit test. This may limit your options when attempting to unit test insert-, update-, or delete statements.

Quality - Enhanced smoke tests

new change

Smoke tests are available in several locations in the Software Factory:

  • menu Quality > Smoke tests
  • menu Deployment > Creation > tab Run smoke tests

For SQL Server, smoke tests were already available in the Software Factory. Now, smoke tests are also available for Oracle. Depending on the linked base model (SQLSERVER_DB or ORACLE_DB), you get the corresponding smoke test for that language as code files.

SQL Server
We enhanced the smoke tests for SQL Server. Previously, the smoke test in the screen Creation would be fully rebuilt, resulting in a potential mismatch between the just-executed code and the model, as well as some performance degradation. From now on, it will be based on the model as it was during definition generation. The test is still fully rebuilt (based on the model), when you start it from the menu Quality > Smoke tests. It is possible to re-execute individual smoke test steps with the latest code based on the model.

We have also expanded the smoke tests to include checks for unique primary keys of views and resolved an issue where checking for primary keys with NULL values did not report findings correctly.

Oracle
Smoke tests are now available for Oracle. The smoke test on the Oracle platform includes materialized views in the same way as views, and checks the compilation status of all packages. Running smoke tests for Oracle works in the same way as for SQL Server.

Quality - Roles and role groups excluded from subnames check

change

We have removed role and role group names from the subname generation. As a result, the roles and role groups are no longer available in the screen Subnames in the Software Factory (menu Quality > Subnames) and you no longer receive validation messages for role and role group names.

The reason for this change is that role names are handled independently of model objects. For example, you can name roles in any language of your choice, even if subnames are limited to a single language.

Deployment - Removed option to disable verification of synchronization scripts

change

In the Software Factory, we have hidden the option to disable the verification of the generated synchronization scripts. Script verification ensures that no changes were made to the model during the synchronization process. The option to disable script verification was originally added to improve synchronization speed, which was impacted by the verification step. This is no longer the case since both synchronization and verification have become much faster. Verification is now always performed automatically to ensure the quality and integrity of the scripts.

This option was available as a checkbox in the following tasks:

  • menu Deployment > Synchronization to IAM > tab Synchronization > task Synchronize to IAM
  • menu Deployment > Deployment package > tab Deployment package > task Create deployment package
note

This change does not affect CI/CD automation or API processes.

Integration & AI - New file storage type SFTP

Community idea new

We have added a new file storage type, SFTP, to the Software Factory. This file storage type can be used to access files on an SSH FTP server, which is useful for secure file transfers.

You can apply a file storage type as a default in the menu Integration & AI > File storage locations > tab Form > tab File storage location > group Description. You can deviate from this default for a runtime configuration in the menu Maintenance > Runtime configurations > group Description.

When configuring the SFTP file storage type, you need to provide the Host name, Server port, and Path. The authentication method can be either a Password or a Public key. For the Universal GUI, it is possible to use encryption.

You can override the default file storage type in IAM, see Authorization - New file storage type SFTP.

New file storage type SFTP in the SF

Enrichments - Improved 'Create mock data table from test database'

Community idea change

Previously, when using the enrichment Create mock data table from test database, all records in a table from the database were selected, even when you did not need all the records for your mock data. To improve this, we have added the option to limit the data by entering a where clause in the parameter Filter conditions (without 'where'). You can refer to the table by using the alias t1. For example: t1.customer_id = 1.

We also solved an issue where the enrichment would fail when it tried to add data from the test database into mock data, and the data in a single field contained more than 4000 characters. You will now get the message "Not possible to set @col_id to @value..., because it is too long.". In the list of potential model updates, this update will be disabled by default. You can choose to either ignore the long mock data set and only test with the other relevant data or edit the value in the test database and rerun the enrichment.

The enrichment Create mock data table from test database can be found in the menu Enrichments > Model enrichments.

Enrichments - New and improved models in the Thinkstore

new change

In the Thinkwise Community, you can find the release notes for the new and improved models in the Thinkstore. See the Thinkstore release notes.

Generic - Variant changes compared to default

Community idea new

It is possible to show the same table, task, and report differently in your application by adding a variant. Although you can explain the functional purpose of a specific variant in the field Description, this is not always done. For this reason, we have introduced a new screen, Changes compared to default, which provides an exact overview of how the variant differs from the default:

  • Tables: Menu User interface > Subjects > tab Variants > tab Changes compared to default
  • Tasks: Menu Processes > Tasks > tab Variants > tab Changes compared to default
  • Reports: Menu Processes > Reports > tab Variants > tab Changes compared to default

Changes compared to default

Generic - Variant details in Usage tabs

new

Several screens in the Software Factory contain a Usage tab, which allows you to see where a specific object is being used. Previously, this tab did not include information on variants, even though the object could have been used in a variant. To address this, we have now included variant details in these Usage tabs, where applicable.

Variant details in the Usage tab

Fixed in the Software Factory

  • Previously, when you created a branch in the screen Models (menu Models > Model overview > tab Models), there was no prompt to start working in the newly created branch. This behavior has been changed to maintain consistency with the task Create branch from the tab Branches. Now, if you create a new branch from the screen Models, you will be asked if you want to switch to the new branch.

  • The comment title in a code review can only be 100 characters long. If long template names are used within a control procedure, it could lead to an error when attempting to access the comments of the control procedure in review. This has been resolved.

    This issue occured in the following locations:

    • menu Quality > Code review > tab Changes > tab Comments
    • menu Quality > Code review > tab All comments
    • menu Business logic > Functionality > tab Code review > tab Comments
  • Oracle To improve the Oracle database schema creation and maintenance of the Thinkwise platform, we have fixed the following:

    • The rollout scripts for Oracle databases will no longer attempt to remove checks and foreign keys from tables in the Oracle Recycle Bin, (see Using Flashback Drop and Managing the Recycle Bin.
    • All logic procedures for entities, tasks, reports, and process flows that use columns, parameters, or variables with a char datatype will now instead use varchar2 in the procedure. This is because Oracle will only accept a character of 1 position length. This is due to a limitation of Oracle where the length cannot be defined for the input datatypes of stored procedures. A similar approach was already in use for decimal datatypes, which default to the largest decimal type, number.
    • Instead-of triggers now properly provide the for-each-row part of the trigger creation.
  • When a field was placed in a next column, other fields within that form column using a value of '0' for the setting Field no. of positions further would not be placed where intended. This has been fixed.

New and changed in the Intelligent Application Manager

Authorization - Plan application, branch, and model clean-up

new

We have introduced a new feature to help you keep your IAM environment tidy: an automated process that you can configure to clean up applications, branches, and models.

In IAM, it was previously possible to manually activate or deactivate an application using a checkbox (menu Authorization > Applications > tab List/Form > checkbox Active). To optimize this process, we have replaced this checkbox with two tasks for bringing an application online or offline: Bring application online and Take application offline .

When you bring an application offline, you can set a clean-up date.

Set up a clean-up date

Every Sunday, a system flow checks which offline applications have a clean-up date set in the past and removes them automatically. You can create a custom schedule for this process in IAM. See Scheduled system flows for your applications.

The default value for the clean-up date is the current date plus the application retention period, for example, 60 days as of today. A main administrator can change the application retention period in IAM. The field Application retention can be found in the menu Settings > Global settings > tab Form > group Logging. You can choose to save unused applications for 30, 60, 90, or 365 days, or indefinitely. The default is 60 days.

After the application retention period has expired, the application is removed from IAM. If all applications of a branch are removed, the branch is removed. If all branches of a model are removed, the model is removed.

Community idea In this new situation, it is no longer possible to manually remove branches that still have online applications or models with branches containing online applications.

An overview of the models that are scheduled for clean-up can be found in the screen Models in the menu Optimization.

Check retention period and schedule

When upgrading, the default application retention period is set to 60 days. To prevent unwanted model removal:

  • Check the schedules for the following system flows: system_flow_gui_appl_clean_up and system_flow_model_clean_up (menu Authorization > Applications > tab General settings > tab Scheduled system flows > tab Schedules). Make sure the system flows are running at a time when your system is in low use, for example, during the night. It is better to run system flows at regular intervals and clean up smaller amounts, than to clean up a lot all at once.
  • Check if the application retention period of 60 days suits your needs (menu Settings > Global settings > tab Form > group Logging > field Application retention). We added an upgrade validation for this check.
  • Check your inactive applications, execute the task Take application offline , and set a clean-up date.

Authorization - Save collapsed/expanded sections for users

Community idea new Universal GUI main administrator 2024.3.14

If configured, users can collapse and expand sections in Universal GUI forms. For more information, see User interface - Collapsible sections for Universal GUI forms.

In IAM, a main administrator can select whether the last state of a section (collapsed or expanded) should be saved for users. The next time a user opens a form, the sections will be displayed in the same state as when they were last used.

This user preference is enabled in the following default configurations: Move, On_Off and Complete (menu Authorization > Users > tab Form > field Configuration).

To grant this user preference to users with a custom configuration, you can change your custom configurations in the Advanced menu: Master data > User preference availability.

Authorization - Personal access tokens

change

We introduced Personal Access Tokens (PATs) in the 2024.3 release. Since then, we have received feedback regarding the field Allow for PAT. The main concern was that Software Factory developers should not be responsible for allowing a role to be used in PATs; this responsibility should lie with the Application administrator in IAM. To address this, we have removed the field Allow for PAT from IAM (menu Authorization > Applications > tab Form).

In IAM, this means the task Set role available for PAT is now no longer conditional and always available (menu Authorization > Applications > tab Authorization settings > tab Personal access token roles). See also Access control - 'Allow for PAT' removed from the Software Factory.

Lastly, we moved the screen Personal access tokens from the menu group Analysis to Authorization, as this better aligns with its intended purpose.

Authorization - New file storage type SFTP

Community idea new

We have added a new file storage type, SFTP to the Software Factory. This file storage type can be used to access files on an SSH FTP server, which is useful for secure file transfers.

You can override an application's file storage type in IAM by going to the menu Authorization > Applications > tab General settings > tab File storage locations > group Description.

For more information about the SFTP file storage type, see Integration & AI - New file storage type SFTP.

New file storage type SFTP in IAM

Licenses - Warning for unregistered environments in Universal GUI

new main administrator

When opening an unregistered environment in the Universal GUI, a warning is now displayed to main administrators in IAM.

Environment is not registered

Optimization - Models screen moved and redesigned

change

The screen Models has been moved from the menu group Models to Optimization and has been redesigned.

  • It now has a badge to show the availability of new models.
  • Prefilters have been added to allow you to see which models are no longer in use, offline, scheduled for cleanup, new, and online.

This helps you keep your IAM environment tidy.

The enhanced Models screen in IAM

Logging - System flow log retention setting

change

We further improved the logging capabilities in IAM to enhance logging performance and clean up old log records.

A new setting for System flow log retention has been added to the menu Settings > Global settings. This setting determines how many days system flow log records are stored. System flow log records are cleaned up by the IAM system flow system_flow_clean_up.

A short overview of the retention settings in IAM

  • Application retention - Determines when applications are taken offline, and when the model and branch are deleted if they no longer have online applications. For more information, see Authorization - Plan application, branch, and model cleanup.
  • Application log retention - How long log items for environment monitoring logs, OpenID audit logs, and agent check-in logs are retained. For more information, see Application log retention.
  • System flow log retention - How long system flow log records are retained, as described above.
  • Session log retention - How long user session log records are retained. For more information, see Session log retention.

System flow log retention setting

Data model changes

Data model changes for the Software Factory and IAM meta-models are listed here. This overview can be used as a reference to fix dynamic control procedures, dynamic model code or custom validations after an upgrade.

Changes Software Factory

Table changes

Changes
SF - From tableSF - To table
-action_bar
-screen_component_custom_action
-screen_component_excluded_action
tab_page_controlscreen_area
-usr_branch

Column changes

Changes
SF - TableSF - From columnSF - To columnMandatoryDefault value
col-alt_transl_col_id0-
col-has_alt_transl10
col-next_tab_default_expanded11
cube_field-editable10
cube_view-custom_display_type0-
cube_view-screen_area_id0-
dttpcalculatedcalculated10
merge_conflict-resolution_addendum0-
model_settings-form_col_min_width_factor11
model_settings-report_form_col_min_width_factor11
model_settings-task_form_col_min_width_factor11
reftab_page_control_idscreen_area_id0-
report-form_col_min_width_factor0-
report_parmtr-alt_transl_report_parmtr_id0-
report_parmtr-has_alt_transl10
report_variant-apply_form_col_min_width_factor10
report_variant-form_col_min_width_factor0-
report_variant_parmtr-alt_transl_report_parmtr_id0-
report_variant_parmtr-has_alt_transl0-
roleallow_for_pat---
role_cube_field-editable10
scheduler-hierarchy_default_expanded10
scheduler-hierarchy_default_expanded_level0-
scheduler-parent_resource_grp_by_col_id0-
scheduler-type_of_resource_grp_by10
screen_areatab_page_control_idscreen_area_id1-
screen_componenttab_page_control_idscreen_area_id0-
screen_component-default_display_type0-
screen_component_type-is_action10
screen_typehide_main_action_barhide_main_action_bar11
subroutine_parmtr-default_value0-
subroutine_parmtr-type_of_subroutine_parmtr_default10
tab-form_col_min_width_factor0-
tab-grp_grid_default_expanded10
tab-grp_grid_default_expanded_level0-
tabtree_show_labeltree_show_label10
tab_prefilter-custom_display_type0-
tab_prefilter-screen_area_id0-
tab_reportreport_display_typecustom_display_type0-
tab_report-screen_area_id0-
tab_tasktask_display_typecustom_display_type0-
tab_task-screen_area_id0-
tab_variant-apply_form_col_min_width_factor0-
tab_variant-form_col_min_width_factor0-
tab_variant-grp_grid_default_expanded0-
tab_variant-grp_grid_default_expanded_level0-
tab_variant_cube_view-apply_custom_display_type10
tab_variant_cube_view-apply_screen_area_id10
tab_variant_cube_view-custom_display_type0-
tab_variant_cube_view-screen_area_id0-
tab_variant_detailtab_page_control_idscreen_area_id0-
tab_variant_form-next_tab_default_expanded11
tab_variant_prefilter-apply_custom_display_type10
tab_variant_prefilter-apply_screen_area_id10
tab_variant_prefilter-custom_display_type0-
tab_variant_prefilter-screen_area_id0-
tab_variant_reportreport_display_typecustom_display_type0-
tab_variant_report-apply_custom_display_type10
tab_variant_report-apply_screen_area_id10
tab_variant_report-screen_area_id0-
tab_variant_tasktask_display_typecustom_display_type0-
tab_variant_task-apply_custom_display_type10
tab_variant_task-apply_screen_area_id10
tab_variant_task-screen_area_id0-
tab_variant_col-alt_transl_col_id0-
tab_variant_col-has_alt_transl0-
task-form_col_min_width_factor0-
task_parmtr-alt_transl_task_parmtr_id0-
task_parmtr-has_alt_transl10
task_variant-apply_form_col_min_width_factor10
task_variant-form_col_min_width_factor0-
task_variant_parmtr-alt_transl_task_parmtr_id0-
task_variant_parmtr-has_alt_transl0-
usr-default_branch_access10

Changes Intelligent Application Manager

Table changes

Changes
IAM - From tableIAM - To table
-usr_pref_tab_section
-usr_pref_tab_variant_section

Column changes

Changes
IAM - TableIAM - From columnIAM - To columnMandatoryDefault value
col-alt_transl_col_id0-
col-next_tab_default_expanded11
cubeallow_dragging_fieldsallow_dragging_fields0-
cube_field-editable10
cube_view-custom_display_type0-
cube_view-screen_area_id0-
global_settings-model_retention160
gui_appl-clean_up_date0-
model-no_longer_in_use10
modelno_longer_in_use---
openid_provider-enabled10
reftab_page_control_idscreen_area_id0-
report_parmtr-alt_transl_report_parmtr_id0-
report_variant_parmtr-alt_transl_report_parmtr_id0-
roleallow_for_pat---
role_cube_field-editable10
scheduler-hierarchy_default_expanded10
scheduler-hierarchy_default_expanded_level0-
scheduler-parent_resource_grp_by_col_id0-
scheduler-type_of_resource_grp_by10
sf_report-form_col_min_width_factor0-
subroutine_parmtr-has_default10
tab-form_col_min_width_factor0-
tab-grp_grid_default_expanded10
tab-grp_grid_default_expanded_level0-
tab_prefilter-custom_display_type0-
tab_prefilter-screen_area_id0-
tab_report-screen_area_id0-
tab_reportreport_display_typecustom_display_type0-
tab_task-screen_area_id0-
tab_tasktask_display_typecustom_display_type0-
tab_variant-form_col_min_width_factor0-
tab_variant-grp_grid_default_expanded10
tab_variant-grp_grid_default_expanded_level0-
tab_variant_col-alt_transl_col_id0-
tab_variant_col-next_tab_default_expanded11
tab_variant_cube_view-custom_display_type0-
tab_variant_cube_view-screen_area_id0-
tab_variant_detailtab_page_control_idscreen_area_id0-
tab_variant_prefilter-custom_display_type0-
tab_variant_prefilter-screen_area_id0-
tab_variant_report-screen_area_id0-
tab_variant_reportreport_display_typecustom_display_type0-
tab_variant_task-screen_area_id0-
tab_variant_tasktask_display_typecustom_display_type0-
task-form_col_min_width_factor0-
task_parmtr-alt_transl_task_parmtr_id0-
task_variant-form_col_min_width_factor0-
task_variant_parmtr-alt_transl_task_parmtr_id0-
usr_pref_cube_view_constant_line-title_font_id0-
usr_pref_cube_view_constant_linetitle_font_bold---
usr_pref_cube_view_constant_linetitle_font_color---
usr_pref_cube_view_constant_linetitle_font_face_id---
usr_pref_cube_view_constant_linetitle_font_italic---
usr_pref_cube_view_constant_linetitle_font_size---
usr_pref_cube_view_constant_linetitle_font_underline---
usr_pref_variant_cube_view_constant_line-title_font_id0-
usr_pref_variant_cube_view_constant_linetitle_font_bold---
usr_pref_variant_cube_view_constant_linetitle_font_color---
usr_pref_variant_cube_view_constant_linetitle_font_face_id---
usr_pref_variant_cube_view_constant_linetitle_font_italic---
usr_pref_variant_cube_view_constant_linetitle_font_size---
usr_pref_variant_cube_view_constant_linetitle_font_underline---
write_back_usr_pref_type-tab_section_next_tab_default_expanded10

Questions or suggestions?

tip

Questions or suggestions about the release notes? Let us know in the Thinkwise Community!