<?xml version="1.0"?>
<rss version="2.0">
    
                    <channel>
        <title>Join the conversation</title>
        <link>https://community.thinkwisesoftware.com</link>
        <description>Stay up to date on the latest official Thinkwise news and participate in discussions regarding Thinkwise services &amp; products</description>
                <item>
            <title>🚀 Platform improvements for week 25, 2026 ⚠️</title>
            <link>https://community.thinkwisesoftware.com/product-updates/platform-improvements-for-week-25-2026-6856</link>
            <description>Hi everyone!We’ve released the following important platform improvements this week: SF 2026.220260616 - Fix for overriding rdbms types for runtime configurations			Runtime configurations can now have a different RDBMS type than the default runtime configurations. The handling of this was not completely consistent and could result in some processes not working as intended, causing them to potentially fail or become stuck; such as the Execute source code processes. This has been fixed.						It is advised to install this hotfix with urgency to avoid loss of development time.		 				20260616 - Resolve DB2 schema object qualifier			For DB2, the DOQ] parameter was used to allow deviation for the object qualifier. Currently, only dots are supported and therefore these had to be replaced in all templates. This hotfix ensures the templates have this parameter replaced correctly.		 				20260617 - Fix for static assignment error on rename			The Software Factory leverages the ON UPDATE and ON DELETE CASCADE on program object related foreign key references. However, CASCADE was removed accidentally. This has been fixed and the foreign keys now have their CASCADE reinstated.</description>
            <category></category>
            <pubDate>Fri, 19 Jun 2026 15:45:49 +0200</pubDate>
        </item>
                <item>
            <title>Indicium serializes SQL DATE column as UTC datetime — causing -1 day offset in Universal GUI</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/indicium-serializes-sql-date-column-as-utc-datetime-causing-1-day-offset-in-universal-gui-6836</link>
            <description>Hello Thinkwise,We are experiencing an issue where a SQL DATE column (subsidiary_calendar.date) is serialized by Indicium as a UTC datetime string (&quot;2025-06-08T00:00:00Z&quot;) in the OData response. The Thinkwise Universal GUI running in the Netherlands (CEST = UTC+2) subtracts 2 hours, rendering the date as the previous day.This causes a visible bug in our pickup overview: Monday June 8 disappears from the day window because Sunday&#039;s is_work_day = 0 ends up being shown on Monday&#039;s slot.We confirmed this via a direct OData call:GET /subsidiary_calendar?$filter=subsidiary_id eq 1186 and date eq 2025-06-08&amp;amp;$select=date,is_work_dayResponse: { &quot;date&quot;: &quot;2025-06-08T00:00:00Z&quot;, &quot;is_work_day&quot;: 0 }The database correctly stores 2025-06-08 with is_work_day = 0 (Sunday). The serialization introduces the offset.We know that $apply=Compute(Date(date) as date) returns a pure date string as a workaround, but this cannot be applied at SF model level since our views and subjects are driven by the model.Is there a way to configure Indicium or the SF model so that DATE columns are returned as a pure date string (&quot;2025-06-08&quot;) without a UTC timezone offset — for example via a domain setting, column property, or Indicium configuration flag?Kind regards,Rolf working_days as (    select sc.subsidiary_id, sc.bdate],           row_number() over (partition by sc.subsidiary_id order by sc._date]) as rn    from subsidiary_calendar sc    where sc.is_work_day = 1      and sc.=date] between cast(getdate() as date) and dateadd(day, 14, cast(getdate() as date))),workingdays_in_future as (    select subsidiary_id,  date] as max_date from working_days where rn = 7) </description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Fri, 19 Jun 2026 15:39:19 +0200</pubDate>
        </item>
                <item>
            <title>Make Screentype (design) changes require an active &quot;Save&quot; action</title>
            <link>https://community.thinkwisesoftware.com/ideas/make-screentype-design-changes-require-an-active-save-action-6855</link>
            <description>When moving components around of a screen type it now is saved immediately. Please change it how it was in the older versions where an active “Save” was required to confirm your changes.When you now move a component and the result if the placement has an unintended result, your screen type is  now ruined. Since the order of how you move component can be quite important to not completely mess up the already setup specification in width/height, a mistake can happen quite easily.</description>
            <category></category>
            <pubDate>Fri, 19 Jun 2026 14:27:23 +0200</pubDate>
        </item>
                <item>
            <title>Newly added row cannot be found</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/newly-added-row-cannot-be-found-6852</link>
            <description>At the customer we are facing the following issue:We have a table with a primary key (PK), and this field is of course mandatory.This column is not an identity column, and currently it cannot be made one because we need to remain compatible with the existing system (RPG/iSeries DB2).Because the field is mandatory, we populate the PK with a number via the DEFAULT, so that it can be sent to the database already filled in. However, it is possible that a second user generates the same number in the DEFAULT, since it is simply calculated as max number + 1.Duplicate numbers are not allowed, so in the TRIGGER the number is recalculated to ensure it is unique regardless. This uses the same logic as in the DEFAULT.As a result, when saving, you may receive a different number than what you initially entered. The GUI is then unable to find the inserted row and shows an error message.How can we solve this without using an identity column?There is a risk that, for example when adding a sales order, a user believes they are working on their own order, while in fact they are adding order lines to someone else’s order.</description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Fri, 19 Jun 2026 12:12:06 +0200</pubDate>
        </item>
                <item>
            <title>Custom protocol process flow gives error</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/custom-protocol-process-flow-gives-error-6853</link>
            <description>Hi,I have a process flow which another system will trigger with a HTTP call through indicium, the process flow has custom protocol enabled, i tested it in development with postman and it works. When i try to test the same call on our test enviroment i get the following response, 400 bad request:“Cannot start process flow &#039;webmethods_relatie_sap_code_in_flow&#039; on this endpoint, because it&#039;s configured to disallow API triggers.” I can’t figure out what is causing this, probably a setting somewhere but i can’t find anything in the SF/IAM/documentation that would cause this.Does anyone know what might be causing this?</description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Fri, 19 Jun 2026 10:53:15 +0200</pubDate>
        </item>
                <item>
            <title>Best way to detect client type</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/best-way-to-detect-client-type-6854</link>
            <description>Hi,We are currently transitioning a client from the Windows GUI to the Universal GUI.In the existing situation, reports are generated via tsfreportmailer (gui_code), which is not supported in the Universal GUI. During the transition phase, both GUIs are active, so we need to support both approaches.At the moment, we are experimenting with a process flow that calls Indicium for report generation.What we would like to achieve is a where we can decide, based on the client type, whether to:execute the exesting Windows-specific reporting task, or	execute a Universal/Indicium-based reporting taskSo effectively, detect the active GUI..For testing, we tried select app_name(); This returns:Thinkwise Software Factory in the Windows GUI	Indicium in the Universal GUIThis seems to work, but it feels a bit implicit.Questions:Is using app_name() the recommended way to distinguish between Windows and Universal GUI?	Is there a more robust or supported method (e.g. via session_context or another mechanism)?	What is the best practice for handling GUI-dependent logic like this?Thanks in advance!Blommetje</description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Fri, 19 Jun 2026 10:37:03 +0200</pubDate>
        </item>
                <item>
            <title>Set hidden column to authorized on role</title>
            <link>https://community.thinkwisesoftware.com/ideas/set-hidden-column-to-authorized-on-role-6693</link>
            <description>When a column is set to hidden and this column is not a PK, the column is often not supplied through Indicium. This is fine for most cases. However sometimes there are columns that should be hidden inside an application but should be available through Indicium. For example, an Interface ID column.Currently the only way to make this column available in Indicium is by setting the column to editable or read only and set it to hidden on grid, form and cardlist.I would like the option to enable a checkbox on role level that will make a hidden column authorized. This should result in the column being supplied through Indicium for this specific role.This way these kinds of columns can be made available to interfaces and remain hidden inside our application.</description>
            <category></category>
            <pubDate>Thu, 18 Jun 2026 15:07:58 +0200</pubDate>
        </item>
                <item>
            <title>multiple cube conditional layout conditions</title>
            <link>https://community.thinkwisesoftware.com/ideas/multiple-cube-conditional-layout-conditions-6851</link>
            <description>I want to be able to have multiple conditions for my conditional layout in a cube view just like in subjects for a table.</description>
            <category></category>
            <pubDate>Thu, 18 Jun 2026 13:05:09 +0200</pubDate>
        </item>
                <item>
            <title>Drag-and-drop sorting in menu for Open Documents &amp; Favorites</title>
            <link>https://community.thinkwisesoftware.com/ideas/drag-and-drop-sorting-in-menu-for-open-documents-favorites-6849</link>
            <description>Hi everyone,I would like to propose a quality-of-life improvement: the ability to manually reorder menu items in Open Documents and Favorites using drag-and-drop.Why this helps:	Better overview: Group related tabs and documents together based on your current task.			Higher efficiency: Keep your most-used favorites at the very top for quick access.			Cleaner workspace: Less time spent searching through static lists.	It’s a small UX tweak that would make daily navigation in the Software Factory a lot smoother.Let me know what you think! Upvote if you agree. </description>
            <category></category>
            <pubDate>Thu, 18 Jun 2026 08:58:44 +0200</pubDate>
        </item>
                <item>
            <title>SF upgrade: Best practice for handling SF model changes in dynamic code with minimal downtime</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/sf-upgrade-best-practice-for-handling-sf-model-changes-in-dynamic-code-with-minimal-downtime-6845</link>
            <description>With the SF upgrade from 2026.1 to 2026.2 there are quite some model changes that need to be handled if you have dynamic code. After upgrading, it took me half a day to make/test these modifications in our models, during this time the SF was unavailable for other team members because generating full model definitions was not working.This made me wonder what the best practice is to handle SF model changes in dynamic code when upgrading? Specifically aimed at reducing the SF downtime as much as possible. I was thinking of making a branch before upgrading to apply the changes in, but you’d have to do that for each base model that has dynamic code that needs to be changed. And you can’t really execute/test it unless you make a copy of the SF and upgrade the copy, and then you have to maintain changes in two SFs. This makes the process quite tedious. Is there a better way? </description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Wed, 17 Jun 2026 19:04:03 +0200</pubDate>
        </item>
                <item>
            <title>Updating dynamic code in Thinkwise Platform version 2026.2 (AI-assisted)</title>
            <link>https://community.thinkwisesoftware.com/news-blogs-21/updating-dynamic-code-in-thinkwise-platform-version-2026-2-ai-assisted-6838</link>
            <description>Platform version 2026.2 introduces multi-RDBMS model support in the Software Factory. It is a significant step forward: for the first time, a single application model can target multiple database platforms simultaneously. We will utilize this feature ourselves to release IAM on Db2 and PostgreSQL in the near future. And customers can use this feature to deploy their application on different database platforms or to migrate to PostgreSQL for instance, for which Enrichments support is planned in a later release.To make this possible, the Software Factory data model itself has changed significantly. A set of core tables now stores RDBMS-specific columns in a separate detail table, following a consistent _query naming pattern. This likely breaks some of your dynamic code. If your model uses dynamic model code, SQL-assigned control procedures, or custom validations that reference any of these tables, you need to update those queries before generating your application on 2026.2. This post walks you through exactly what changed and how to fix it.Always regenerate the model definition after upgrading to a new platform version before starting development. This applies the base model changes to your work model and prevents generation errors caused by a stale definition. What changedThe tables below now each have a corresponding _query detail table. This detail table holds all columns that are RDBMS-specific. Any dynamic code that reads from or writes to one of these tables without accounting for the _query table will produce errors after the upgrade.The following tables now have a _query detail table:col_data_sensitivity	col	cube_field	data_migration_col	data_set	dom_input_constraint	dom	indx	model_vrs_data_migration_col	process_variable	report_parmtr	report_variant_parmtr	tab_check_constraint	tab_data_col	tab_prefilter	tab	tab_variant	task_parmtr	task_variant_parmtr	unit_testThe pattern is consistent: if you reference the tab table, the RDBMS-specific fields now live in tab_query. The same applies to every table in the list above. How to update your queriesStart by generating your application immediately after upgrading to 2026.2. Generation errors are your first signal that dynamic code needs attention. Work through them systematically. INSERT statementsFor every INSERT into an affected table, add a second INSERT into the corresponding _query table. The _query table holds the RDBMS-specific fields, so both inserts are required.Before upgradeinsert into tab (model_id, branch_id, tab_id, tab_description, view_from_clause)values (@model_id, @branch_id, @tab_id, @tab_description, @ view_from_clause)After upgradeinsert into tab (model_id, branch_id, tab_id, tab_description)values (@model_id, @branch_id, @tab_id, @ tab_description)insert into tab_query (model_id, branch_id, tab_id, view_from_clause)values (@model_id, @branch_id, @tab_id, @ view_from_clause) SELECT statementsIf you select from an affected table and need RDBMS-specific fields, join the _query table. The example below uses tab, but the same pattern applies to every table in the list above.Before upgrade select t.*from tab twhere t.model_id = @model_id  and t.branch_id = @branch_id  and t.tab_id = @tab_idAfter upgradeselect t.*, tq.*from tab tjoin tab_query tq ON tq.model_id = t.model_id and tq.branch_id = t.branch_id and tq.tab_id = t.tab_idwhere t.model_id = @model_id  and t.branch_id = @branch_id  and t.tab_id = @tab_idIf you only need non-RDBMS fields, the join is not required. Selects that already work without touching _query fields can remain unchanged. UPDATE statementsWhat was one UPDATE statement now requires two: one for the main table and one for its _query counterpart.Before upgradeupdate tabset tab_description = @tab_description   ,view_from_clause = @view_from_clausewhere model_id = @model_id  and branch_id = @branch_id  and tab_id = @tab_idAfter upgradeupdate tabset tab_description = @tab_descriptionwhere model_id = @model_id  and branch_id = @branch_id  and tab_id = @tab_idupdate tab_queryset view_from_clause = @view_from_clausewhere model_id = @model_id  and branch_id = @branch_id  and tab_id = @tab_id DELETE statementsDELETE statements follow the same two-statement pattern. Delete from the _query table first to avoid foreign key constraint violations.Before upgradedelete from tabwhere model_id = @model_id  and branch_id = @branch_id  and tab_id = @tab_idAfter upgradedelete from tab_querywhere model_id = @model_id  and branch_id = @branch_id  and tab_id = @tab_iddelete from tabwhere model_id = @model_id  and branch_id = @branch_id  and tab_id = @tab_idControl procedure SQL assignmentsIf a SQL-assigned control procedure returns an error, the missing field is most likely rdbms_type. When your model targets only one RDBMS, the Software Factory fills this field automatically. If it still produces errors, add it to your query explicitly. It does not cause any problems even when only one database platform is in use.Use the following values when setting rdbms_type in your queries:			Value									RDBMS type								0									SQL Server								1									DB2 iSeries								3									Oracle								4									PostgreSQL					 Custom validationsReview any custom validations that reference the affected tables. If they query RDBMS-specific fields, they need the same _query join treatment as your SELECT statements. Run your validations after fixing your dynamic code to confirm everything resolves cleanly. Verify your workOnce you have updated all dynamic code and your application generates without errors, check that the dynamic code behaves correctly.  AI-assisted migrationIncluded with this post is a Claude skill that can make a solid first attempt at converting existing queries to the new 2026.2 data model structure. Output needs a review pass, but it gives you a head start. Simply provide the skill with the dynamic code and it will attempt to fix it.</description>
            <category>News &amp; Blogs</category>
            <pubDate>Wed, 17 Jun 2026 17:25:26 +0200</pubDate>
        </item>
                <item>
            <title>Oauth scope url in Iam environment</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/oauth-scope-url-in-iam-environment-6848</link>
            <description>It’s possible to setup the scope url in the software factory, not in the IAM environment only token url and authorisation URL can be filled in.</description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Wed, 17 Jun 2026 16:58:40 +0200</pubDate>
        </item>
                <item>
            <title>Format your Scheduler activities with HTML</title>
            <link>https://community.thinkwisesoftware.com/news-blogs-21/format-your-scheduler-activities-with-html-6837</link>
            <description>Universal brought HTML rendering and multiline support to Scheduler activities and tooltips. Two additions that significantly improve the ability to format the Scheduler to your end users&#039; liking. Think bold customer names, color-coded priorities, or descriptions that wrap instead of getting cut off. This blog is meant to show you what’s possible and inspire you to make the most out of your Scheduler’s graphics. There is no single right answer for what to show. Every Scheduler has different information that matters at a glance, and now you can put exactly that front and center.These changes works from Universal UI version 2026.1.15 and are backwards compatible with all supported Platform versions. Refer to our other blogs for detailed explanations of other features of the Scheduler. How it worksScheduler activities have always been a single line of text. This can now be changed. Set the control type of the domain used by your title/tooltip column to HTML or multiline, and the activity renders whatever your view produces.The most direct approach is a CONCAT that builds the HTML around your data. Wrap a value in a tag and it comes out styled. Add a line break and the activity grows a second line automatically. There is no maximum height by default, so activities just stretch to fit.One thing worth knowing: that flexibility cuts both ways. An activity with no height limit will grow as tall as its content. If you want a ceiling, wrap everything in a div with a max-height style.Warning: an activity that uses HTML or multiline content ignores conditional layout for font size, strikethrough, and underline. Move that styling into the HTML itself.What you can buildHere are a few examples to get you started, each adding more information to an activity or tooltip.Status colorWe want to change the color depending on the status of a task. To do this we add an outer apply to our scheduler view that maps the various statuses of a task to specific color values. We can then use this column in our HTML to color specific items.outer apply (select case when s.task_status = 0 then &#039;#00bcd4&#039;                         when s.task_status = 1 then &#039;#2196f3&#039;                         when s.task_status = 2 then &#039;#009688&#039;                         when s.task_status = 3 then &#039;#ffeb3b&#039;                         when s.task_status = 4 then &#039;#8bc34a&#039;                         when s.task_status = 5 then &#039;#f44336&#039;                         else null                    end as activity_status_color ) ac A second line, Outlook styleWe start simple: a bold title, with the location underneath in italics. The activity reads like an Outlook appointment. This is useful if you want to display where an activity is being worked on.concat(&#039;&amp;lt;b&amp;gt;&#039;, s.title, &#039;&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;i&amp;gt;&#039;, s.location, &#039;&amp;lt;/i&amp;gt;&#039;)The &amp;lt;br /&amp;gt; starts the second line. &amp;lt;b&amp;gt; is used to make text bold, &amp;lt;i&amp;gt; is used to make text italic. Status indicatorsA status indicator is a small but powerful way to show the status of an activity by just using color. This makes it easy for a user to scan all activities on a scheduler and quickly look for outliers that have the color red, those need your attention. Here are a few examples of different styles. The background color of the &amp;lt;div&amp;gt; will change the color of the status indicator.Filled circleconcat(&#039;&amp;lt;div style=&quot;display: inline-flex; height: 16px;&quot;&amp;gt;    &amp;lt;div style=&quot;width: 14px; height: 14px; background: &#039;, s.activity_status_color ,&#039;;         border-radius: 50%; margin-top: 4px; margin-right: 5px;&quot;&amp;gt;&amp;lt;/div&amp;gt;    &amp;lt;span style=&quot;margin-top: 3px;&quot;&amp;gt;&#039;, s.title, &#039;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&#039;)Rounded squareconcat(&#039;&amp;lt;div style=&quot;display: inline-flex; height: 16px;&quot;&amp;gt;    &amp;lt;div style=&quot;width: 14px; height: 14px; background: &#039;, s.activity_status_color ,&#039;;         border-radius: 3px; margin-top: 4px; margin-right: 5px;&quot;&amp;gt;&amp;lt;/div&amp;gt;    &amp;lt;span style=&quot;margin-top: 3px;&quot;&amp;gt;&#039;, s.title, &#039;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&#039;)Lineconcat(&#039;&amp;lt;div style=&quot;display: inline-flex; height: 16px;&quot;&amp;gt;    &amp;lt;div style=&quot;width: 6px; height: 14px; background: &#039;, s.activity_status_color ,&#039;;         border-radius: 3px; margin-top: 4px; margin-right: 5px;&quot;&amp;gt;&amp;lt;/div&amp;gt;    &amp;lt;span style=&quot;margin-top: 3px;&quot;&amp;gt;&#039;, s.title, &#039;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&#039;)Outlined circleconcat(&#039;&amp;lt;div style=&quot;display: inline-flex; height: 16px;&quot;&amp;gt;    &amp;lt;div style=&quot;width: 14px; height: 14px; border-radius: 50%;         border: 3px solid &#039;, s.activity_status_color ,&#039;; margin-top: 4px; margin-right: 5px;&quot;&amp;gt;&amp;lt;/div&amp;gt;    &amp;lt;span style=&quot;margin-top: 3px;&quot;&amp;gt;&#039;, s.title, &#039;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&#039;) Pill labelsIf you really want to get the attention of a user, a pill is a good way to do this. In this first example we have a red pill with an exclamation mark. This will immediately flag this activity to a user as important to look at. Use these sparingly otherwise they lose their meaning. If everything is important, nothing is.You can put text inside a pill too. That works well for specific warnings or status labels, but the same pattern works just as well for showing which certificates an employee needs for a given activity. Change the background color and it becomes a general-purpose status indicator.concat(&#039;&amp;lt;div style=&quot;display: block;&quot;&amp;gt;&#039;, s.title,    &#039;&amp;lt;span class=&quot;tag&quot; style=&quot;display: inline-block; margin-left: 10px;     padding: 0px 7px; background-color: &#039;, s.activity_status_color ,&#039;; color: #fff;     border-radius: 20px;&quot;&amp;gt;&amp;lt;b&amp;gt;!&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&#039;) concat(&#039;&amp;lt;div style=&quot;display: block;&quot;&amp;gt;&#039;, s.title,    &#039;&amp;lt;span class=&quot;tag&quot; style=&quot;display: inline-block; margin-left: 10px;     padding: 0px 7px; background-color: &#039;, s.activity_status_color ,&#039;; color: #fff;     border-radius: 20px;&quot;&amp;gt;&amp;lt;b&amp;gt;&#039;, s.activity_status, &#039;&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&#039;) Progress barProgress bars can be a powerful way to display the status of a task as a percentage. This example allows you to set both the percentage and color of the bar. Change color value of the inner div to change the color of the progress bar.We think this is also a solid way to replace the percentage field from the Windows GUI Resource Scheduler when transitioning to the Universal UI.concat(s.title, &#039;&amp;lt;br /&amp;gt;&amp;lt;div style=&quot;width: 100%; height: 0.5rem;    background: #e0e0e0; border-radius:5px; margin-top: 3px;&quot;&amp;gt;    &amp;lt;div style=&quot;width: &#039;, s.activity_percentage_complete ,&#039;; height: 100%; background: &#039;, s.activity_status_color ,&#039;;     border-radius:5px; margin-top: 3px;&quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;) Activity cardsThis is an example of an activity card that shows a lot more information than the default activities. We start simple by just adding a warning above the title text. In the second example we go a step further and also show the employee the card is assigned to. If you wanted to you could even replace the initials shown with a small picture or avatar of the employee, making it easily scannable at a glance which employee is working on which activity.concat(&#039;&amp;lt;div style=&quot;flex: 1; padding: 2px 3px; display: flex; align-items: center;&quot;&amp;gt;                    &amp;lt;div style=&quot;flex: 1;&quot;&amp;gt;                        &amp;lt;div style=&quot;font-size: 12px; font-weight: 700; color: &#039;, s.activity_status_color ,&#039;; letter-spacing: 0.5px;&quot;&amp;gt;&#039;, s.activity_status ,&#039;&amp;lt;/div&amp;gt;                        &amp;lt;div&amp;gt;&#039;, s.title ,&#039;&amp;lt;/div&amp;gt;                    &amp;lt;/div&amp;gt;                &amp;lt;/div&amp;gt;&#039;)Activity card with an assigned employeeconcat(&#039;&amp;lt;div style=&quot;flex: 1; padding: 2px 3px; display: flex;    align-items: center;&quot;&amp;gt;&amp;lt;div style=&quot;flex: 1;&quot;&amp;gt;    &amp;lt;div style=&quot;font-size: 11px; font-weight: 700; color: &#039;, s.activity_status_color ,&#039;;         letter-spacing: 0.5px; margin-bottom: 4px;&quot;&amp;gt;&#039;, s.activity_status ,&#039;&amp;lt;/div&amp;gt;    &amp;lt;div style=&quot;font-size: 15px; font-weight: 700; color: #1a1a1a;         margin-bottom: 5px;&quot;&amp;gt;&#039;, s.title ,&#039;&amp;lt;/div&amp;gt;    &amp;lt;div style=&quot;display: flex; align-items: center;&quot;&amp;gt;        &amp;lt;div style=&quot;width: 22px; height: 22px; border-radius: 50%;             background: ; color: #fff; font-size: 10px;             font-weight: 600; display: flex; align-items: center;             justify-content: center; margin-right: 8px;&quot;&amp;gt;&#039;, s.assignee_initials ,&#039;&amp;lt;/div&amp;gt;        &amp;lt;span style=&quot;font-size: 13px; color: #4a4a4a;&quot;&amp;gt;&#039;, s.assignee_name ,&#039;&amp;lt;/span&amp;gt;    &amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;) Formatting works in tooltips tooThe same idea extends to the tooltip. Set the activity’s Tooltip column to a column that uses an HTML  or multiline control and the tooltip will also display this properly.This is allows you to split information, have just the essential information in the activity itself, and add more information / context in the tooltip of an activity. A good example of this could be a checklist. This shows the current status of all tasks that have to be completed before the activity as a whole can be completed.Because emoji’s are Unicode characters, you can also use them in your application, for instance in this case we are using them as icons to display whether a task has been completed.&#039;&amp;lt;h1&amp;gt;Checklist&amp;lt;/h1&amp;gt;&amp;amp;#x2705; Check Oil levels &amp;lt;br&amp;gt; &amp;amp;#10060; Fix engine warning light&amp;lt;br&amp;gt; &amp;amp;#10060; Check tire pressure&#039; What will your activities show?Share your examples in the comments below. I would love to see how you have made the Scheduler your own!</description>
            <category>News &amp; Blogs</category>
            <pubDate>Wed, 17 Jun 2026 15:30:34 +0200</pubDate>
        </item>
                <item>
            <title>Archive a model</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/archive-a-model-6847</link>
            <description>We have several TW models in our SF that are “proof of concept”.Some of these are put on hold for no one knows how long, and we might want to access them again in the future.Is there a way to archive them without the automated cleanup deleting them after an x period of time?We explored 2 routes:export model - but that only works if imported in the same version of the software, which we cannot guarantee. Might be in 5 years or so…	archive branch - the automated cleanup will delete the branch after x daysAre there any other methods we have missed?  </description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Wed, 17 Jun 2026 14:25:59 +0200</pubDate>
        </item>
                <item>
            <title>Log session action in Universal GUI</title>
            <link>https://community.thinkwisesoftware.com/ideas/log-session-action-in-universal-gui-6846</link>
            <description>Currently, in the IAM&#039;s session log for a user with GUI Type ‘Universal’ does not show any session actions.While there have been questions about it, I never found the idea, thus I created this one.For us this would be great to get an insight into which screens/tasks are being used (and which are not).</description>
            <category></category>
            <pubDate>Wed, 17 Jun 2026 13:42:58 +0200</pubDate>
        </item>
                <item>
            <title>Experience with external signature pads and the Thinkwise signature control?</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/experience-with-external-signature-pads-and-the-thinkwise-signature-control-6806</link>
            <description>Hi all,We are investigating the use of external signature pads together with the standard Thinkwise signature control (UI/domain signature field).Our use-case:	Retail/store environment			Browser-based usage			User clicks the signature field in Thinkwise			Customer signs on an external signature pad			Signature should be captured by the existing Thinkwise signature control	We are specifically trying to avoid:	Heavy custom integrations			Browser plugins/extensions where possible			Custom Thinkwise components	Questions:	Has anyone successfully tested external signature pads with the standard Thinkwise signature control?			Which devices/models worked well?			Did the device work as standard HID/mouse/stylus input, or did it require SDK/software integration?	Thanks!</description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Tue, 16 Jun 2026 11:08:22 +0200</pubDate>
        </item>
                <item>
            <title>new lines in message lines</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/new-lines-in-message-lines-6839</link>
            <description>Hi,I’m in the process of testing our Windows GUI apps in the Universal GUI and I noticed that messages seem to display differently: The text is done thru the translation: How can I fix this?</description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Tue, 16 Jun 2026 10:39:49 +0200</pubDate>
        </item>
                <item>
            <title>Check connection and IAM version as first action</title>
            <link>https://community.thinkwisesoftware.com/ideas/check-connection-and-iam-version-as-first-action-6844</link>
            <description>​ Can check connection an version be set as first action in the Sync IAM process?  And in addition to this, more information when the action fails, would be appreciated too. ​ ​</description>
            <category></category>
            <pubDate>Mon, 15 Jun 2026 17:34:28 +0200</pubDate>
        </item>
                <item>
            <title>Thinkwise Platform 2026.2</title>
            <link>https://community.thinkwisesoftware.com/product-updates/thinkwise-platform-2026-2-6842</link>
            <description>This release strengthens the Manufacturing Execution System (MES) capabilities of the Thinkwise Platform with the introduction of MQTT broker capabilities. The MQTT protocol is the de facto Industry 4.0 standard for real-time interaction with machines and sensors, allowing customers to use the Thinkwise Platform for both ERP and MES capabilities in a single solution.Flexibility in deployment options and database technologies is core to our proposition. In preparation for IAM support on Db2 and PostgreSQL, it is now possible to link multiple RDBMS types to a single Software Factory model. Customers can use this to deploy their application on different database platforms or to migrate to PostgreSQL, for which Enrichments support is planned in a later release. In addition, Custom components can now be uploaded directly in the Software Factory, simplifying their deployment, especially in container environments.The Scheduler now offers improved configurability, including a new datetime condition type for cell colors, the ability to display day names and HTML support for activities.Four new IAM user management process actions are now available to create and update users, and assign user groups in IAM directly from an end application. This allows you to manage IAM users without needing to access the IAM, which can be useful for scenarios such as onboarding new employees.While not strictly related to this Platform release, we would like to highlight that the Universal UI now better supports Offline field service scenarios with the introduction of offline data and table tasks.The Software Factory now also supports working in different branches across different browser tabs.A full overview of all the release notes of the Thinkwise Platform 2026.2 is available now! ContentsFixed in Universal UI and Indicium (2026.2.10)	Security fix for HTML control in Universal UI		Indicium		Universal UI	 Fixed in Universal UI and Indicium (2026.2.10)The Indicium and Universal UI 2026.2.10 fixes below are backwards compatible with previous Thinkwise Platform versions. Therefore, these fixes are not part of the release notes for Thinkwise Platform 2026.2.  For Indicium and Universal UI version 2026.2.10, the following breaking changes apply:Thinkwise Platform versions older than 2024.3 are no longer supported.	Indicium now requires the .NET 10 runtime to be installed.	The Slow query log no longer automatically includes data values in log entries.Refer to the breaking section in the Thinkwise Platform 2026.2 release notes for more details. Security fix for HTML control in Universal UISeveral cross-site scripting (XSS) vulnerabilities were identified in TinyMCE, the library that powers the HTML editor in Universal UI. This vulnerability affected subjects including an HTML control field that is in edit mode. An attacker would then have to be able to influence the data displayed in that HTML editor. We have applied the necessary patches to mitigate these vulnerabilities. IndiciumFixed an issue where the Mass update endpoint did not work as expected in a specific context.Universal UIIn a process flow, logging in with the OAuth user login connector without a successor action now closes the pop-up when the login is successful.	Previously, in a cube, any dimension or category field with the width set below the minimum of 50px caused the custom widths of all fields to be reset to their defaults. This has been fixed.	In a cube view with a datetime domain as a row category and the timezone set to Show as stored, expanding a datetime row produced a &#039;Bad Request&#039; error. This was caused by a missing timezone identifier in the request. This has been fixed.	When auto-refresh with change detection was active, the staged resource of a detail was discarded on every refresh, even when there were no changes. This caused the detail to no longer be editable. This has been fixed.	When a tsf_send_message was called in a Change detection control procedure, the message notification appeared twice. This has been fixed.	When adding or copying a row in a default-editable grid, selecting a checkbox no longer saves the row immediately. The row now stays in add or copy mode until the user selects Save.	When Model Insight was enabled, focus behavior in editable form controls was inconsistent. Controls could receive focus unexpectedly, receive focus twice, or be difficult to focus in the intended state. This has been fixed for radio buttons, signature controls, HTML controls, and form control wrappers, resulting in more predictable keyboard navigation while Model Insight is active.	When using multiple detailed time scales at the same time (for example, Month + Day + Hour + Minute), the Scheduler could show collapsed hour headers and missing minute labels. This has been fixed. If the configuration exceeds the rendering limit, the Scheduler now automatically adjusts by widening or removing the finest time scale. A warning is shown in Developer mode.	When Labels for lowest timescale is disabled and the second lowest timescale is hours with the lowest being minutes, minute timescale slots are now displayed as virtual slots. Virtual slots are not directly visible, but events can still be dropped, moved, and resized per minute. For more information, see Scheduler views and timescales.</description>
            <category></category>
            <pubDate>Mon, 15 Jun 2026 17:14:01 +0200</pubDate>
        </item>
                <item>
            <title>Set filter condition &quot;IN&quot;  as default filter condition</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/set-filter-condition-in-as-default-filter-condition-6843</link>
            <description>Is it possible to set the default Filter Condition of a column to the “IN” condition?I am working on 2025.3 and do not see this option. Next to this, the docs do not provide any information about this feature as well. If this is not possible, I would advise having this implemented asap. </description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Mon, 15 Jun 2026 15:14:51 +0200</pubDate>
        </item>
                <item>
            <title>User preferences custom component</title>
            <link>https://community.thinkwisesoftware.com/ideas/user-preferences-custom-component-6841</link>
            <description>Sending all user preferences to a custom component not only theme, language, notation of fields for use regarding the link below (theme is already send to the custom component) extend the other settings to the custom component.Styling of custom components in Light and Dark mode | Thinkwise Community</description>
            <category></category>
            <pubDate>Mon, 15 Jun 2026 08:56:35 +0200</pubDate>
        </item>
                <item>
            <title>🚀 Platform improvements for week 24, 2026</title>
            <link>https://community.thinkwisesoftware.com/product-updates/platform-improvements-for-week-24-2026-6840</link>
            <description>Hi everyone!We’ve released the following important platform improvements this week: SF 2026.120260611 - Fix context output for unit test enrichment			When generating a unit test with AI for a context, the output was not processed correctly. This issue has been fixed.			 IAM 2026.1.1520260612 - Switch the domain used for default value of process variable			With the implementation of the Multi-RDBMS feature, the domain used by the Default value field in Process variable was changed. This caused the column to only hold a maximum of 200 characters, which had the potential of supplying a stripped value to its process flow. This has been resolved.						If you are already on platform version 2026.1.15, and have any process variables that have a default value that exceeds 200 characters, you will need to synchronize to IAM again after installing this hotfix.						All upgrades to or past 2026.1.15 will be unaffected.</description>
            <category></category>
            <pubDate>Fri, 12 Jun 2026 16:21:55 +0200</pubDate>
        </item>
                <item>
            <title>What does one need to do to have Checkbox (BIT) values go lower case for use in Web connector body?</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/what-does-one-need-to-do-to-have-checkbox-bit-values-go-lower-case-for-use-in-web-connector-body-6830</link>
            <description>Struggling a lot to get a Web connector call to work, even though it gave a 201 response status code.We have a Checkbox with a BIT data type in use and have this value used in the body of a call. In this example to set the two factor authentication type to “Password and TOTP token” and if one want to enable/disable “Allow fallback to em-mail”.It turns out that the boolean value is starting with a capital letter (True):{ &quot;two_factor_authentication_type&quot;: 3, &quot;allow_fallback_to_email&quot;: True }After a test with setting the body value manually and not through a flow parameter it does actually change the requested data when it is lower case (true):{ &quot;two_factor_authentication_type&quot;: 3, &quot;allow_fallback_to_email&quot;: true }What do I need to do to have the parameter not be starting with a capital letter?</description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Fri, 12 Jun 2026 10:11:22 +0200</pubDate>
        </item>
                <item>
            <title>Option to convert BIT to true Boolean for Web connector parameter</title>
            <link>https://community.thinkwisesoftware.com/ideas/option-to-convert-bit-to-true-boolean-for-web-connector-parameter-6835</link>
            <description>When using a BIT data type in your product and most likely that would have a Checkbox control, it will use a capital letter as a start when you use this value as an input for the web connector:Example:{&quot;allow_fallback_to_email&quot;: True}This will not work as lower case is expected:{&quot;allow_fallback_to_email&quot;: true}The work around is to have something in between to convert this to a string value and then use in the web connector. I find this solution a bit much for the intended goal.Opting for a feature that enables a BIT data type to be converted to a true Boolean. How or where to have this setting (or perhaps even default behaviour) I’ll leave to the developers of Thinkwise themselves. </description>
            <category></category>
            <pubDate>Fri, 12 Jun 2026 10:10:07 +0200</pubDate>
        </item>
                <item>
            <title>Translation parameters in Universal GUI grid</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/translation-parameters-in-universal-gui-grid-6720</link>
            <description>Hello,I have a quick question about the recent release notes for the 2026.1.13 platform version.The new parameter in translations feature seems very useful, and we have use cases where this would be useful in grids. However, the release notes only mention tasks, reports, and forms. Is this feature also supported for grid column names? Or is this something planned for the future?Thanks in advance! </description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Thu, 11 Jun 2026 16:42:39 +0200</pubDate>
        </item>
                <item>
            <title>Improve Model Insight to same level or better as Windows GUI&#039;s &quot;Path Location&quot;</title>
            <link>https://community.thinkwisesoftware.com/ideas/improve-model-insight-to-same-level-or-better-as-windows-gui-s-path-location-5016</link>
            <description>During development I regularly use the Windows GUI to find relevant information regarding screens, columns, parameters, etc. with the Alt + F1 combination (Path Location). Even though the Universal GUI has “Model Insight”, it is lacking many things the other option is giving.I think it is not the intent of ThinkWise to keep the need for using a different GUI to make your Universal GUI product complete. This idea is to make the “Model Insight” improve its usability and hopefully remove the need for a fall back GUI.Current issues or features missing that I am aware of:References more than 1 level deep, do still show the level 1 reference;	References more than 1 level deep, do not show table / variant information;	Unable to get info when a grid has no records to click on;	No context information (Detail, Master, etc.);	No Tab Control (What Detail group is being used);	No Domain information;	No Task name is mentioned, only the parameter as “Column”;	No Report name is mentioned, only the parameter as “Column”;	Lookup popups give no information, it still show the column/parameter of what it is a lookup on;	No Translations.</description>
            <category></category>
            <pubDate>Thu, 11 Jun 2026 10:12:03 +0200</pubDate>
        </item>
                <item>
            <title>Select all records including other pages (Universal)</title>
            <link>https://community.thinkwisesoftware.com/ideas/select-all-records-including-other-pages-universal-4777</link>
            <description>In the Web GUI it was possible to use “Select all” and when activating a task it would ask if you wanted the records on the page or all records of all pages. Please add this also in the Universal and in addition make it work with the Multi Select XML parameter, as this popup did not seem to happen in that case.</description>
            <category></category>
            <pubDate>Thu, 11 Jun 2026 10:11:23 +0200</pubDate>
        </item>
                <item>
            <title>Change to TCP - support</title>
            <link>https://community.thinkwisesoftware.com/ideas/change-to-tcp-support-6834</link>
            <description>It would be very helpful ifyou can always add info to a ticket, also when it is processing (e.g. when you want to add some info / inform to close ticket). Now you don&#039;t have this option (buttons are disabled)	to assess a solution, there is only an option to add comment in case you don&#039;t accept. But when you accept, it might be useful to add info (got give extra feedback to TW)</description>
            <category></category>
            <pubDate>Thu, 11 Jun 2026 09:44:06 +0200</pubDate>
        </item>
                <item>
            <title>New row selected after saving by using the + button</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/new-row-selected-after-saving-by-using-the-button-6822</link>
            <description>Hi all,I&#039;m not sure whether this is a new idea, but I haven&#039;t found any related community posts yet.I have a client using UGUI (2025.3) for order entry. A significant amount of their order entry is done in succession using the + button. Users create a row, then click + again to add the next row rather than clicking Save between entries. The challenge is that users still want to see the newly created row immediately after adding it. Currently, the grid only selects and scrolls to the new row after a Save action, not when a new row is created using +. As a result, newly added rows at the bottom of the grid may not be visible until their final save.From the users&#039; perspective, this slows down the order entry process because they cannot quickly verify that each line was added successfully before moving on to the next one. I imagine there are other scenarios where users repeatedly use the + button without saving between entries, so this behavior may not be unique to this client.Would it make sense for the grid to automatically select and scroll to the newly created row whenever the + button is used, in the same way when the save button is used? Has anyone else encountered this workflow or found an alternative solution?  </description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Wed, 10 Jun 2026 11:21:33 +0200</pubDate>
        </item>
                <item>
            <title>Look-up dropdown - indication when there are more options</title>
            <link>https://community.thinkwisesoftware.com/ideas/look-up-dropdown-indication-when-there-are-more-options-6654</link>
            <description>When a look-up control is set to suggestion, the dropdown of the lookup only shows the first 8 results. But in fact there could be a lot more results. This is not clear to the user. Please add a visual indication for the user when there are more results. Preferably when clicking on the indication, it opens the lookup popup.  </description>
            <category></category>
            <pubDate>Tue, 09 Jun 2026 18:45:44 +0200</pubDate>
        </item>
                <item>
            <title>Increase performance by reducing queries for details</title>
            <link>https://community.thinkwisesoftware.com/ideas/increase-performance-by-reducing-queries-for-details-6833</link>
            <description>When you have a main subject with a detail page, I noticed the GUI executes the following query on each row selection in preparation for loading the detail (GUI &amp;amp; Indicium version 2026.1.15). SELECT t1.1REF-COL1], t1.1REF-COL2]FROM MMAIN-SUBJECT] t1WHERE t1.1PK1] = @p0 AND t1.1PK2] = @p1When you have 4 details, it executes 4 of these queries, even when the reference columns are the same. When this is executed on a table, the cost of this query is insignificant since it can always use the primary key index to retrieve exactly one record. But when the main subject is a view, this could be a different story depending on the view code. Could this behaviour be improved so it doesn’t have to access the main subject so many times? It seems that it should at least be possible to gather all reference columns for all references with one query at once. But it would be even better if it could use the data from when the main subject was loaded itself. </description>
            <category></category>
            <pubDate>Tue, 09 Jun 2026 15:40:50 +0200</pubDate>
        </item>
                <item>
            <title>User preferences - set Start Objects in Universal</title>
            <link>https://community.thinkwisesoftware.com/ideas/user-preferences-set-start-objects-in-universal-5955</link>
            <description>Can the configuration under User Preferences to set Start Objects also be made available in the Universal GUI, as it is in the Windows GUI?  </description>
            <category></category>
            <pubDate>Tue, 09 Jun 2026 10:30:28 +0200</pubDate>
        </item>
                <item>
            <title>Support a custom html mount for Universal GUI container</title>
            <link>https://community.thinkwisesoftware.com/ideas/support-a-custom-html-mount-for-universal-gui-container-6507</link>
            <description>As explained in Adding extra files to Universal GUI container | Thinkwise Community, the current Universal GUI container doesn’t support adding custom html files (like Screen components | Thinkwise Documentation or Upload multiple files using the Universal GUI | Thinkwise Community). This makes it quite cumbersome to add custom components to our applications when using containers.Please add the possibility to mount a volume to /etc/universal/custom/ for html files (or include html files in the assets mount).</description>
            <category></category>
            <pubDate>Tue, 09 Jun 2026 10:25:18 +0200</pubDate>
        </item>
                <item>
            <title>Change Detection with standard trace columns and UTC/local time mismatch</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/change-detection-with-standard-trace-columns-and-utc-local-time-mismatch-6823</link>
            <description>Hi everyone,We are using Auto Refresh with Change Detection on a view in our Thinkwise application.Our Change Detection query is based on the standard trace columns, for example:where update_date_time &amp;gt; @last_refresh_utcDuring testing we noticed that the view was refreshing every refresh interval, even when there were no actual changes.After some investigation we found the following:	@last_refresh_utc is supplied in UTC by the GUI/Application Tier.			Our insert_date_time and update_date_time trace columns contain local SQL Server time.			On our environment the difference is currently +2 hours (CEST).	For example:select    sysutcdatetime() as utc_time,    getdate() as local_time,    max(update_date_time) as latest_updatefrom stage_sales_order;Result:utc_time      = 2026-06-03 13:41local_time    = 2026-06-03 15:43latest_update = 2026-06-03 15:43Because of this, Change Detection keeps finding records where:update_date_time &amp;gt; @last_refresh_utceven though no new changes have occurred.As a test, we modified the Change Detection query to compensate for the timezone difference:dateadd(hour, -2, update_date_time) &amp;gt; @last_refresh_utcAfter doing so, the continuous refreshing stopped and Change Detection behaved as expected.My question is:What is the recommended Thinkwise approach in this situation?	Is there a built-in way to compare local database timestamps with @last_refresh_utc?			Are there best practices for using Change Detection together with the standard trace columns?	Thanks in advance.</description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Mon, 08 Jun 2026 15:53:07 +0200</pubDate>
        </item>
                <item>
            <title>Resource Scheduler (Windows GUI) – how to add a second per-appointment action besides double-click?</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/resource-scheduler-windows-gui-how-to-add-a-second-per-appointment-action-besides-double-click-6821</link>
            <description>I have a Resource Scheduler in the Windows GUI. Double-clicking an appointment already runs a table task that edits the block (change workshift type and/or time), which works well.I now want a second, separate action on an individual appointment: opening a document that shows the appointment configuration specific to that appointment (keyed on task_id).What I&#039;ve found so far:Right-click / context menu doesn&#039;t seem to surface table tasks on appointment blocks. (This would be the preferred option)	The scheduler only supports a fixed set of trigger actions (refresh after execute, double-click appointment, resize, drop, delete, double-click time cell, drop external row), and double-click is already in use for the edit.My current plan is to repoint the double-click at a process flow that starts with a chooser step and branches to either the edit task or an &quot;open appointment configuration&quot; task, both receiving the auto-filled task_id. The downside is that editing then takes an extra click.Questions:1. Is there any native way to add a second per-appointment action (e.g. a context menu) to the Windows GUI Resource Scheduler that I&#039;m missing?2. Is the process-flow-with-chooser the recommended pattern here, or is there a cleaner approach?</description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Mon, 08 Jun 2026 13:59:52 +0200</pubDate>
        </item>
                <item>
            <title>Multi line support for Label Control</title>
            <link>https://community.thinkwisesoftware.com/ideas/multi-line-support-for-label-control-6832</link>
            <description>We miss the possibility of making Label Control columns multiline.A typical scenario, is a dynamic questionnaire, like belowWe worked around this by means of a read only Multi line text control, which is not ideal  </description>
            <category></category>
            <pubDate>Mon, 08 Jun 2026 13:23:57 +0200</pubDate>
        </item>
                <item>
            <title>Conditional Formatting on Label Control</title>
            <link>https://community.thinkwisesoftware.com/ideas/conditional-formatting-on-label-control-6831</link>
            <description>We want to configure conditional formatting on a field that is set as Label ControlEspecially for use in FormLists</description>
            <category></category>
            <pubDate>Mon, 08 Jun 2026 13:14:41 +0200</pubDate>
        </item>
                <item>
            <title>Make &quot;Code difference&quot; task always available for conflicts on Control Procedure with same name</title>
            <link>https://community.thinkwisesoftware.com/ideas/make-code-difference-task-always-available-for-conflicts-on-control-procedure-with-same-name-5641</link>
            <description>Currently task “Code difference” has been disabled for Control Procedures with same name, same baseline, updated in both branches.As we have a lot of these situations it would be very helpful if we easily could compare both code-files and make decision.So please always enable the task in case the object-type and object-name is equal.</description>
            <category></category>
            <pubDate>Mon, 08 Jun 2026 10:55:33 +0200</pubDate>
        </item>
                <item>
            <title>Show barcode keyboard button</title>
            <link>https://community.thinkwisesoftware.com/ideas/show-barcode-keyboard-button-6281</link>
            <description>We have deployed an application for use on a ZEBRA scanner device.The application functions smoothly and intuitively, with one exception.It is designed around barcode scanning, and in over 95% of cases, the process can be completed simply by scanning barcodes. To support this workflow, the SuppressBarcodeKeyboard setting is enabled (Yes), which hides the on-screen keyboard.However, this has a side effect: users are unable to manually enter codes using the keyboard. This becomes problematic when barcodes are either inaccessible to the scanner or damaged.To address this, we would like to add an action button within the barcode control that allows users to activate the keyboard when needed.Something like this:We hope this is possible.Alternatively, is there another workaround you would recommend?  </description>
            <category></category>
            <pubDate>Mon, 08 Jun 2026 09:48:53 +0200</pubDate>
        </item>
                <item>
            <title>Multiline control: show action button in read mode</title>
            <link>https://community.thinkwisesoftware.com/ideas/multiline-control-show-action-button-in-read-mode-6829</link>
            <description>Please let the multiline line control also show the magnifier action button in a read-mode grid when ‘Show action button’ is set to ‘Always’ for the domain. Currently the action button is only shown in edit mode.</description>
            <category></category>
            <pubDate>Mon, 08 Jun 2026 09:15:43 +0200</pubDate>
        </item>
                <item>
            <title>🚀 Platform improvements for week 23, 2026</title>
            <link>https://community.thinkwisesoftware.com/product-updates/platform-improvements-for-week-23-2026-6828</link>
            <description>Hi everyone!We’ve released the following platform improvements this week: IAM 2026.1.15, 2026.1, 2025.3, 2025.2, 2025.1, 2024.320260604 - Fully prevent overlapping system flow instances			When many system flows have schedules that start at the same time, the database may not be able to insert every single instance quickly enough. This results in a pile-up of waiting instances. Once the database can write away these waiting instances, they have already passed the check to prevent overlapping instances, meaning overlapping instances can still occur. Whilst very unlikely to occur, when it does occur, it can disrupt the processes inside your applications. We have ensured that system flows no longer overlap if they are not allowed to.						Note: It is recommended to have as few system flows as possible, with a schedule that runs more frequently than every 5 seconds.		 			SF 2026.1.1520260604 - Always return a primary RDBMS type for a given branch			In case the Indicium pool user performs actions where the primary RDBMS type of the user would be read, the underlying function would return NULL if the pool user was not a user inside the Software Factory. This has been fixed.					20260604 - Flag objects of modified tables in smart code generation			When performing a Smart upgrade, the flagging of modified object could flag more objects than were necessary. This has been fixed.					20260608 - Make Create table variant task available			Due to an oversight, the Create table variant task was unresponsive. This has been fixed.</description>
            <category></category>
            <pubDate>Fri, 05 Jun 2026 15:21:07 +0200</pubDate>
        </item>
                <item>
            <title>Excluding quick filter</title>
            <link>https://community.thinkwisesoftware.com/ideas/excluding-quick-filter-6827</link>
            <description>Could an excluding quick filter be made that works similar to the normal quick filter but instead of filtering on the selected value, it excludes the selected value?An example use case is when you go through a list and want to exclude each type that you have viewed until your list is empty. For example when going through the merge impact in the SF.</description>
            <category></category>
            <pubDate>Fri, 05 Jun 2026 10:16:09 +0200</pubDate>
        </item>
                <item>
            <title>TSFReportMailer replacement for Universal</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/tsfreportmailer-replacement-for-universal-6820</link>
            <description>Hi, We have implemented MS Graph API solution to send emails from the ThinkWise application to internal and/or external contacts, including attachments.What we face now is that users has to type the full email-address(es) manually in case they would send it to extra mailboxes. Outlook has autosuggest/ auto complete based on your contacts.Are there suggestions to make this more easy to do this in the ThinkWise form / fields?Thanks in advance.</description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Fri, 05 Jun 2026 09:03:03 +0200</pubDate>
        </item>
                <item>
            <title>Migrating from the Resource Scheduler to the Formalized Scheduler</title>
            <link>https://community.thinkwisesoftware.com/news-blogs-21/migrating-from-the-resource-scheduler-to-the-formalized-scheduler-6390</link>
            <description>Whether you are managing project planning, production scheduling, or resource allocation, the Scheduler component offers a clear and visual way to display Activities and Resources along a timeline.With the transition from the Windows/Web GUI to the Universal UI, the extender-based Resource Scheduler required modernization. Since extenders are no longer supported in the Universal UI, we have integrated the Resource Scheduler’s functionality directly into the Thinkwise Platform, resulting in a more robust and maintainable solution.This blog will guide you through the key differences between the legacy Resource Scheduler and the formalized Scheduler, and provide practical steps to ensure a smooth transition.Scheduler setupThis blog focuses on the transition from the Resource Scheduler to the formalized Scheduler. For detailed information on setting up a Scheduler, please refer to the two blogs below, which go deeper into data modelling and interactivity. Running the Windows GUI and Universal UI in parallelIf you are running the Windows GUI and the Universal UI in parallel for a short while, you will need to keep and maintain both the Resource Scheduler extender and the formalized Universal UI Scheduler. This is necessary because the Windows GUI only supports the extender whilst the Universal UI only supports the formalized Scheduler component.Because they work fundamentally differently, we suggest creating a new view for the formalized Scheduler. The code for this view can be based on your existing views, but having them separate allows you to keep the Resource Scheduler views exactly as they were, preventing potential regression. At the same time, you can optimize the new view to meet the specific requirements of the formalized Scheduler without impacting Windows GUI users.Depending on your specific application, you might be able to reuse some of the tasks or logic directly between the two schedulers. You would have to determine this on a case-by-case basis.To help your users differentiate between the two schedulers, we recommend using separate Windows and Universal menus to only show the relevant scheduler on each platform. Alternatively, you could indicate in the subject translation which platform each scheduler is designed for.During the short parallel running phase, you will have to make changes to both the extender and the Scheduler component to ensure that they work the same way for all users. When you have completed your migration from the Windows GUI to the Universal UI, you can fully disable the Resource Scheduler extender and remove the associated code from your model. Data modelThe most significant change in the new Scheduler is the data model. The Resource Scheduler used multiple Subjects: a Resource Subject, an Activity Subject, and an optional Worktime Subject. The formalized Scheduler, however, uses a single Subject. If you are migrating from the Extender, you will need to combine these Subjects into one.Note that each Resource can now produce multiple rows depending on the number of associated Activities. Ensure that parameters such as Resource name and color remain consistent across Activity records. The data returned by this new Scheduler view might look like:In this example, columns marked in blue belong to the Resource, and those marked in red belong to the Activity. As you can see, the columns associated with the Resource will have the same Resource data for every associated Activity, this is necessary for the Universal UI to properly generate the Resource Groupings / Columns. Resource ColumnsIn the Resource Scheduler, any columns included in the Resource View that were not hidden would be displayed in the Scheduler as read-only columns next to the Resource. In version 2025.3 of the Thinkwise Platform, Resource Columns have been added to the formalized Scheduler. To implement this you need to add these columns to your Scheduler view.In the Scheduler setup screen, go to Resource Columns, and enable the columns you want to display. You can also edit the width of a resource column. It is no longer necessary to do this in the Grid component of the Subject.PaginationUniversal UI uses pagination to load data only when it is needed. When setting up a Scheduler, you should disable pagination to make sure that all data is loaded into the component.To do this, go to your subject and set the ‘Max no. of records’ and ‘Page size’ fields to 0. Performance considerationsThe component used to implement the Scheduler in the Universal UI can become slow when displaying a large number of Activities and Resources (1,000+) simultaneously. This is due to the component not supporting virtualized rendering. This is expected to be implemented by the supplier, at the moment we don’t have an exact timeframe for when this will be done.For the time being we recommend limiting the amount of data loaded at one time by using (Pre)Filters to minimize the dataset. InteractivityThe next step is to migrate all interactivity options from the Resource Scheduler, such as dragging and dropping Activities, creating new ones by clicking on an empty time cell, and applying Conditional Formatting.For a guide on how to set this up, I again suggest reading the two previous Scheduler blogs, they explain how to implement all of these features. In this chapter we will dive deeper into some of the more specific features and settings that the Resource Scheduler supported. Not all features of the Resource Scheduler have been implemented the same way, but most can be emulated. Go to dateIn the Resource Scheduler the user had the ability to change the date by using a date picker dropdown. In the formalized Scheduler this dropdown is not available, instead you can emulate this by using tasks. This allows the user to go a specific date, or you can set up multiple tasks that jump to specific points in time that are relevant to the user, for example: go to next week or go to the next day with unplanned activities.Specific dateTo allow users to go to a specific date, create a task that lets them select a date. Then, build a process flow that starts with this task, stores the selected date in a variable, and add an Activate Scheduler action using this variable as an input parameter. This setup enables users to navigate directly to a chosen date.Previous / Next weekIf you have a Scheduler where you always want to look ahead a set amount of time, such as next week, this is also possible. This task is created the same way as the previous example, but instead of allowing the user to select a date, we set the date variable to next week, and hide the task parameter. We then give it a default query value that adds a week to the current date. Expand / Collapse allA useful but somewhat hidden feature of the Resource Scheduler was the ability to expand and collapse all Resources. In the Universal UI, these options have been integrated into the Action Bar with version 2025.2 of the Thinkwise Platform. Activity colorsThe formalized Scheduler does not directly support assigning colors through a column value. Instead, Activities can be colored using conditional formatting.Applications sometimes used this feature to allow users to customize the color of an Activity. If you want to recreate this functionality you can setup a domain with all possible color values to be selected by the user and then create conditional formatting for every option.Zoom levelThe zoom level slider is no longer supported in the formalized Scheduler. Instead, we recommend creating multiple Scheduler views to emulate this functionality. This approach has the advantage of saving views that can be easily recalled by any user. With the zoom slider it was only possible to set the initial zoom level. PercentageActivities will no longer support the display of a percentage line at the bottom of the activity. Instead we recommend including a percentage in the activity title or to use conditional formatting to inform the user. Hidden daysThe Resource Scheduler allowed for the option to hide specific days in a Scheduler. This is also implemented in the Formalized Scheduler since the 2026.1 release. You have the option to set this per Scheduler view, allowing for more flexibility than ever before. Working hoursThe Resource Scheduler also had the ability to hide specific hours, which was useful, for example, to only display working hours and hide unnecessary time cells. Per release 2026.1 we have implemented the ability to set a min- and max hour range per Scheduler View. This allows you for example to only display working hours from 06:00 till 18:00.It does not have the ability to hide specific hours – such as a lunch break in the middle of the day. If you do want to show this, we recommend either using conditional formatting of the time cell or creating a ‘lunch’ Activity for all Resources. WorktimeThe Resource Scheduler had built-in worktime functionality to block off unavailable periods per resource. The Formalized Scheduler does not have an equivalent setting, but you can achieve the same result through data. The recommended approach is to add explicit &quot;not available&quot; or &quot;away&quot; activities for each resource during periods when they cannot be scheduled. These activities appear in the Scheduler just like any other, and can be styled distinctly, for example in a muted color using conditional layout on the activity, so users immediately recognize them.The real control then happens in your business logic. In the handler/default for your add activity task, check whether the selected time slot overlaps with a &quot;not available&quot; activity for that resource. If it does, block the action and return a clear message to the user. Active header colorThe active header color can be recreated by using the following piece of custom CSS:.fc-slot-today .fc-timeline-slot-frame {    background-color: #69b2f1;} Weekend colorIf you want to color weekend days with a different time cell background color this can be achieved using the following piece of custom CSS:td.fc-timeline-slot.fc-timeline-slot-lane.fc-day.fc-day-sat {    background-color: #e3dfdf;}td.fc-timeline-slot.fc-timeline-slot-lane.fc-day.fc-day-sun {    background-color: #fbfbfb;}td .fc-timeline-slot .fc-timeline-slot-lane .fc-timeline-slot-major .fc-slot .fc-slot-sat {    background-color: #fbfbfb;}td .fc-timeline-slot .fc-timeline-slot-lane .fc-timeline-slot-major .fc-slot .fc-slot-sun {    background-color: #fbfbfb;}td.fc-timeline-slot.fc-timeline-slot-lane.fc-timeline-slot-major.fc-slot.fc-slot-sun.fc-slot-past {    background-color: #fbfbfb;}td.fc-timeline-slot.fc-timeline-slot-lane.fc-timeline-slot-major.fc-slot.fc-slot-sat.fc-slot-past {    background-color: #fbfbfb;} td.fc-timeline-slot.fc-timeline-slot-lane.fc-timeline-slot-major.fc-slot.fc-slot-sun.fc-slot-future {    background-color: #fbfbfb;}td.fc-timeline-slot.fc-timeline-slot-lane.fc-timeline-slot-major.fc-slot.fc-slot-sat.fc-slot-future {    background-color: #fbfbfb;} .fc-timeline-slot .fc-timeline-slot-lane .fc-timeline-slot-major .fc-slot .fc-slot-sat {    background-color: #fbfbfb;}.fc-timeline-slot .fc-timeline-slot-lane .fc-timeline-slot-major .fc-slot .fc-slot-sun {    background-color: #fbfbfb;} Future plansFurther development of the Scheduler will be driven by customer needs. If there are specific functionalities you require to transition to the formalized Scheduler, please contact us.</description>
            <category>News &amp; Blogs</category>
            <pubDate>Fri, 05 Jun 2026 08:41:10 +0200</pubDate>
        </item>
                <item>
            <title>Scheduler cell color for weekend days</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/scheduler-cell-color-for-weekend-days-6826</link>
            <description>To make navigation in the scheduler a bit more clear, it’s preferable to give the weekend days a background color.So I thought I could achieve this with the cell colors. I added a column in my view wich sets the field week_day to the value of the in the month if it’s a saturdaty or sunday. So for june 6 it will hold a 6 and for june 13 (also a saturday) it holds 13.I add a cell color of the type time scale.Time scale day, condition equals to column week_dag (Which is the column in my view holding the day of the month)But… it’s not working.How can I achieve this?</description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Thu, 04 Jun 2026 16:46:11 +0200</pubDate>
        </item>
                <item>
            <title>Layout Process Flow Monitor</title>
            <link>https://community.thinkwisesoftware.com/ideas/layout-process-flow-monitor-6364</link>
            <description>The new debug center looks great, but we would like to see some adjustments to the layout of the process flow monitor so that it can better assist us in resolving errors. Resolving issues in Process Flows is often very time-consuming. The process flow monitor we had in the Windows GUI wasn’t ideal either, but it still often allowed us to locate issues more effectively.We hope it is not to much effort to come to a layout more like this...Key focus points:	Make the most efficient use of screen space wherever possible, assuming that nearly all developers have at least an HD display			Indicators showing which actions were not successful 			Duration of actions in milliseconds, highlight slow ones			Type of action with symbol			Display associated database event(s) per action as well	 </description>
            <category></category>
            <pubDate>Thu, 04 Jun 2026 13:42:53 +0200</pubDate>
        </item>
                <item>
            <title>Allow users to change their timezone</title>
            <link>https://community.thinkwisesoftware.com/ideas/allow-users-to-change-their-timezone-6585</link>
            <description>Currently as a user you can change several settings related to how you would like to use an application. Which setting you can set, is configured through IAM.I am missing 1 important setting in this. A setting to change the Timezone I’m using. Since all other settings related to your location (date format, language, number format) can be changed through this window, I would expect that the Timezone can also be changed from within this window.</description>
            <category></category>
            <pubDate>Thu, 04 Jun 2026 11:53:56 +0200</pubDate>
        </item>
                <item>
            <title>Universal: Make combo value prefer exact match</title>
            <link>https://community.thinkwisesoftware.com/ideas/universal-make-combo-value-prefer-exact-match-6717</link>
            <description>When pasting a value in a combo box, it selects the first value that partly matches the text. This is very annoying when you pasted the exact value that you want to enter. It forces you to manually scroll to the right record and select it or use the lookup window.If there is an exact match, it should prefer that over the first matching value.For example:  </description>
            <category></category>
            <pubDate>Thu, 04 Jun 2026 11:40:43 +0200</pubDate>
        </item>
                <item>
            <title>SF: Set a remark to role-rights</title>
            <link>https://community.thinkwisesoftware.com/ideas/sf-set-a-remark-to-role-rights-6825</link>
            <description>I would like the possibility to add a small remark to role rights. My primary use case for this is setting a remark when a role has rights to all columns/tasks/etc. of a subject except one. For the one exemption I would like to be able to place a remark so all developers know that was a deliberate exemption and why.</description>
            <category></category>
            <pubDate>Thu, 04 Jun 2026 07:34:15 +0200</pubDate>
        </item>
                <item>
            <title>Disable add activity task for resource groups in de scheduler</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/disable-add-activity-task-for-resource-groups-in-de-scheduler-6824</link>
            <description>Is it possible to disable the add activity task for resource groups in de scheduler.Like wise the activity’s in the scheduler are on the lowest resource and normally you don’t want add an activiy on resource groups when the resources are grouped in the scheduler.So is it possible to disable the task or should I give a message in the default that adding tasks on resource groups is not possible?</description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Wed, 03 Jun 2026 18:01:12 +0200</pubDate>
        </item>
                <item>
            <title>Release notes Thinkwise Platform 2026.1.15</title>
            <link>https://community.thinkwisesoftware.com/product-updates/release-notes-thinkwise-platform-2026-1-15-6819</link>
            <description>Since release 2026.1.11, we have introduced a new format for our release notes. You can now find all updates of the Thinkwise Platform, Indicium and the Universal UI in one release blog. This supports our full-stack approach and provides a better overview of the changes in each release.This release introduces significant breaking changes to the data model, affecting the dynamic model, business logic, and validations. These changes are included as preparation for the upcoming Thinkwise Platform 2026.2 release on the 15th of June.Hello everyone,A major highlight of this release is the new Custom components screen in the Software Factory. Custom components can now be uploaded as a .zip file and stored directly in the database, making them available in containerized deployments too. This removes the previous dependency on hosting custom components alongside the Universal UI, significantly broadening where and how custom components can be used.In the Software Factory, you can now configure validations from base models. The Default enabled, Severity, and Allow approval indefinitely values can now be updated for validations that originate from a base model, giving you more control over the validation behavior in your work model without losing the connection to the base model.This release also brings significant improvements to the Universal UI, with an expansion of the offline functionality. Users can now access subjects offline, including viewing tables and executing tasks. This provides more flexibility in how and when users can work in an application, even without an internet connection.The Scheduler has also received notable updates. Activities and tooltips can now display formatted text, including bold titles, icons, bullet lists, and hyperlinks. Additionally, sliding pagination for Quarter and Month timescales now shows extra context at the start of the view.This release includes several preparations for the upcoming Thinkwise Platform 2026.2 release. In the Software Factory, the data model has been updated in preparation for multiple RDBMS type support. The Slow query log now replaces data values with placeholders to prevent sensitive data from being written to the log. Check the breaking changes and data model changes to ensure a smooth upgrade. This is a short-term support (STS) release of the Thinkwise Platform. STS release support expires as soon as a new release is made available. For example, support for version 2026.1.12 ends when version 2026.1.13 is released. See our Lifecycle policy for information about supported versions  ContentsBefore you upgrade	Demo and download		Breaking	Thinkwise Platform 2024.1 - End of Service Life		Data model changes in preparation for multiple RDBMS types		&#039;Slow query log&#039; uses placeholders for data values		Re-enable offline availability with extended property		Check process flows with &#039;Open document&#039; action		&#039;Grid column width&#039; now displays as configured		Read-only password fields now show action button		New and changed	User interface - Added &#039;Custom components&#039; screen		Quality - Configure validations from base models		Added extended property &#039;MaxStageRowLimit&#039;		Updated email library		Subjects now available offline		Model insight now shows task and report names		Improved sliding pagination for the Scheduler		Add text formatting to Scheduler activities		Improved behavior of &#039;Open document&#039; action		Improved behavior of &#039;Favorites&#039; and &#039;Start objects&#039;		Invalid date no longer automatically corrected		Updated keyboard shortcut for column header filtering		Fixed	Software Factory and Intelligent Application Manager		Indicium		Universal UI		Data model changes	Changes Software Factory		Changes Intelligent Application Manager	 Before you upgradeFeatures for the Software Factory and the Intelligent Application Manager are only compatible with this STS version of the Thinkwise Platform.	Indicium and Universal UI features are backwards compatible with previous Thinkwise Platform versions, unless otherwise noted.Demo and downloadTry a demo of the Thinkwise Platform here.	Download the latest versions of our components here. BreakingThinkwise Platform 2024.1 - End of Service Lifebreaking Universal UIAs per our Lifecycle policy, support for by the Universal UI for Thinkwise Platform version 2024.1 has ended and will receive no further updates. Upgrade to Thinkwise Platform 2024.2 or higher. Data model changes in preparation for multiple RDBMS typesbreaking Software FactoryThe Software Factory data model has been updated to prepare for multiple RDBMS type support. This feature is planned for the Thinkwise Platform 2026.2 release.The following areas are impacted:	Dynamic model: Query fields have moved from their original tables to _query-suffixed tables.	Verify all Dynamic model code to ensure query fields are read from and written to the correct table.	Example: A query previously written to tab_prefilter must now target tab_prefilter_query.			Validations: Any validation that references a query field in a table must be updated to reference the _query-suffixed version of that table.			Business Logic: Control procedures that use SQL assignments with the Delete or Fully controlled strategy and insert into any of the following tables must now include rdbms_type in the insert:	- prog_object 	- prog_object_parmtr 	- prog_object_item 	- prog_object_item_parmtr	When using the Staged strategy, the Software Factory itself processes the data from the staging tables into the model, allowing the Software Factory to fill in the rdbms_type field for you.	Use the following values for rdbms_type:	Value				RDBMS type			0				SQL Server			1				DB2 iSeries			3				Oracle			4				PostgreSQL			 &#039;Slow query log&#039; uses placeholders for data valuesbreaking IndiciumThe Slow query log no longer stores data values in log entries for Thinkwise Platform 2026.1.14 and older. To prevent sensitive data from being written to the log, values are now replaced with ?. For example, filter values, inserted record values, and task parameter values are all logged as ?. The structure of the database statement remains intact, so you can replace the ? placeholders with actual values for troubleshooting.You can control whether the Slow query log stores data values Thinkwise Platform 2026.1.15 onwards. You can do this by enabling or disabling the checkbox Include data in slow query log in the Intelligent application manager (menu Settings &amp;gt; Global settings &amp;gt; group Logging).The Database Event Log in the Debug Center is not affected by this change. It continues to show data values, as it is only visible to the current user for their own session and is not backed by persistent storage.  Re-enable offline availability with extended propertybreaking Universal UIAs a result of making subjects and subject variants available offline, we have added an extended property to toggle this functionality. If you have set up offline availability, set the extended property AllowOfflineExperience to Yes to enable it. If you do not set this extended property, subjects will not be available offline after the upgrade. Check process flows with &#039;Open document&#039; actionbreaking Universal UIAs a result of updating the behavior of the Open document action with Open as set to Floating, some existing process flows may now behave differently after this release.Check all existing process flows that use the Open document action (menu User Interface &amp;gt; Process flows) with the input parameter Open as set to Floating to ensure they still behave as expected after the upgrade. &#039;Grid column width&#039; now displays as configuredbreaking Universal UIPreviously, the value entered in the field Grid column width did not match the width being displayed in the Universal UI. A default grid padding of 8px (or 16px in comfortable mode) was added to every column&#039;s width, which meant the configured width was not the actual width of the column. Now, columns have the same width as configured in the field Grid column width.This fix may introduce a breaking change for your applications. To ensure everything continues to work correctly:Check all screens in your applications if data is still displayed correctly after the upgrade.	If necessary, adjust the Grid column width for your grids to account for the new behavior. Read-only password fields now show action buttonbreaking Universal UIPreviously, the action button for password control fields was only shown in edit mode, regardless of the setting for Show action button (menu Data &amp;gt; Domains &amp;gt; tab Form). Now, password control fields adhere to this setting.The default value for Show action button is Always. This means the action button will be shown for password fields in read-only mode after upgrading. If you do not want this behavior, set Show action button to Never for the domain. New and changedUser interface - Added &#039;Custom components&#039; screennew Software Factory Universal UICustom components let you extend your application with functionality specific to your organization that is not part of the standard Thinkwise component set. Previously, you could add custom components by placing them in a subdirectory of the Universal UI and referencing that location as a URL segment. In Thinkwise Cloud, this is not possible because running your own containers is not supported.To address this, a Custom components screen (menu User interface &amp;gt; Custom components) has been added to the Software Factory. This screen acts as a repository where each custom component can be uploaded as a .zip file and stored in the database, similar to how icons are managed. For each custom component, you can provide:A Description.	A Default entry point, which specifies the file inside the .zip file used to start the custom component (for example, index.html). The &#039;Custom components&#039; screen in the Software FactoryThe Usage tab shows which tables and table variants use the custom component.At table and table variant level, you can set the Custom component source to Model or External:Model — uses the new repository. Select a custom component via a lookup and specify the Entry point. If the selected custom component has a default entry point defined, it is applied automatically. This can be overridden. You can use {metasource} and {application} variables in the entry point to refer to different versions of the custom component.	External — uses the existing URL-based approach. When you upgrade, sources for existing custom component references are automatically migrated to External.At table variant level, you can override the table configuration. This includes whether a custom component is used, which source is applied, and which component is selected. This way, different variants of the same table can use different custom components without affecting each other. Quality - Configure validations from base modelsCommunity idea new Software FactoryYou can now update the Default enabled, Severity, and Allow approval indefinitely values for validations that originate from a base model. You can update these values using the following tasks (menu Quality &amp;gt; Validations &amp;gt; tab Maintenance):Enable/disable validation	Enable/disable allow approval indefinitely	Update severityOnce you have manually updated a validation, the updated value is shown in the tab Validation configuration. You can filter on the prefilter Has different configuration to easily find validations that have been updated.Custom values are set within the context of the current model and branch, and are not overwritten when the corresponding base model is generated or merged into the work model. They also remain in place when the full definition of the work model is generated. If you want to remove custom values for validations, you can Delete them in the tab Maintenance &amp;gt; tab Validation configuration.As part of this update, a section of the Thinkwise guideline validations has been added to the Validations base model in the Software Factory. This includes validations for column names, domain names, primary key columns, references, table names, screen types, domain controls, icons, prefilters, tab containers, tasks, reports, and control procedures.Once you have configured a validation, the tab &#039;Validation configuration&#039; becomes availableAdded extended property &#039;MaxStageRowLimit&#039;new IndiciumCurrently, there is a default limit of 5000 records for actions performed in Indicium, such as deleting records or executing tasks. The extended property MaxStageRowLimit has been added to allow you to increase this default limit. The property can be set with the following values Actions can be performed on an unlimited number of rows.	&amp;gt; 5000: The limit is set to the configured number of records.	Not set or &amp;lt; 5000: The default limit of 5000 records is enforced.As part of this update, the error message shown when the limit is exceeded has also been improved. Instead of the generic validation_failed message, the error now indicates that the maximum allowed number of rows has been exceeded.The 5000 record limit is a safeguard against performance and stability issues. Increasing or removing this limit can cause long processing times or crashes. Use this property with caution and monitor your application&#039;s performance. Updated email librarychange IndiciumThe email library used by Indicium has been updated to the latest version. Sending emails through the email connector and the Forgot your password link continues to work as before. Subjects now available offlinenew Universal UIWe have expanded the offline functionality in the Universal UI. Users can now access subjects offline, allowing for more flexibility in how and when they can work in an application.Users can:View tables and table variants in a subject	Execute table tasks	Execute menu tasksTo set up offline availability, set the extended property AllowOfflineExperience to Yes.To make a table or a table variant available offline, select the checkbox Offline available in the menu User Interface &amp;gt; Subjects &amp;gt; tab Default/Variants &amp;gt; tab Settings &amp;gt; tab Components &amp;gt; group Offline. See also, Offline availability and Offline available task for more information.For offline available tasks, configure the following settings:The tasks cannot contain lookups.	The tasks will check for mandatory fields but make no other validations.	The tasks will not execute application logic for parameter input. This will be done later when the user is online again.	The task control procedures should accept all input without throwing errors since a user cannot fix these when synchronizing afterward.	All parameters filled through the task should set to Hidden.If you use a task variant or table variant, configure the following settings:All prefilters must be set to Hidden.	The following permissions should be disabled:	Add, copy, update, delete.		Grouping, sorting, and filtering.		Import and export.		Table tasks, other than the offline available task, should be disabled.	Reports should be disabled.	Paging should be disabled.	Lookups should be hidden (clear the checkbox Show look-up, see Use a column as a lookup.	Drag-drop should be disabled (clear the checkbox Def. drag-drop enabled, see Enable drag-drop in a grid by default.	The subject can not be used in a cube, map or Scheduler.In an upcoming release, these settings will automatically be disabled when you create a subject variant.This feature introduces some breaking changes, see Re-enable offline availability with extended property.   Model insight now shows task and report namesnew Universal UIWhen selecting fields belonging to a task or report, Model insight now shows the task or report name in a dedicated field. This makes it easier to see which fields belong to a specific task or report. Additionally, parameters for tasks and reports are now labeled Parameter instead of Column.Model insight now shows task and report names, and parameters are labeled &#039;Parameter&#039; Improved sliding pagination for the Schedulerchange Universal UISliding pagination in a Scheduler provides a sliding window of time around the current date and time. Previously, only the Year timescale showed additional context at the start, with the Scheduler view showing a month before the current month. For Quarter and Month timescales, no extra context was shown at the start of the view.We have now made additional context available for Quarter and Month timescales. The amount of context shown at the start depends on the highest timescale:Quarter or Month: an extra week is shown at the start of the view.	Year: an extra month is shown at the start, followed by the full year or years.As part of this update, we fixed an issue where adding a month to the start of the view caused the last month of the final year to be removed. Add text formatting to Scheduler activitieschange Universal UIPreviously, activities in a Scheduler were always displayed as a single line of plain text.You can now add text formatting to activities and their tooltips in a Scheduler, as well as multiple lines of text. This allows for more flexibility in the content and appearance of activities in a Scheduler.To add formatting to an activity, select a domain with a Multiline or HTML control as the Title column of the activity (menu User interface &amp;gt; Schedulers &amp;gt; tab Tables).	To add formatting to a tooltip, select a column with an HTML control as the Tooltip column of the activity (menu User interface &amp;gt; Schedulers &amp;gt; tab Default/Variants &amp;gt; group Activity linked columns).See Set up a Scheduler for more information.Multiline and HTML content in a Scheduler activity has no maximum height by default. Activities expand vertically to fit all content. To limit the height of activities, wrap the content in an additional &amp;lt;div&amp;gt; element with a max-height style property. This can be done using a view template or a Calculated column with a HTML control:SELECT  &#039;&amp;lt;div    class=&quot;activity-wrapper&quot;    style=&quot;max-height:200px; overflow:hidden;&quot;  &amp;gt;    &amp;lt;style&amp;gt;.activity-wrapper h2 { margin: 0; }&amp;lt;/style&amp;gt;&#039; +  t1.event_html +  &#039;&amp;lt;/div&amp;gt;&#039; If multiline or HTML content is used in a Scheduler activity, conditional layout such as font size, strikethrough, and underline will not be applied to the activity. Scheduler activities with HTML-formatted content, including bold titles, icons, bullet lists, and hyperlinksAdd text formatting to Scheduler tooltipsImproved behavior of &#039;Open document&#039; actionchange Universal UIPreviously, when a process flow used the Open document action with Open as set to Floating, the process flow stopped executing after opening the floating document.The process flow now continues executing inside the floating document. This can be used, for example, to jump to a specific record or to filter the data.When the process flow triggers the Close document action, the floating browser window closes and execution continues in the document behind.The document behind the floating document is not locked, which means the user may have changed or closed it in the meantime. To avoid unexpected behavior, open the subject from scratch and store the active content in process flow variables. Alternatively, reactivate the document before continuing the process flow.This change introduces some breaking changes for existing process flows that use the Open document action with Open as set to Floating. See Check process flows with &#039;Open document&#039; action for more information. Improved behavior of &#039;Favorites&#039; and &#039;Start objects&#039;change Universal UI main administratorWe have improved the behavior of Favorites and Start objects to better reflect their different purposes.Previously, you could configure Start objects for a user in IAM. These objects would automatically start when opening the application. We have renamed start objects for a user to Favorites and changed its behavior. Menu items marked as Favorite are no longer automatically started. Instead, the Favorites group is now expanded by default.Administrators can still configure Start objects for user groups in IAM. These still work as before and start automatically on startup. To align with their behavior, these objects are no longer shown in Favorites. Invalid date no longer automatically correctedchange Universal UIPreviously, when a user would type an invalid date in a date field (for example, 02-30-2026), the Universal UI would automatically correct this to a valid date (in this case, 03-02-2026). This could occur without the user noticing, potentially leading to incorrect dates being saved. Now, if the user enters an invalid date, the field is highlighted with a red border and an error message is shown to indicate that the date is invalid. The date must be corrected before the user can save the form.If an invalid date is entered, the field is highlighted with a red border and &#039;the value for Date is invalid&#039; is shownUpdated keyboard shortcut for column header filteringchange Universal UIPressing Ctrl + Enter now applies the filter and closes the filter popup when using Excel-style filters in a grid column header. Filters that already closed using Enter alone, such as date time filters, can still be applied with or without pressing Ctrl. FixedSoftware Factory and Intelligent Application ManagerDB2 In DB2 models, each code file previously started with a set schema and set path statement. These statements were always based on the database configured in the default runtime configuration, even when connecting through a different runtime configuration. As a result, code could unintentionally be executed against the wrong database. This has been fixed by removing the set schema and set path statements from the start of code files. The provision_db process action during installs and the application_connector process action during upgrades already set the correct schema and path, making these statements redundant.	The task Update Active Directory group in IAM (menu Authorization &amp;gt; User groups) assigned the old language code for English to newly imported users from the active directory group. This has been fixed. New users will receive the en-US language code.	When setting up a custom action bar, including and then excluding an action via edit-in-grid could clear mandatory fields. This prevented you from saving the record. This has been fixed.	Previously, setting a tab page icon required uploading a file separately. You can now select it from the central repository in the Software Factory, similar to other places in the Software Factory where icons are used.	The task Assign rights in Roles is now a primary action (menu Access control &amp;gt; Roles). IndiciumIf an expression field was set to Editable and Mandatory, the mandatory check was not performed. This has been fixed.Universal UIFor grids:When filtering in a grid column header, translation objects of domain elements were not displayed correctly. This has been fixed.	When filtering in a grid header that used a lookup with domain element translations, the translations were not displayed correctly. This has been fixed.	Fixed an issue where switching rows in a grid while the form was in edit mode and Auto-save was enabled, the form would not update to display the data of the newly selected row.	When switching between rows in a grid, the Universal UI would start loading data for a detail tab before context logic had finished executing. If the context logic caused the active tab to become hidden, the data request could be processed against an invalid context, resulting in data-type errors. This has been fixed.For pivot grids:When all categories or rows in a pivot grid were expanded by default, the tree expanded slowly on screen. We have optimized the performance of pivot grids to fix this issue.	Fixed an issue where the Universal UI could crash if you sorted on a date (part) in a pivot grid.For Schedulers:Font size, strikethrough, and underline font styling are now applied to Scheduler activities. Scheduler activities containing HTML content will not apply these decorations or font sizes.	Scheduler events now return to their original position, if a user attempts to drag items that have no update permissions.	When a hierarchical Scheduler had an ID containing double quotes (&quot;), expanding the corresponding level would cause the Scheduler to freeze. This has been fixed.For process flows:Fixed an issue where a process flow would stop after using the Close all documents process flow action.	The Change filters process action now no longer hangs when used in a process flow on a document that starts empty with filter.Other fixes:Fixed an issue where resizing the browser window to a smaller size and then back to a larger size, could cause task popups containing a Code diff editor control to slowly grow back to their original size instead of resizing instantly.	A task popup containing a Signature control could shrink in size after opening. This has been fixed.	Improved the Treeview performance for large datasets.	Model insight is now deactivated if the session expires or the user logs out.	When a request to Indicium fails due to a URL path segment longer than 260 characters, an error message is now displayed:	For users: &#039;The request URL contains segments which are too long. Please contact your system administrator.&#039;		For developers: &#039;The request URL contains segments which are possibly too long. The longest segment was tsegment length].&#039;		Trailing whitespaces are now stripped from lookup values in Form. This aligns with the default display behavior of values in the Universal UI.	The Maps component now adheres to the zoom limits defined per layer and overlay, so zooming in and out stays within the range intended for each map style. When a map opens or is navigated to via a process action, the zoom level is automatically adjusted to stay within the supported range for the active layer.	If the data used for an Import contained a period (&#039;.&#039;), the data preview would not display the data correctly. This has been fixed.	When uploading a file or image through a task that had a confirmation pop-up, a 422 error occurred and the file was not uploaded. This has been fixed.	The Switch branch did not automatically execute in the Software Factory in the Universal UI. This has been fixed. Data model changesData 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 FactoryTable changesSF - From table			SF - To table		-			branch_rdbms_type		-			col_data_sensitivity_query		-			col_query		-			cube_field_query		-			custom_component		-			data_migration_col_query		-			data_set_query		-			dom_input_constraint_query		-			dom_query		-			dttp_conv		-			indx_query		-			message_broker		-			message_broker_message		-			message_broker_message_input_parmtr		-			message_broker_message_mqtt		-			message_broker_message_mqtt_input_parmtr		-			message_broker_message_mqtt_output_parmtr		-			message_broker_message_mqtt_usr_property		-			message_broker_message_output_parmtr		-			message_broker_mqtt		-			message_broker_mqtt_configuration		-			message_broker_mqtt_version		-			model_vrs_data_migration_col_query		-			process_action_message_broker_message_input_parmtr		-			process_variable_query		-			report_parmtr_query		-			report_variant_parmtr_query		-			tab_check_constraint_query		-			tab_data_col_query		-			tab_prefilter_query		-			tab_query		-			tab_variant_col_query		-			task_parmtr_query		-			task_variant_parmtr_query		-			unit_test_query		-			validation_configuration		dttp_conv			-		 Column changesSF - Table			SF - From column			SF - To column			Mandatory			Default value		branch			db_prog_lang_id			db_prog_lang_id			0			-		code_file			-			rdbms_type			1			-		code_file_code			-			rdbms_type			1			-		code_search_result			-			pk_col_5			0			-		col			default_value_query			-			-			-		col			view_col_id			-			-			-		col			calculated_field_query			-			-			-		col_data_sensitivity			expression			-			-			-		cube_field			formula			-			-			-		data_migration_col			default_value_query			-			-			-		data_migration_col			history_default_value_query			-			-			-		data_set			preparation_query			-			-			-		dom			prog_lang_id			-			-			-		dom			dttp_id			-			-			-		dom			length			-			-			-		dom			prec			-			-			-		dom			dttp			-			-			-		dom			user_defined_dttp			-			-			-		dom			allocate_length			-			-			-		dom			min_value			-			-			-		dom			max_value			-			-			-		dom			default_value_query			-			-			-		dom_input_constraint			constraint_expression			-			-			-		drag_drop			-			drop_date_time_task_parmtr_id			0			-		dttp			-			rdbms_type			1			-		dttp			prog_lang_id			-			-			-		execute_object_code_log			-			rdbms_type			1			-		execute_object_code_step			-			rdbms_type			0			-		execute_object_code_step			-			prog_object_id			0			-		execute_source_code_step			-			rdbms_type			0			-		generate_object_code_step			-			rdbms_type			0			-		generate_object_code_step			-			prog_object_id			0			-		indx			indx_where_clause			-			-			-		model			rdbms_type			-			-			-		model_settings			fallback_appl_lang_id			fallback_appl_lang_id			0			en-US		model_vrs_data_migration_col			default_value_query			-			-			-		model_vrs_data_migration_col			history_default_value_query			-			-			-		post_sync_code			-			rdbms_type			1			0		process_action			-			message_broker_id			0			-		process_action			-			message_broker_message_id			0			-		process_action_output_parmtr			-			message_broker_id			0			-		process_action_output_parmtr			-			message_broker_message_id			0			-		process_action_output_parmtr			-			message_broker_message_output_parmtr_id			0			-		process_variable			default_value_query			-			-			-		prog_object			-			rdbms_type			1			-		prog_object_archive			-			rdbms_type			1			-		prog_object_item			-			rdbms_type			1			-		prog_object_item_parmtr			-			rdbms_type			1			-		prog_object_parmtr			-			rdbms_type			1			-		report_parmtr			default_value_query			-			-			-		report_variant_parmtr			default_value_query			-			-			-		runtime_configuration			-			rdbms_type			0			-		scheduler_view			-			day_label_format			1			0		screen_component			-			tab_page_icon_id			0			-		screen_component			tab_page_icon			-			-			-		screen_component			tab_page_icon_data			-			-			-		tab			-			custom_component_source			0			-		tab			-			custom_component_id			0			-		tab			-			custom_component_entry_point			0			-		tab			view_schema_id			-			-			-		tab			view_from_clause			-			-			-		tab			view_where_clause			-			-			-		tab			view_grp_by_clause			-			-			-		tab			view_having_clause			-			-			-		tab_check_constraint			check_constraint			-			-			-		tab_data_col			value_query			-			-			-		tab_prefilter			query			-			-			-		tab_variant			-			apply_custom_component			1			0		tab_variant			-			custom_component_source			0			-		tab_variant			-			custom_component_id			0			-		tab_variant			-			custom_component_entry_point			0			-		tab_variant			apply_custom_component_ref			-			-			-		tab_variant_col			default_value_query			-			-			-		tab_variant_scheduler_view			-			day_label_format			1			0		task_parmtr			default_value_query			-			-			-		task_variant_parmtr			default_value_query			-			-			-		template_prog_object_item			-			rdbms_type			1			-		template_prog_object_item_parmtr			-			rdbms_type			1			-		unit_test			preparation_query			-			-			-		unit_test			assertion_query			-			-			-		usr			-			primary_rdbms_type			0			-		write_code_files_to_disk_job_step			-			rdbms_type			0			-		write_code_files_to_disk_job_step			-			code_file_id			0			-		write_prog_objects_to_disk_job_step			-			rdbms_type			0			-		write_prog_objects_to_disk_job_step			-			prog_object_id		 Changes Intelligent Application ManagerTable changesIAM - From table			IAM - To table		-			branch_rdbms_type		-			col_query		-			cube_field_query		-			cube_field_query_dependency		-			custom_component		-			dom_input_constraint_query		-			expression_query_dependency		-			iam_message_broker_mqtt		-			process_variable_query		-			report_parmtr_query		-			report_variant_parmtr_query		-			role_custom_component		-			sf_message_broker		-			sf_message_broker_message		-			sf_message_broker_message_input_parmtr		-			sf_message_broker_message_mqtt		-			sf_message_broker_message_mqtt_input_parmtr		-			sf_message_broker_message_mqtt_output_parmtr		-			sf_message_broker_message_mqtt_usr_property		-			sf_message_broker_message_output_parmtr		-			sf_message_broker_mqtt		-			subroutine_parmtr_query		-			tab_prefilter_query		-			tab_prefilter_query_dependency		-			tab_variant_col_query		-			task_parmtr_query		-			task_variant_parmtr_query		cube_field_dependency			-		expression_dependency			-		tab_prefilter_dependency			-		usr_open_id			-		 Column changesIAM - Table			IAM - From column			IAM - To column			Mandatory			Default value		col			default_value_query			-			-			-		col			calculated_field_type			-			-			-		col			calculated_field_query			-			-			-		col			dttp_id			-			-			-		col			xml_dttp_id			-			-			-		col			length			-			-			-		col			prec			-			-			-		col			min_value			-			-			-		col			max_value			-			-			-		cube_field			formula			-			-			-		dom_input_constraint			constraint_expression			-			-			-		drag_drop			-			drop_date_time_task_parmtr_id			0			-		global_settings			-			enable_slow_query_log			1			1		global_settings			-			include_slow_query_log_data			1			0		global_settings			slow_query_threshold			slow_query_threshold			0			200		process_action			-			message_broker_id			0			-		process_action			-			message_broker_message_id			0			-		process_variable			default_value_query			-			-			-		process_variable			dttp_id			-			-			-		process_variable			xml_dttp_id			-			-			-		process_variable			length			-			-			-		process_variable			prec			-			-			-		process_variable			min_value			-			-			-		process_variable			max_value			-			-			-		report_parmtr			default_value_query			-			-			-		report_parmtr			dttp_type			-			-			-		report_parmtr			dttp_id			-			-			-		report_parmtr			xml_dttp_id			-			-			-		report_parmtr			length			-			-			-		report_parmtr			prec			-			-			-		report_parmtr			min_value			-			-			-		report_parmtr			max_value			-			-			-		report_variant_parmtr			default_value_query			-			-			-		scheduler_view			-			day_label_format			0			-		subroutine_parmtr			dttp_type			-			-			-		subroutine_parmtr			dttp_id			-			-			-		subroutine_parmtr			xml_dttp_id			-			-			-		subroutine_parmtr			length			-			-			-		subroutine_parmtr			prec			-			-			-		subroutine_parmtr			min_value			-			-			-		subroutine_parmtr			max_value			-			-			-		tab			-			custom_component_id			0			-		tab			-			custom_component_entry_point			0			-		tab_prefilter			query			-			-			-		tab_variant			-			custom_component_id			0			-		tab_variant			-			custom_component_entry_point			0			-		tab_variant_col			default_value_query			-			-			-		tab_variant_scheduler_view			-			day_label_format			0			-		task_parmtr			default_value_query			-			-			-		task_parmtr			dttp_type			-			-			-		task_parmtr			dttp_id			-			-			-		task_parmtr			xml_dttp_id			-			-			-		task_parmtr			length			-			-			-		task_parmtr			prec			-			-			-		task_parmtr			min_value			-			-			-		task_parmtr			max_value			-			-			-		task_variant_parmtr			default_value_query			-		 </description>
            <category></category>
            <pubDate>Tue, 02 Jun 2026 17:21:05 +0200</pubDate>
        </item>
                <item>
            <title>Height between fields setting, not working?</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/height-between-fields-setting-not-working-6818</link>
            <description> I try to create more space between fields in a Form List.For some reason the setting ‘Height between fields’ has no effect. Is the setting not yet implemented in Universal? Wat can we do with custom css?</description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Mon, 01 Jun 2026 14:23:19 +0200</pubDate>
        </item>
                <item>
            <title>issue opening screens variants</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/issue-opening-screens-variants-6780</link>
            <description>Hi,I have an issue when opening some screens.I noticed the issue is with screens that are variants.For example see the attached picture for the URL. (/subject=shipment/subjectVariant=shipment_universal).When using F12 developer tools in Chrome there are no errors.The other screens that don&#039;t have variant in the URL opens normally (/subject=account).But in local development environment using the Launch application in Thinkwise Software Factory everything opens normally.We are on:GUI version 2026.1.13.1.0Platform version 2026.1.13Indicium Version:2026.1 Build: 13.1Metasource:2026.1.13 (STS)What could be the issue with the variants ? Or is it a setting in IIS for the hosted application ?Kind regards,Timothy subjectVariant=shipment_universalsubject=account </description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Fri, 29 May 2026 18:21:07 +0200</pubDate>
        </item>
                <item>
            <title>Deep dive: Build an AI-powered ticketing system</title>
            <link>https://community.thinkwisesoftware.com/news-blogs-21/deep-dive-build-an-ai-powered-ticketing-system-6817</link>
            <description>Every company that supports customers handles tickets, and every ticket opens the same way. Someone reads it, works out what it is about, checks that nothing is missing, and moves it along. That groundwork is important but repetitive, and repetitive work is the best kind to hand to a computer.AI makes that possible in a way traditional tooling never could. A ticket is unstructured text, and unstructured text resists rules and algorithms. AI reads it comfortably. It turns free-form input into structured data, which opens the door to features that were never practical before.In this blog we put that to work. The system we build detects the language a ticket was written in, translates it so your support staff can read it, writes a short summary so anyone can grasp it at a glance, and checks that the ticket is complete before a person ever picks it up. Each of those steps runs on its own, in the background, the moment a ticket arrives.Translation is the part that stands out. Support no longer has to be limited to the languages your team speaks. A customer writes in their own language, your staff answers in theirs, and the translation happens in between without either side noticing. Everyone works in the language they prefer, and nobody waits on a bilingual colleague.The demo is based on the TCP ticket AI demo from the Thinkwise Summit 2025. This version keeps the same idea, but generic, so you can use the ideas in your own model.Before you startGenerative AI provider. The LLM steps call an external model, so you need a generative AI provider configured for your branch (OpenAI, Azure OpenAI, or any OpenAI-compatible endpoint). See the Generative AI docs.Platform version. The LLM connectors arrived in 2023.3, so build on that version or later.The ticket processLets walk through the entire process. We start where the customer does: by creating a new ticket. They open the ticket form, give it a title, and describe the problem in their own words. They attach anything that helps, a screenshot or a log, and click Create new ticket. That is the entire job from their side. Everything after that point happens on its own.The ticket creation form. This customer writes in Dutch, describes the problem, lists what they already tried, and adds a screenshot.Notice what this customer included: the problem written in Dutch, an error code and the steps they already tried, and an attachment. That detail matters later, because the completeness check looks for exactly these things. From the moment they hit create, the system takes over:It determines the language the ticket was written in.	It translates the ticket into the language support works in.	It writes a short summary.	It runs a completeness check: are reproduction steps described, and if an attachment is mentioned, is it actually there?	If a check fails, it adds a comment asking the customer for the missing information.	If the ticket passes, its status moves to In progress. Once translated, it becomes available to internal staff.Each of these steps runs on its own, in the background, without making the customer wait. That background execution is the first thing to build.Working asynchronouslyNot every action should block the user. A quick action that finishes in a second or two is fine to run synchronously. The user can wait. Longer business logic is different. Several LLM calls in a row take real time, and you do not want to freeze the screen while they run.So we run that work asynchronously. The logic executes in the background while the user keeps working. They can start a process, move on to something else, and come back when it is done. For a ticketing system this matters a lot. A customer should never sit and watch a spinner while three or four AI steps complete.A reusable async queueBefore the architecture, here is the whole thing in one breath. A customer logs ticket 156 in Italian. That insert fires a trigger, and the platform builds a background job from a template. The job runs five steps in order: detect the language, translate the ticket, write a summary, check it is complete, and set the status. The customer never waits, and an agent picks up a tidy, English, ready-to-work ticket. Everything below explains how that job is built and run.To run background work in a controlled way, we use an asynchronous queue. The queue is a central place to execute and track everything that runs in the background. It makes sure tasks run in the right order, with the right input, and with progress you can follow.The point of a queue is reuse. Without it, you would build a separate process flow for every asynchronous action in your application. With it, you have one mechanism and one place to monitor every background task.Everything here is built from standard Thinkwise process flows and subroutines, so if a concept below is new to you, those guides are a good place to go deeper.The async queue at a glance: a data change creates a flow from a template, the flow runs its steps in order, and each step runs a subflow that calls an LLM.Key termsTrigger table a table whose inserts, updates, or deletes can start a background job.Template a reusable recipe: an ordered list of steps that defines what a job does.Async flow a live job created from a template when a trigger fires. It carries the triggering row&#039;s data.Async flow step one stage in a job. Steps run in order, and each one runs a single subflow.Subflow a small, single-purpose process flow (detect language, translate, and so on). Every subflow shares the same input and output.The simplest queue is a table of actions plus a system flow that runs them in order. We need more than that. Some steps must wait for an earlier step to finish first. So we use an async flow built from individual async flow steps. Each step runs one subflow, and a subflow can hold one or more actions.Async flow templatesWe rarely want to run a single, isolated step. We want the same ordered sequence to run every time, for every ticket. Templates give us that. A template is a recipe: an ordered list of async flow steps, where each step points at the subflow it should run. You build the recipe once and reuse it forever.A template on its own is just a definition. Nothing happens until a trigger creates a live async flow from it. At that point the platform copies the template into a concrete flow with its own steps, each carrying its own status, plus a slot holding the data of the row that set it off. From there the steps run in order, one after another, each picking up where the last left off.Every step in a template receives the same input: the row data of the row that triggered the flow. That single rule is what makes the steps interchangeable, and it is worth dwelling on. So the next section looks at the subflows those steps actually run.Subflows: the interchangeable building blocksEach step in an async flow runs one subflow. A subflow is a small, self-contained process flow that does exactly one job: detect a language, translate a text, write a summary, run a check. Developers build them in the Software Factory, and each one stays focused on its single task.What ties them together is a shared contract. Every subflow in the queue takes the exact same input and returns the exact same output. The input is a JSON variable holding the triggering row&#039;s data. The output is a status and, optionally, an error message. Because the contract is identical, the queue can run any subflow without knowing what it does. That uniformity is the whole trick. One process flow can run any step, in any template, because every step looks the same from the outside.Making a new subflow usable in the queue takes one deliberate act: add the tag available_in_async_queue to it in the Software Factory. A piece of dynamic model then reads every subflow that carries the tag and wires it into the async_queue process flow for you. This happens during definition generation, when you generate or upgrade the application. So adding a capability is a short loop: build a subflow that honors the contract, tag it, regenerate, and it shows up as a step you can select in a template.The payoff is that the queue stays open for extension. New behavior is opt-in through a tag, never surgery on a shared flow. You add a step without touching the central process flow, which keeps that flow generic and keeps the risk of breaking existing steps close to zero.Deciding what sets a flow in motionA template still needs something to start it, and that something is a change in your data. This is the same idea a service bus uses: the meaningful events in an application are mutations on tables. A new ticket is an insert on the ticket table. A status change is an update. By binding automation to those events, it reacts to real business activity, with no extra wiring in your screens or logic.To make a table eligible as a trigger in the first place, add the tag available_in_async_queue to it in the Software Factory. The tag keeps the list of triggerable tables intentional, rather than exposing every table in the model. With that done, you register the table on a template and choose which mutations should fire it: after insert, after update, after delete, or any combination of the three. A ticket table, for example, might fire after both insert and update, so a brand new ticket and an edited one both run the flow, while a delete leaves it alone.A trigger configured on the ticket table: it runs after insert and after update, but not after delete.When a registered mutation happens, the platform creates a fresh async flow from the template and hands it everything it needs to act on the right record. That means two things travel with the new flow: the primary key of the mutated row, and a full copy of that row&#039;s data as JSON. The primary key tells every step exactly which record to write back to. The row data lets a step read the values it needs without a single extra query.A finished async_queue record. It carries the template it ran, plus the primary key and row data of the ticket that triggered it.How the async queue runsHere is the process flow that runs the queue.The async_queue process flow: a router and a step router feed the execute-subflow tasks.When the flow starts, it goes to the router decision node. The router checks whether there is an async_queue item waiting. If there is, it sets that item to In progress and loads its details into variables for the rest of the flow.Next comes the step router. This decision node walks through the steps of the current item. It finds the next step to run, sets it to In progress, and fills the matching process variables. If there is a next step, the flow moves to the execute system subflow task. If no steps remain, it returns to the router to mark the item complete and look for more work.Two routers, two jobsThe router works at the level of whole jobs. It picks the next async_queue item to run and, when one finishes, looks for the next.The step router works inside one job. It walks through that job&#039;s steps in order, running each subflow until the steps run out.Executing a subflowThis is where the tagged subflows from earlier actually run. The step router hands the current step its input, the JSON variable with the triggering row&#039;s data, and runs the subflow behind it. The subflow returns its status and any error message, and both are stored on the async_queue_step. That leaves you a clean, per-step log to read back whenever you need to see what happened, in what order, and why something failed.The async queue steps after a run: each step shows its subflow, an order number, a Completed status, and timing in the log panel. Here the language step took roughly a second.Deciding where to go nextAfter a subflow runs, the step router checks for more steps. If there are more, it runs the next one. If there are none, it hands control back to the router. The router marks the async_queue as complete, or as error if a subflow reported one. It then clears the queue variables and checks for other queues waiting to run. If it finds one, it loads its variables and returns to the step router. If not, the flow stops.Loops, and how to keep them safeThe queue runs on a loop. That is what makes it powerful. One process flow handles as many items and steps as needed, so you never have to model every possible path. A loop also carries a risk. Action A goes to action B, B goes back to A, and the flow keeps running until the heat death of the universe.The first habit that keeps a loop safe is a conservative exit. The decision that controls the loop should default to stop, and only continue when you are certain there is more work to do.Tip: add a guard against infinite loopsOn top of a conservative exit, add a hard limit. I keep a step counter process variable that increments every time the router runs. Past a set threshold, the next step is always stop. Even if a mistake puts the flow in an infinite loop, the counter ends it.  Putting it to work: the ticket pipelineThat is a fair amount of plumbing. Now the payoff. Let us apply all of it to the ticketing process.In this chapter we are looking into each specific subflow that together built the our async flow. As mentioned before each subflow is a single step in our process. For each step I cover two things: what it does for the business, and how it works in the platform.Determining the ticket languageWhat it does. Almost everything downstream depends on knowing which language a ticket arrived in. The translation step needs a source language to work from, and a stored language code is useful later for routing, reporting, or filtering. So we ask an LLM to read the ticket description and return the language as a two-letter ISO code. A short, standard code like en or nl drops neatly into a single column and is trivial to compare against.How it works. We build a dedicated subflow for this one job. In the prepare_data decision node we pull the ticket description out of the JSON input the queue passes in. An LLM Instruction process action then inspects that text, with an instruction that asks for the language as a two-letter ISO code and nothing else. Keeping the instruction that tight matters. It stops the model from replying in a full sentence that we would then have to clean up. On success the action returns the code, and parse_data writes it back to the ticket. The subflow closes by reporting its status, exactly as the contract requires.The determine language subflow: prepare the data, run one LLM Instruction action, then parse and store the ISO code.The prompt itself is short and strict. It feeds the ticket_description in as the text and tells the model to return only the two-letter ISO code:“Determine the language the provided text was written in and provide it as its two letter language ISO code. Do not explain anything return just the iso code”Result. the ticket now stores a two-letter language code, ready for the translation step to use.Translating a ticketWhat it does. This is the step that lets a customer and an agent work in different languages without either of them noticing. We translate the ticket into the language our support staff uses, English, and we translate both the title and the description so the whole ticket reads naturally. The original text stays untouched on the ticket. The customer always sees their own words, and we keep a faithful record of what they actually wrote.How it works. We start with a subflow that follows the standard contract. Its shape is simple: prepare the data, run the translations, then store the results.The translate subflow: prepare the data, run two LLM Instruction actions, then parse and store.On top of the standard input and output, the subflow holds a few variables of its own for the values it moves around: ticket_id, title, title_translated, description, and description_translated. In prepare_data we read the ticket_id, title, and description into them. We then run two separate LLM Instruction process actions, one for the title and one for the description. Keeping them apart means each translation maps cleanly back to its own column, and a long description never crowds out a short title. Both instructions translate into English and, just as important, tell the model to leave any HTML formatting in place, so bold text, line breaks, and lists survive the round trip. In parse_data we write both translations back to the ticket, ready for support to read.The subflow&#039;s process variables in the Software Factory.Each instruction is deliberately plain: take the text, translate it into English, and leave the HTML and formatting untouched. Here is the one used for the title:The LLM Instruction input for translating the title. The description action uses the same instruction with its own text variable.Result. an English title and description sit alongside the originals, so support reads English while the customer keeps their own words.Summarizing a ticketWhat it does. A long ticket is slow to triage. A two-line summary lets an agent grasp the gist before opening anything, and it scales: a queue of summaries is far quicker to scan than a queue of full descriptions. The summary is reusable, too. It feeds neatly into BI reporting, dashboards, or AI overviews that want a compact version of each ticket rather than the whole text.How it works. The pattern is the one you have seen twice now. In prepare_data we pull the description into a process variable. An LLM Instruction process action turns it into a short summary, guided by an instruction that asks for a brief, factual recap. We parse the result and store it on the ticket. This summary is always written in English, because only internal staff ever see it, which also keeps it consistent across every ticket regardless of the original language.The summarize subflow: the same prepare, instruct, parse shape, producing a short English summary.The instruction asks for a single English paragraph, focused on the key points, and never longer than the original text. That last constraint keeps the model from padding a short ticket into a long one:The LLM Instruction input for summarizing the ticket.Result. a short English summary stored on the ticket, ready for quick triage and for reuse in BI or AI overviews.Completeness checkWhat it does. This is the first quality gate, and it is what keeps half-finished tickets off your agents&#039; desks. We check whether a ticket has what someone actually needs to start work on it. Two things in particular: does it describe reproduction steps, and if the customer mentions an attachment, is that attachment really there? When both pass, the ticket moves to In progress on its own. When one fails, the system posts a comment asking the customer for the missing piece. The ticket keeps moving without a person having to read it first, and the customer gets a fast, specific reply instead of silence.How it works. We prepare the data by pulling the description into a process variable, then run an LLM Completion process action. We use a completion call here rather than an instruction because we are not transforming the text. We are asking the model for a verdict and reading back a structured answer we can act on. The prompt does the work:The completeness-check subflow: prepare the data, run an LLM Completion action, then parse the verdict in parse_data.This is the prompt we are using:You are a reviewer of support tickets. Your goal is to judge whether the textadheres to the guidelines. When it does adhere to the provided guidelines return 1,when it does not adhere to the guideline return 0.The output should be a valid JSON formatted array with every guideline and whetherthe ticket adheres to it. Use the guideline number as the key for the array. Do notexplain anything, return just a JSON array. Be really critical, do not try to please.If you are unsure whether the ticket adheres to a guideline return 1.The JSON should be structured as follows:{    &quot;1&quot;: 0,    &quot;2&quot;: 1}Check for the following guidelines:1. Does the ticket description mention reproduction steps?2. Does the ticket description mention or refer to an attachment?Validate the following text:{ticket_description}We name the exact guidelines to check against. We give a concrete example of the output structure. We ask for JSON and nothing else, and we tell the model to be critical rather than agreeable. LLMs tend to please and explain. Here we want neither.In parse_data we act on the result. If the first check fails, meaning no reproduction steps, we add a comment asking the customer to add them. Without reproduction steps, an employee often cannot find the cause of a problem.The second check needs one more move. The prompt only tells us whether the text mentions an attachment. Whether an attachment exists is something we verify ourselves. So we run an if-exists check against the ticket&#039;s attachments. If one is there, we continue. If not, we add a comment asking the customer to provide it.When both checks pass, the ticket status moves to In progress.Result. a complete ticket moves to In progress on its own, while an incomplete one gets a specific comment asking the customer for exactly what is missing.The result, all togetherRun all four steps and the queue turns a raw ticket into something support can act on. Look back at ticket 156, the Italian trading-platform ticket from the start of this blog. The customer&#039;s original Italian sits untouched, with an English translation beside it, a language code of it, and a one-line summary ready for triage. The ticket list shows the wider effect: tickets arrive in Dutch, Polish, Japanese, Chinese, French, and more, and every one becomes workable for an English-speaking team without anyone translating by hand.The ticket overview. Tickets come in across many languages, and ticket 156 shows the original Italian, the English translation, the detected language code, and the AI summary side by side.This is just the beginningThis is a thorough deep dive into building an AI-powered ticketing system, and it is only a starting point. The example is deliberately generic. Think about what makes your tickets different from everyone else&#039;s. Those differences are where the best additions live. I hope this example can serve as inspiration on how to implement AI in to your application!</description>
            <category>News &amp; Blogs</category>
            <pubDate>Fri, 29 May 2026 18:20:49 +0200</pubDate>
        </item>
                <item>
            <title>An unhandled exception occurred while processing the request.</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/an-unhandled-exception-occurred-while-processing-the-request-6815</link>
            <description>I keep getting the error below. The error occurs when changing a row in a grid. But it only happens after I changed a field and saved the changes. Without changing values and just changing rows in the grid everything is fine. Is this a know issue?  System.InvalidCastException: Unable to cast object of type &#039;System.Bytey]&#039; to type &#039;System.String&#039;.   at Indicium.Controllers.TableController.readColumnsODataResource(CustomODataResource resource, IEdmNavigationSource navigationTarget, HashSet`1 eagerFileColumns, List`1 resourceSelectColumns, ITSFDataReader reader) in C:\azp\agent\_work\1\s\src\Indicium\Controllers\TableController.cs:line 466   at Indicium.Controllers.TableController.GetResourceSet(SelectQuery query, IEdmNavigationSource navigationTarget, HashSet`1 eagerFileColumns, List`1 resourceSelectColumns, Uri nextPageLink, String serverTimingName) in C:\azp\agent\_work\1\s\src\Indicium\Controllers\TableController.cs:line 383   at Indicium.Controllers.TableController.GetResourceSet(SelectQuery query, IEdmNavigationSource navigationTarget, HashSet`1 eagerFileColumns, List`1 resourceSelectColumns, Uri nextPageLink, String serverTimingName) in C:\azp\agent\_work\1\s\src\Indicium\Controllers\TableController.cs:line 380   at Indicium.Controllers.TableController.Get(Boolean requestedAsync) in C:\azp\agent\_work\1\s\src\Indicium\Controllers\TableController.cs:line 207   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfIActionResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Objecto] arguments)   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.&amp;lt;InvokeActionMethodAsync&amp;gt;g__Logged|12_1(ControllerActionInvoker invoker)   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.&amp;lt;InvokeNextActionFilterAsync&amp;gt;g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State&amp;amp; next, Scope&amp;amp; scope, Object&amp;amp; state, Boolean&amp;amp; isCompleted)   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.&amp;lt;InvokeInnerFilterAsync&amp;gt;g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.&amp;lt;InvokeNextResourceFilter&amp;gt;g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State&amp;amp; next, Scope&amp;amp; scope, Object&amp;amp; state, Boolean&amp;amp; isCompleted)   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.&amp;lt;InvokeFilterPipelineAsync&amp;gt;g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.&amp;lt;InvokeAsync&amp;gt;g__Logged|17_1(ResourceInvoker invoker)   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.&amp;lt;InvokeAsync&amp;gt;g__Logged|17_1(ResourceInvoker invoker)   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)   at Duende.IdentityServer.Hosting.IdentityServerMiddleware.Invoke(HttpContext context, IdentityServerOptions options, IEndpointRouter router, IUserSession userSession, IEventService events, IIssuerNameService issuerNameService, ISessionCoordinationService sessionCoordinationService) in /_/src/IdentityServer/Hosting/IdentityServerMiddleware.cs:line 131   at Duende.IdentityServer.Hosting.MutualTlsEndpointMiddleware.Invoke(HttpContext context, IAuthenticationSchemeProvider schemes) in /_/src/IdentityServer/Hosting/MutualTlsEndpointMiddleware.cs:line 95   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)   at Duende.IdentityServer.Hosting.DynamicProviders.DynamicSchemeAuthenticationMiddleware.Invoke(HttpContext context) in /_/src/IdentityServer/Hosting/DynamicProviders/DynamicSchemes/DynamicSchemeAuthenticationMiddleware.cs:line 51   at Duende.IdentityServer.Hosting.BaseUrlMiddleware.Invoke(HttpContext context) in /_/src/IdentityServer/Hosting/BaseUrlMiddleware.cs:line 27   at Indicium.Extensions.ApplicationBuilderExtensions.&amp;lt;&amp;gt;c.&amp;lt;&amp;lt;SameSiteOpenIDConnectInterceptor&amp;gt;b__0_0&amp;gt;d.MoveNext() in C:\azp\agent\_work\1\s\src\Indicium\Extensions\ApplicationBuilderExtensions.cs:line 57--- End of stack trace from previous location ---   at Microsoft.AspNetCore.Session.SessionMiddleware.Invoke(HttpContext context)   at Microsoft.AspNetCore.Session.SessionMiddleware.Invoke(HttpContext context)   at Indicium.Middleware.OpenId.RewriteOpenIdCallbackPathMiddleware.Invoke(HttpContext context) in C:\azp\agent\_work\1\s\src\Indicium\Middleware\OpenId\RewriteOpenIdCallbackPathMiddleware.cs:line 46   at Indicium.Middleware.Security.PreventUnsafeContentTypeMiddleware.InvokeAsync(HttpContext context) in C:\azp\agent\_work\1\s\src\Indicium\Middleware\Security\PreventUnsafeContentTypeMiddleware.cs:line 45   at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(HttpContext context)   at Indicium.Middleware.Security.AuthenticationHeadersMiddleware.InvokeAsync(HttpContext context) in C:\azp\agent\_work\1\s\src\Indicium\Middleware\Authentication\AuthenticationHeadersMiddleware.cs:line 52   at Indicium.Middleware.Security.SecurityHeadersMiddleware.InvokeAsync(HttpContext context, ContentSecurityPolicyBuilder cspBuilder) in C:\azp\agent\_work\1\s\src\Indicium\Middleware\Security\SecurityHeadersMiddleware.cs:line 54   at Indicium.Middleware.Messages.TSFMessagesMiddleware.Invoke(HttpContext context, IRootApplicationLoader rootApplicationLoader, TSFRequestContext requestContext) in C:\azp\agent\_work\1\s\src\Indicium\Middleware\Messages\TSFMessageMiddleware.cs:line 48   at Indicium.Middleware.Telemetry.ServerTimings.ServerTimingsMiddleware.InvokeAsync(HttpContext context, ServerTimingsBuilder serverTimingsBuilder) in C:\azp\agent\_work\1\s\src\Indicium\Middleware\Telemetry\ServerTimings\ServerTimingsMiddleware.cs:line 49   at Indicium.Middleware.ExceptionHandlingMiddleware.Invoke(HttpContext context, TSFRequestContext requestContext) in C:\azp\agent\_work\1\s\src\Indicium\Middleware\ExceptionHandlingMiddleware.cs:line 34 </description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Fri, 29 May 2026 16:21:35 +0200</pubDate>
        </item>
                <item>
            <title>Debug Universal</title>
            <link>https://community.thinkwisesoftware.com/ideas/debug-universal-6816</link>
            <description>I think I’m not the only one struggling a lot with the debugger of Universal. At least can you suppress the breakpoints in de database eventlog. This one generates 500 records per second and you have be really quick to trap the error if there’s one.And the WIN GUI was able to return the SQL error’s For example:  Cannot insert the value NULL into column xxxThe universal GUI gives me a Unknown Error, the message cannot be found in the indicium log. How do I know what’s going wrong. In developer mode of the browser I can see the task is going wrong but also there, the text the windows GUI is returning on a proper manner cannot be found. You only get a diarree of unreadable code. Debugging is taking me seriously more time then with the WIN GUI, and it’s very frustrating.Please improve this ASAP</description>
            <category></category>
            <pubDate>Fri, 29 May 2026 15:14:52 +0200</pubDate>
        </item>
                <item>
            <title>oauth_await_external_login</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/oauth-await-external-login-6553</link>
            <description>We’re using the “OAuth user login connector” in a process flow to retrieve an authentication token for Microsoft Graph.After a successful login, the &quot;oauth_awaiting_external_login&quot; popup doesn’t close.  Why does this popup remain, what might I be missing? Versions:    Indicium 2025.3.14.1  /  Universal 2025.3.14.0.0 </description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Fri, 29 May 2026 10:56:32 +0200</pubDate>
        </item>
                <item>
            <title>Webconnector resulting in HTTP 404 not unsuccessful?</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/webconnector-resulting-in-http-404-not-unsuccessful-6812</link>
            <description>Hi,I have created a web connector and intentionally specified an non existing endpoint to see what error is returned to determine the next step in a process flow. I have an integer variable which should catch the HTTP status code and a successful and an unsuccessful route.When I execute the flow and look in the Debug Center the Response StatusCode has a value of 404 which is as expected. The Status Code of the process action however is 0 (which indicates no exception occurred and the successful route is taken). The 404 is not assigned to my variable, but instead the variable got a value of null.The url the web connection uses is dynamic and is determined within the flow, based on a configuration of the external consumer. This url is both shown at the input parameters section and in the Debug Data section and is correctly incorrect.The incorrect endpoint belongs to the same domain as the sending process flow. Both sender and potential recipient are Thinkwise environments.This setup works fine when the endpoint has a correct value, so I&#039;m only trying to force an except and figure out how to handle it best. Any idea where I went wrong?    </description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Thu, 28 May 2026 16:20:02 +0200</pubDate>
        </item>
                <item>
            <title>Best practice for customizing Thinkwise-made validations in SF?</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/best-practice-for-customizing-thinkwise-made-validations-in-sf-6813</link>
            <description>When developing it could take quite a while to go over all validations, so to exclude messages that are not relevant we want the validations tailored to our situation to reduce as much overhead as possible.Currently we have modified the validations base project in the SF (40 validations in total):Turned off specific validations made by Thinkwise that are not relevant for us	Edited specific validations made by Thinkwise to add exempts for specific situations	Added own validationsAfter each SF upgrade the validations could be overwritten, so we create a branch for the validations project, copy all our changes to the branch and merge it back.This doesn’t seem the most ideal way to go, specially since the base projects are locked now. What would be the best practice for customizing Thinkwise-made validations in the SF?</description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Thu, 28 May 2026 15:07:08 +0200</pubDate>
        </item>
                <item>
            <title>Double click task in scheduler</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/double-click-task-in-scheduler-6814</link>
            <description>Can anyone explain how to connect an activty ID (Calender_id) to a double click task in the scheduler in Universal. I have a view with resources and activity’s The resource has more activity’s which is in our case identified with the calender_id.I’ve add both parameters to the task with the same name as in the view and I also asiigend them in the table task parameters, So resource_name to @resource_name and calender_id to @calender_id.But on the double click the @calender_id does not gets a value!! The resource_name does gets a value!I read the blogs about the scheduler but these blogs are so high-over that many steps you need to do are skipped.Hope someone helps me out</description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Wed, 27 May 2026 17:54:10 +0200</pubDate>
        </item>
                <item>
            <title>Checking versions Universal GUI and backend are the same</title>
            <link>https://community.thinkwisesoftware.com/ideas/checking-versions-universal-gui-and-backend-are-the-same-6796</link>
            <description>A check in development mode versions of the Universal GUI and universal Backend to compare both versions or showing all version information on the information screen in Universal GUI.</description>
            <category></category>
            <pubDate>Tue, 26 May 2026 14:17:08 +0200</pubDate>
        </item>
                <item>
            <title>Feedback regarding the new ticket layout in TCP</title>
            <link>https://community.thinkwisesoftware.com/ideas/feedback-regarding-the-new-ticket-layout-in-tcp-6791</link>
            <description>Good improvement that tickets which require user action are only counted for the badge now and are default sorted on top.	 	Please add the ‘Product’ field (Universal/SF/IAM/etc.) back to the grid, this helps with finding an issue when you don’t remember the title.	 	After executing the ‘Annulering beoordelen’ task, an issue stays visible with status ‘Opgelost’ while the prefilter ‘Gesloten tickets verbergen’ is active. For example ticket 14568i.	 	‘Activiteit’ and ‘Commentaar’ are a bit confusing/redundant:	In ‘Activiteit’ I see the whole conversation, but the Add button doesn’t work (all fields are read-only/hidden). My expectation was that I could add a ‘Commentaar’ line here.		In ‘Commentaar’ I only see a small part of the conversation. For example messages that are written when the issues switches status between &#039;In behandeling&#039; and &#039;Reactie gewenst&#039; are missing.		 		The default screentype could be improved if it shows the form below/next to the grid. So you could see the ‘Toelichting’ when browsing through the issues without extra clicking. I am currently using the Master-detail screentype myself. If this is changed, a bit smaller grid height would be appreciated too.	 	When I use the ‘Kopieren’ button to create a new ticket, I cannot edit the ‘Toelichting’.</description>
            <category></category>
            <pubDate>Tue, 26 May 2026 13:58:32 +0200</pubDate>
        </item>
                <item>
            <title>Dynamically set custom display type of tasks in context</title>
            <link>https://community.thinkwisesoftware.com/ideas/dynamically-set-custom-display-type-of-tasks-in-context-6803</link>
            <description>I think it would be nice if you could change whether a task is placed in the overflow or a primary action based on data of the row.There are a lot of tables with a large number of tasks. Being able to hide tasks in the context is good, but sometimes I don’t want to fully disable a task, just guide the user with tasks they are most likely to use and tasks that are seldomly used in certain states.</description>
            <category></category>
            <pubDate>Tue, 26 May 2026 13:58:03 +0200</pubDate>
        </item>
                <item>
            <title>Better look-up when changing screen type</title>
            <link>https://community.thinkwisesoftware.com/ideas/better-look-up-when-changing-screen-type-6788</link>
            <description>The change screen type lookup on subject when in a application, only shows the name of the screen type: Problem is you don’t get any information on what you are selecting. And you can select a screen type that does not allow you to change screen types. Thus you have to go to IAM remove the screen type and try another. If the lookup provided more info you actually make a calculated decision instead of a best guess when changing screen types. Something like this:  </description>
            <category></category>
            <pubDate>Tue, 26 May 2026 13:37:46 +0200</pubDate>
        </item>
                <item>
            <title>Input length restriction for numeric/integer fields (similar to varchar behavior)</title>
            <link>https://community.thinkwisesoftware.com/ideas/input-length-restriction-for-numeric-integer-fields-similar-to-varchar-behavior-6771</link>
            <description>In a current customer project, the customer indicated an issue with how numeric and integer fields handle input length restrictions.At the moment, when a numeric or integer field is configured with a maximum of, for example, 6 digits, users are still able to enter more than 6 digits. This results in a validation error message such as: “Artikel nr heeft teveel cijfers”However, the customer expects the behavior to be consistent with varchar fields. For varchar fields (for example varchar(6)) users are prevented from entering more than 6 characters in the first place.Requested improvement:Align the behavior of numeric and integer fields with varchar fields, users are prevented from entering more digits than the configured maximum length, instead of receiving an error message afterward.</description>
            <category></category>
            <pubDate>Tue, 26 May 2026 08:48:40 +0200</pubDate>
        </item>
                <item>
            <title>New unique constraint validation</title>
            <link>https://community.thinkwisesoftware.com/ideas/new-unique-constraint-validation-6779</link>
            <description>When you make an existing column in a table mandatory (and no default value is set), you get a very helpful validation warning you to setup the data migration for this column.When you create a unique index on an existing column (or set of columns), no validation will be shown.It would be nice to have a warning in the validations list to show the developer that this could lead to issues.</description>
            <category></category>
            <pubDate>Tue, 26 May 2026 08:47:25 +0200</pubDate>
        </item>
                <item>
            <title>Maps components do not behave according to their configuration</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/maps-components-do-not-behave-according-to-their-configuration-6723</link>
            <description>In all the maps components that we have, the maximum zoom level is set to 22, the maximum zoom level that our provider provides. If we zoom in on a maps component in our application in Universal, we keep getting html requests for tiles, and hence see tiles in the screen, up to zoom level 18. However when zooming in further, the entire maps component becomes gray and according to DevTools no requests are being made for tiles anymore: When we modify the max zoom level of the maps component to 18 and deploy the change, this seems to have no effect at all. The exact same behavior as described above takes place.We expected that trying to zoom beyond level 18 would not trigger anything and the screen would remain on level 18, since it is the configured max zoom level. Also we expected that when having max zoom level = 22, we could zoom beyond level 18 and tiles would keep being requested. Does anyone have an idea about what goes wrong here?</description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Fri, 22 May 2026 14:26:07 +0200</pubDate>
        </item>
                <item>
            <title>Make the activated detail tab smarter when switching rows to support different variants</title>
            <link>https://community.thinkwisesoftware.com/ideas/make-the-activated-detail-tab-smarter-when-switching-rows-to-support-different-variants-6810</link>
            <description>Often there are situations where you want to show a different tab-variant as a detail tab based on a specific property of the selected row in the main grid. This is possible by making multiple references and let the context procedure only show the detail tab with the tab-variant based on the property value.When there are multiple detail tabs for the main subject, this has one major downside though: Normally the GUI remembers the activated detail tab when the user switches rows in the main grid. However when the context procedure switches the reference for a different tab-variant, it activates the first visible detail tab.This creates inconsequent behaviour for the user when switching rows in the main grid because sometimes it does keep the same detail tab activated and sometimes it doesn’t. From the user perspective, the different references to the same detail tab are the same thing.To improve the behaviour of cases when the activated detail tab becomes hidden by a context procedure, the GUI/Indicium should prefer activating the first visible detail tab of the same target table as the previous activated detail tab (before activating the first visible detail tab).An alternative (instead of checking if it is the same target table) could be that it activates the first visible detail tab with the same translation value. </description>
            <category></category>
            <pubDate>Fri, 22 May 2026 11:51:54 +0200</pubDate>
        </item>
                <item>
            <title>Publicly accessible portal without user login</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/publicly-accessible-portal-without-user-login-6809</link>
            <description>Currently, we send PDF forms to our customers. They fill them out manually and return them via email, after which we process the data. We want to modernize and digitalize this process using Thinkwise.Our goal is to set up a portal/webpage where customers can enter their data directly, ensuring it is immediately stored in our database. Since we are dealing with a broad, shifting customer base, we want the URL to be publicly accessible. Customers should be able to open and use the page without logging in with a username and password (no login prompt from the Universal GUI).Is it possible? And what are the best practices within IAM of Indicium? Because I think that you will create a sort of pool-user for that, which has some limited rights. </description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Fri, 22 May 2026 11:51:09 +0200</pubDate>
        </item>
                <item>
            <title>Selecting all rows gives UnhandledException error</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/selecting-all-rows-gives-unhandledexception-error-6808</link>
            <description>Hi, I am running into an issue with a task when selecting the all rows for a task.The following error occurs:System.InvalidCastException: Failed to convert parameter value from a DateTimeOffset to a DateTime. ---&amp;gt; System.InvalidCastException: Object must implement IConvertible.   at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)   at Microsoft.Data.SqlClient.SqlParameter.CoerceValue(Object value, MetaType destinationType, Boolean&amp;amp; coercedToDataFeed, Boolean&amp;amp; typeChanged, Boolean allowStreaming)The error specifically occurs when using the all rows. When I go through all the 200 rows 50 by 50, no error occurs.   I do not understand why this error is occuring and how to solve this issue.  Kind regardsMark Leunissen</description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Thu, 21 May 2026 14:39:29 +0200</pubDate>
        </item>
                <item>
            <title>Mandatory checkbox without asterisk</title>
            <link>https://community.thinkwisesoftware.com/ideas/mandatory-checkbox-without-asterisk-1356</link>
            <description>When a domain with datatype BIT and control checkbox is not mandatory, there are 3 options:empty (null)	selected/active (0)	deselected/inactive (1)When it is mandatory there are 2 options (0 &amp;amp; 1) but an asterisk is shown behind the options. For the user this looks like you have to select the active option. F.e. when you have to agree to an user policy it is obligated to check the checkbox. → We would like to have a mandatory checkbox without the asterisk so the user does not feel obligated to check the checkbox.</description>
            <category></category>
            <pubDate>Wed, 20 May 2026 17:19:19 +0200</pubDate>
        </item>
                <item>
            <title>How to view subflow steps?</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/how-to-view-subflow-steps-6807</link>
            <description>The process flow monitor does not show the steps in a subflow, now I am at a loss how to debug this. Do I have to make it a process flow?</description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Wed, 20 May 2026 16:27:18 +0200</pubDate>
        </item>
                <item>
            <title>Conditional layout on Card list</title>
            <link>https://community.thinkwisesoftware.com/ideas/conditional-layout-on-card-list-3697</link>
            <description>Idea to add conditional layout on a card list. Below I have a card list and a normal list with conditional layout. But the conditional layout is not visible on the card list.It would be great if this is possible!  </description>
            <category></category>
            <pubDate>Wed, 20 May 2026 14:06:51 +0200</pubDate>
        </item>
                <item>
            <title>Extra release - Universal GUI 2026.1.14.1</title>
            <link>https://community.thinkwisesoftware.com/product-updates/extra-release-universal-gui-2026-1-14-1-6805</link>
            <description> Hi everyone!This is an additional release for the Universal GUI. Fixed hang in change filter step for documents that start empty			In the 2026.1.14.0 release a regression was introduced where a Change filter step in a process-flow could hang when executed on a document that initially starts empty but has a filter applied. This could cause the process-flow to stop progressing. The issue has been identified and resolved.			The 2026.1.14.1 release is now available for download in TCP. </description>
            <category></category>
            <pubDate>Wed, 20 May 2026 14:06:35 +0200</pubDate>
        </item>
                <item>
            <title>Bestand wordt opgepakt zonder body</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/bestand-wordt-opgepakt-zonder-body-6804</link>
            <description>Hi,We are experiencing an issue with an XML interface from our Thinkwise application to an external application. The external application picks up files that the Thinkwise application places in a specific location.However, sometimes the file is picked up so quickly that it has already been created, but the body has not yet been written to the file. We are using the standard process actions for this.Is there a way to prevent this from happening? I would like to hear how others solve this in their applications.</description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Wed, 20 May 2026 13:50:06 +0200</pubDate>
        </item>
                <item>
            <title>Add height unit &quot;Form Units&quot; in the Screen Component settings</title>
            <link>https://community.thinkwisesoftware.com/ideas/add-height-unit-form-units-in-the-screen-component-settings-6786</link>
            <description>Would it be possible to have an extra Height Unit available called something like “Form Units” which is equal to the raster height in forms?   This is the unwanted result when a fixed height in pixels is set, is shows extra whitespace then the height is to much or a vertical scrollbar when the height is set to low and it also depends on the client screen screen size and resolution. Especially on small handheld devices this is annoying.Ideally it should look like this  </description>
            <category></category>
            <pubDate>Wed, 20 May 2026 08:26:21 +0200</pubDate>
        </item>
                <item>
            <title>Drag &amp; drop  also with cardlist.</title>
            <link>https://community.thinkwisesoftware.com/ideas/drag-drop-also-with-cardlist-4310</link>
            <description>The backlog of the Universal GUI is really missing drag and drop from a cardlist. In a web-environment a card-list is quite often used (at least we do) and it is really a pity that apparently the drag-drop functionality will not be implemented for this component. I would really like to see drag-drop also from cardlist aside the grid and tree.    </description>
            <category></category>
            <pubDate>Wed, 20 May 2026 08:19:20 +0200</pubDate>
        </item>
                <item>
            <title>Process Flow arrange functionality back in SF Universal</title>
            <link>https://community.thinkwisesoftware.com/ideas/process-flow-arrange-functionality-back-in-sf-universal-6761</link>
            <description>Hi,It would be greate to bring the arrange functionality back to the process flow designer screen!Currently, I&#039;m really struggling to get a clear format, that&#039;s partly due to how the lines originate from the output side, especially when using a loop or multiple lines. As a result, it starts making strange turns on its own in the design screen.Maybe you are already working on that, in which case I haven&#039;t said anything haha.</description>
            <category></category>
            <pubDate>Mon, 18 May 2026 16:00:23 +0200</pubDate>
        </item>
                <item>
            <title>Centralized AI-Enrichment Repository in the Software Factory</title>
            <link>https://community.thinkwisesoftware.com/ideas/centralized-ai-enrichment-repository-in-the-software-factory-6763</link>
            <description>SummaryAllow Thinkwise customers to share AI-enrichments they&#039;ve created in their own Software Factory to a central, curated repository managed by Thinkwise — so that the entire customer community can discover, import, and benefit from enrichments written by others.The Problem TodayEach Thinkwise development-team develops AI-enrichments independently in their own Software Factory. There is no mechanism to share these enrichments with the broader Thinkwise community, which means:Customers reinvent the wheel building similar or identical enrichments.	Valuable knowledge and innovation stays locked inside individual tenants.	Smaller teams with fewer resources benefit less from AI capabilities compared to larger customers who invest more in development.The Proposed SolutionIntroduce a Shared AI-Enrichment Hub within the Software Factory, with the following flow:Create locally — A customer builds an AI-enrichment in their own Software Factory as they do today.	Opt-in to share — The customer can choose to submit their enrichment to Thinkwise for inclusion in the central repository.	Review &amp;amp; curate — Thinkwise reviews the submission for quality, safety, and relevance before publishing it.	Distribute — Approved enrichments become available to all Thinkwise customers, who can browse, preview, and import them into their own Software Factory with one click.BenefitsFor customers sharing their enrichments:Recognition within the community as a contributor.	Potential for Thinkwise to provide feedback and quality improvement.	Contribution to an ecosystem they also benefit from.For customers consuming enrichments:Faster time-to-value — no need to build common enrichments from scratch.	Access to high-quality, real-world enrichments built by experienced peers.	Inspiration for building their own enrichments.For the Thinkwise ecosystem overall:Accelerates AI adoption across the entire customer base.	Builds a vibrant, collaborative community around the platform.	Thinkwise gains insight into how customers are using AI in practice, informing product direction.Possible Limitations &amp;amp; ConsiderationsGovernance &amp;amp; quality control Thinkwise would need a review process to ensure submitted enrichments meet quality, security, and privacy standards. Versioning and maintenance Enrichments may break or become outdated as Thinkwise evolves. A lifecycle policy is needed — who is responsible for maintaining a shared enrichment over time?Context dependency Many enrichments are highly tailored to a specific domain or data model. Generic enrichments will transfer well; niche ones may be less reusable and cause confusion if imported out of context.Discoverability As the repository grows, good tagging, categorization, and search functionality become critical. Without them, the repository risks becoming cluttered.Security &amp;amp; data privacy Customers must be sure that submitting an enrichment doesn&#039;t inadvertently expose proprietary data or business logic embedded in the enrichment&#039;s prompts or configuration.Suggested Scope for MVPA simple submission flow from the Software Factory to Thinkwise.	A basic browsable gallery of approved enrichments, filterable by category or use case.	One-click import into the customer&#039;s own Software Factory.	Clear contributor attribution and a basic rating/feedback mechanism.</description>
            <category></category>
            <pubDate>Mon, 18 May 2026 15:59:39 +0200</pubDate>
        </item>
                <item>
            <title>Bring back hotkey for combined filter (search)</title>
            <link>https://community.thinkwisesoftware.com/ideas/bring-back-hotkey-for-combined-filter-search-6800</link>
            <description>In the Windows GUI we were able to use CTRL-G to put our cursor in the combined filter (search).We would love to have this feature in Universal, where the hotkey would take you to the (nearest) combined filter for the current subject.</description>
            <category></category>
            <pubDate>Mon, 18 May 2026 15:58:49 +0200</pubDate>
        </item>
                <item>
            <title>Change settings in profile menu</title>
            <link>https://community.thinkwisesoftware.com/ideas/change-settings-in-profile-menu-6802</link>
            <description>The profile menu shows several options. We would like to choose which options are shown, based on user groups. Not all options are needed. It would be great if this could be configured in IAM  </description>
            <category></category>
            <pubDate>Mon, 18 May 2026 15:55:51 +0200</pubDate>
        </item>
                <item>
            <title>Preserve expanded groups after refresh in Universal GUI</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/preserve-expanded-groups-after-refresh-in-universal-gui-6799</link>
            <description>Hi everyone,We are currently experiencing a behavioral difference between the Windows GUI and the Universal GUI and were wondering how others are handling this.In our application, we frequently work with grouped data in grids/views. For example:a trip containing grouped orders,	a planning containing grouped tasks,	or other master/detail-like groupings.Users can expand and collapse these groups.Current behaviorIn the Windows GUI, expanded groups remain open after the document or data is refreshed.In the Universal GUI, however, we notice that after a refresh the groups are often collapsed again. As a result, users continuously need to re-expand the groups they were working in.ImpactFor our users this is quite disruptive, especially in screens where:many groups are present,	automatic or manual refreshes happen frequently,	and users work in the same dataset for a longer period of time.This causes loss of context and unnecessary extra clicks.Our questionsIs this currently standard behavior in the Universal GUI?	Are there any settings or best practices to preserve the expand/collapse state of grouped data after a refresh?	Are there perhaps already improvements or roadmap items related to this topic?We have seen several fixes and improvements in release notes regarding grouped grids and expand/collapse behavior, but we have not found a way to persist this state similar to the Windows GUI behavior.We would be interested to hear whether others experience the same issue and if there are any known workarounds or solutions.Thanks in advance!</description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Fri, 15 May 2026 15:13:16 +0200</pubDate>
        </item>
                <item>
            <title>Bring back user custom aggregations</title>
            <link>https://community.thinkwisesoftware.com/ideas/bring-back-user-custom-aggregations-6757</link>
            <description>In Universal is is no longer possible for a user to create custom aggregations (column totals in the grid for instance), this was possible in the Windows GUI. </description>
            <category></category>
            <pubDate>Fri, 15 May 2026 14:00:38 +0200</pubDate>
        </item>
                <item>
            <title>Bring back dragging fields in cubes</title>
            <link>https://community.thinkwisesoftware.com/ideas/bring-back-dragging-fields-in-cubes-6756</link>
            <description>In Universal it is no longer possible to drag cube fields to change their order, this was possible in the Windows GUIThe workaround of adding a panel with cube fields is not user friendly, and take up valuable screen real estate</description>
            <category></category>
            <pubDate>Fri, 15 May 2026 14:00:19 +0200</pubDate>
        </item>
                <item>
            <title>Effective user rights permissions</title>
            <link>https://community.thinkwisesoftware.com/ideas/effective-user-rights-permissions-6744</link>
            <description>We are currently tightening user permissions within our IAM applications. Each company has its own IAM application with at least one key user. A key user supports IAM activities and is responsible for maintaining the role/permission structure for other users.We have reviewed the key-user responsibilities and adjusted permissions so they only have what they need. As part of this, we removed access that allowed changes to application-level settings. We no longer want to assign Main Administrator or Application Administrator roles to key users.Since these changes, key users can no longer access the “Effective user rights” table. This table is very useful for them because it provides a clear overview of what permissions users effectively have.Is there a way to grant access to the “Effective user rights” table by adding the required permissions to one of the following groups, without giving admin roles? Our key users currently have these roles:Application owners	Group administrators	User administrators	Simulators </description>
            <category></category>
            <pubDate>Fri, 15 May 2026 13:59:38 +0200</pubDate>
        </item>
                <item>
            <title>Add a clear button to the process flow monitor</title>
            <link>https://community.thinkwisesoftware.com/ideas/add-a-clear-button-to-the-process-flow-monitor-6772</link>
            <description>In the Debug Center both the error log and the database event log both have clear button. But the process flow monitor does not. Sometimes you want to clear this screen please also add a clear button. </description>
            <category></category>
            <pubDate>Fri, 15 May 2026 13:59:07 +0200</pubDate>
        </item>
                <item>
            <title>Long and short translation for tasks/reports</title>
            <link>https://community.thinkwisesoftware.com/ideas/long-and-short-translation-for-tasks-reports-6758</link>
            <description>We would like to see separate translations for the button and the popup for tasks and reports. For this we would like a short(for the button) and long translation(for the popup) for tasks/reports.This is not possible at the moment. There&#039;s only 1 translation and you can choose to either show it or not and with or without an icon.For example this task has this translation using abbrevations because otherwise the button would be too big.When we open the popup it shows this: It shows the same translation.We would like to translate the header of this popup separately. In this case we would like to translate it to: Wijzigen koersafwijking ingedekt t.o.v. calculatie.</description>
            <category></category>
            <pubDate>Fri, 15 May 2026 13:57:25 +0200</pubDate>
        </item>
                <item>
            <title>Add grid views (in addition to prefilters)</title>
            <link>https://community.thinkwisesoftware.com/ideas/add-grid-views-in-addition-to-prefilters-6768</link>
            <description>Context  To create different grid layouts (i.e. active columns, sort order, fixed columns, etc) for users, we now have to rely on developers (i.e. design-time) to create Variants. Variants are a good way to also control many other things in a screen, but oftentimes users only want a different grid layout (mostly when they change a prefilter) while the rest of the screen must remain the same.  An example of this is when a user switches between working with open sales-orderlines or invoiced sales-orderlines: 	When working with open sales-orderlines, the invoice-ID-column is not relevant but showing the available stock columns is.  		When working with invoiced sales-orderliness, the invoice-ID-column is relevant but the available stock column is not.  	It is currently also not possible to not have only a selection of all possible columns activated when a user opens a screen for the first time (now default behavior is all columns are active and this cannot be controlled).   Feature request We ask for the ability for end users and application managers (in IAM) to save and share Views at runtime. Views will live directly next to prefilters and the combination of both is very powerful.  A view will be able to store and retrieve:  	Visible columns / column sequence 		Column width 		# Left pinned (frozen) columns (make this user-controlled) 		Column sorting (single/multi-sort, sort direction) 		Grouping settings (if user controlled and made possible in future Thinkwise release) 		Paging size (if user controlled and made possible in future Thinkwise release) 	 Additional features: 	Have the option to load a view, change settings in the grid, and save the new settings over the existing view or as a new view.  		At least 1 view must be the default view.  		When managing views (in a pop-up-screen), have the option to set one or more default prefilter(s) for the view.  		When managing prefilters (in a pop-up-screen), have the option to set a default view for the prefilter.  		Using IAM, an application manager should be able to copy a view that a (key) user created and promote is to a ‘standard view’ for a screen-variant/user-group combination. This achieves that certain ‘standard’ views can be distributed to user teams centrally.  </description>
            <category></category>
            <pubDate>Fri, 15 May 2026 13:56:41 +0200</pubDate>
        </item>
                <item>
            <title>Make auto-refresh depend on server time</title>
            <link>https://community.thinkwisesoftware.com/ideas/make-auto-refresh-depend-on-server-time-6767</link>
            <description>Auto-refresh is done based on the last refresh timestamp generated by the client, as the client and server can be out of sync for many reasons this leads so situations where the auto-refresh works incorrectly. This can lead to extra or missing refreshes.My suggestion is to include current server timestamp in the reply of the entity or auto-refresh procedure and use this as the input parameter to send with the next auto-refresh check.This way we are never in situation where we can have any desync of clocks.I am aware there are ways to avoid this issue but all are a workaround to essentially a solvable issue.</description>
            <category></category>
            <pubDate>Fri, 15 May 2026 13:56:04 +0200</pubDate>
        </item>
                <item>
            <title>Copying Variant settings to Default</title>
            <link>https://community.thinkwisesoftware.com/ideas/copying-variant-settings-to-default-6782</link>
            <description>Is there a way of changing a Default Subject settings to be the same as one of its Variants?Transitioning to Universal we have made a Variant for most of our Subjects to give the Subject an updated look in Universal and leave the Windows Default unchanged.When we will stop using Windows, I would like if I can “make a Variant a Default”. It would be pretty tedious to manually change everything.</description>
            <category></category>
            <pubDate>Fri, 15 May 2026 12:59:27 +0200</pubDate>
        </item>
                <item>
            <title>Show PDF documents stored in Azure Blob Storage in the Previewer</title>
            <link>https://community.thinkwisesoftware.com/ideas/show-pdf-documents-stored-in-azure-blob-storage-in-the-previewer-6797</link>
            <description>What can we do to show (pdf) documents which is stored in Azure Blob storage in the previewer component?Now it shows a download link (see below), while it worked for files that are stored in Azure File Storage </description>
            <category></category>
            <pubDate>Wed, 13 May 2026 16:20:34 +0200</pubDate>
        </item>
                <item>
            <title>Option Paste (Ctrl+V) not visible</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/option-paste-ctrl-v-not-visible-6798</link>
            <description>Some end users mentioned that the paste option is missing in the browser&#039;s context menu when they try to paste content in a text field, also when the application is installed. The key combination Ctrl+V works, but is less intuitiveIt also works as soon as the text field contains 1 character Is this something that can be set in the Universal UI?  </description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Wed, 13 May 2026 14:00:59 +0200</pubDate>
        </item>
                <item>
            <title>Calendar control does not work on Android 2026.1</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/calendar-control-does-not-work-on-android-2026-1-6765</link>
            <description>Hi,The calendar control does not seem to work on android. I tested on multiple browsers, but it is the same for all of them. The calendar does not pop-up. For iPhone it does work.This is on Universal 2026.1.13.1.0</description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Wed, 13 May 2026 11:40:14 +0200</pubDate>
        </item>
                <item>
            <title>Grid grouping - count aggregate is missing in uni gui</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/grid-grouping-count-aggregate-is-missing-in-uni-gui-6778</link>
            <description>Hi, As we are moving to uni gui we run into small differences. This is one of them.With count aggregate When we do grouping in uni gui, this aggregate is not there. Can I toggle this, or is this feature missing in the uni gui? no count aggregate </description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Wed, 13 May 2026 11:36:23 +0200</pubDate>
        </item>
                <item>
            <title>Apply button for prefilter pop-up</title>
            <link>https://community.thinkwisesoftware.com/ideas/apply-button-for-prefilter-pop-up-5086</link>
            <description>It is annoying that the filter pop-up is immediately closed when changing a prefilter that is part of an &quot;OR&quot; group.This problem mainly occurs on small devices, where filters must be set with a pop-up.I can imagine that it is difficult to come up with an intuitive solution for this. It might be an idea to add an &#039;Apply&#039; button in those cases.  </description>
            <category></category>
            <pubDate>Wed, 13 May 2026 11:14:11 +0200</pubDate>
        </item>
                <item>
            <title>Dark mode in Debug Center</title>
            <link>https://community.thinkwisesoftware.com/ideas/dark-mode-in-debug-center-6792</link>
            <description>I use dark mode in the Software Factory and SSMS. It’s great that since the Software Factory is available via the Univeral GUI, that it supports dark mode.However, the Debug Center is missing this feaute and is always in ‘light’ mode:It would be great if the Debug Center gets dark mode as well since it’s used a lot during development.Yours sincerely,My eyes</description>
            <category></category>
            <pubDate>Wed, 13 May 2026 10:12:16 +0200</pubDate>
        </item>
                <item>
            <title>Favorites menu - open expanded</title>
            <link>https://community.thinkwisesoftware.com/ideas/favorites-menu-open-expanded-6795</link>
            <description>Could the favorites menu group always open as expanded please?An alternative could be that it remembers the last state.</description>
            <category></category>
            <pubDate>Wed, 13 May 2026 10:09:50 +0200</pubDate>
        </item>
                <item>
            <title>Exception when committing staged resource; An item with the same key has already been added</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/exception-when-committing-staged-resource-an-item-with-the-same-key-has-already-been-added-6793</link>
            <description>When saving a form to the database in the Universal GUI I get the following error, and after this error the form shows data from a differend database record:This error seems to be related to the following request:This error only occurs in the Universal GUI. In the Web GUI and the Windows GUI it works fine.Anyone have any idea what is causing this error and what a possible solution is?</description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Wed, 13 May 2026 09:17:05 +0200</pubDate>
        </item>
                <item>
            <title>Excel filtering in Universal GUI shows all domain values instead of dataset values</title>
            <link>https://community.thinkwisesoftware.com/questions-conversations-78/excel-filtering-in-universal-gui-shows-all-domain-values-instead-of-dataset-values-6759</link>
            <description>Within our Thinkwise application, we are currently testing the Excel filtering functionality in the Universal GUI (version 2026.13.0).We noticed a difference compared to the Windows GUI:In the Windows GUI, the Excel filter on a column with a domain (combo) only shows values that actually exist in the current dataset (distinct values).	In the Universal GUI, all domain values are shown, regardless of whether they are present in the current selection.In our specific case, we work with a category / subcategory structure:Both are based on a single domain	The relationship between category and subcategory is stored in a separate table	In practice, a category is always selectedAs a result, the Excel filter on subcategory shows a long list of (for the user) irrelevant values, while we would expect only the valid/used subcategories to appear.Our questionsIs there a way to configure Excel filtering in the Universal GUI so that only values from the current dataset are shown (similar to the Windows GUI)?	Are there best practices for modeling scenarios like this (dependent domain values such as category/subcategory) in the Universal GUI?	Or is this a deliberate design choice, and should this be considered a feature request/idea?</description>
            <category>Questions &amp; Conversations</category>
            <pubDate>Tue, 12 May 2026 10:59:47 +0200</pubDate>
        </item>
                <item>
            <title>Thinkwise Summit 2026</title>
            <link>https://community.thinkwisesoftware.com/news-blogs-21/thinkwise-summit-2026-6790</link>
            <description>Save the date: Thinkwise Summit 2026. On Wednesday 30 September 2026, customers, partners and the broader Thinkwise community come together for a day of insight, inspiration and networking, at a new venue: NBC in Utrecht. What can you expect? Customer sessions: Hear directly from organisations like yours how they work with Thinkwise, the choices they&#039;ve made, and what they&#039;ve learned along the way. 	Platform updates: Get up to speed on the latest developments and a look at what&#039;s coming next.	Networking: Spend the day with Thinkwise fellow users, partners, and the broader Thinkwise community.Programme details will follow in the months ahead. Register now and we&#039;ll keep you posted.Register now </description>
            <category>News &amp; Blogs</category>
            <pubDate>Tue, 12 May 2026 08:36:10 +0200</pubDate>
        </item>
            </channel>
</rss>
