Ask a question or have a conversation about the Thinkwise Platform
Recently active
Compared to other platforms, Thinkwise really excels in productivity. Especially the fact that creating a Data Model immediately results in a working Application is unparalleled! One of the current strategic priorities is to double down on this development speed of the Thinkwise Platform: we strive to make every Developer a mythical 10X Developer!There are a lot of angles we can work in order to achieve that goal. As a first, we want to fix unnecessary limitation in the Software Factory (SF). This means we want to tackle those things for which you as Developer have to create workarounds to get functionality working the way you(r users) need it.There are a lot of great Ideas out there and of course we'll review the existing ones. But I would also like to call upon the Community to highlight which existing Ideas would be your priority and/or to create new Ideas related to eliminating SF workarounds (please keep it to this scope in this topic).Could you please:Reply with Ideas that would
I have a few smoke tests that seem to be weird.I have a prefilter like:t1.sales_manager_user_id = (select top (1) u.user_id from dbo.users as u where u.tsf_user = dbo.tsf_user() and u.sales_manager = 1)My dev user isn't setup in dbo.users so dbo.tsf_user() won’t find me.The smoke test tests:-- Prefilter appointment_list.i_am_sales_managerselect top 1 * from ( select 0 as tsf_dummy from "appointment_list" t1) t1where sales_manager_user_id = (select top (1) u.user_id from dbo.users as u where u.tsf_user = dbo.tsf_user() and u.sales_manager = 1)and gives:Invalid column name 'sales_manager_user_id'.But the colum does exist in dbo.appointment_list but it doesn't in the subquery that is used by the smoketest generator (what is tsf_dummy doing here?):select 0 as tsf_dummy from "appointment_list" t1In my perception the prefilter query is added in runtime as a simple where clause:SELECT *FROM "appointment_list" t1WHERE sales_manager_user_id = (
Hi,In the past we managed to create a very nice form list grid in the Windows GUI: Every line in the invoice is shown here with dynamic labels.It is build using a VIEW and for most fields the label width is set to 0. The shown labels are fields in the VIEW which we can manipulate. For example the ‘Totaal (€)` could have been `Totaal ($)` if that specific row had prcies in dollars. This way we were able to use dynamic field labels (I think that is a native option in Universal?) and by setting the exact sizes in pixels we were able to get it all nicely positioned.The exact same screens looks wildly different in the Universal gui: In the universal gui, as it is a web interface I guess, it doesn’t adhere to the pixel sizes but uses the Max. form-col space (%) which makes it virtually impossible to position the fields at the exact location I need them to be. It’s already way better than it originally was but for example the fields which I filled with “NULL” to make them visible are complete
We are running SF 2026.1.11 Recently I started using Copy to clipboard (form) on certain domain entities. I only now encounter the issue that when I want to edit in a grid, the column is not available for new or existing rows. It works fine on tasks and forms, but can't change data in a grid edit?
Hi, we noticed that in the universal gui we cannot change the filter behaviour anymore: At the top in the windows gui we can still switch between equals, between, empty etc…The bottom screenshot shows the exact same filter form in the universal gui and we can only use the one filter option selected in subjects.Am missing something here or is this something we need to get used to?
The Edit in Grid mode, as we knew it from previous versions, no longer seems to be available. Is there any plan to bring this functionality back?We would very much like to see it return, allowing end users to enable Edit in Grid for specific datasets. The ability to navigate from record to record and modify field values directly within the grid, without having to repeatedly click Save and Edit for each change, was very powerful.This functionality is also missed in the Software Factory, where it provided a much more efficient editing experience.Could you share whether this feature is on the roadmap?
I am trying to change a file link control, because it is deprecated, to a file upload control.However, the file link opened a folder on the disk. With file upload that does not seem to work.Is it possible to open a folder on the disk from a control?If not, is it possible to open a folder on a disk with the process action open link?From this community post is it correct that there is no option yet to open a folder?https://community.thinkwisesoftware.com/ideas/file-link-and-universal-open-files-directly-6473
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.
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 mechani
Hallo, I have a question regarding database schemas in Thinkwise. Is it possible to use tables from a custom database schema (for example, a schema other than dbo) within a Thinkwise application? If yes, are there any considerations or limitations when using a different schema?What is the recommended approach when using tables from a schema other than dbo ? Thank youJheng
Hi all,I recently set up an SMTP connector process action to send emails with attachments stored in an AWS S3 file storage location, and collected the full set of file storage status codes along the way (-6, -7 and -8), so I feel qualified to ask this question now. 🙂What I learned:- **-6**: the storage location wasn't linked to the process action yet. Fixed.- **-7**: *Storage attachment path* must be the full absolute path *including* the storage location root (e.g. `https://bucket.s3.eu-central-1.amazonaws.com/2026/06/file.jpg`) — even though the storage location is already selected on the process action itself. A relative path within the storage location is rejected. Slightly surprising, and not great for maintainability if the storage location ever changes, but okay.- **-8**: this is where I'm stuck. I tried semicolon-separated paths to attach multiple files, the way *Disk file attachments* works. The connector treats the whole string as a single (non-existent) file path. The docum
I'm looking for a way to disable validation rules in the Thinkwise Platform that didn't originate from the current branch.The use case is when working in a feature branch: I'd like only the validations introduced or modified in that branch to be enforced, while validations inherited from other branches (e.g. main or parent branches) are ignored.Is there a built-in setting, script, or recommended approach to achieve this? Has anyone implemented something similar in their development workflow?
In the Windows GUI when exporting data it is possible to choose whether to export database values or translated values separately for the Headers and the Data.I’m not sure if this already possible in a newer version of the Universal GUI. In version 2026.1.12.0.0 this cannot be chosen separately.So, my question is whether this is already available or whether it might be added back in the future.
Hi,I am using Testwise generated controls to create a purchase order. The test works, but filling the form feels quite slow.Example code:const expectedDescription = faker.person.firstName();const purchaseOrderMain = await page.subject.PurchaseOrderMain;await purchaseOrderMain.form1.descriptionField.fill(expectedDescription);await purchaseOrderMain.form1.supplierIDLookup.lookupSelect('Demo supplier');await page.getByTestId('form-field__delivery-date__date__input').fill('01/01/2027');await purchaseOrderMain.form1.heatNoMandatoryCheckbox.check();await purchaseOrderMain.toolbar482460FA.getSaveButton().click();In the latest run, the purchase order was created as Purchase-0019. The form filling and saving part took roughly 35-40 seconds before the next step continued. I also see repeated warnings like:Timeout reached while waiting for response. Proceeding anyway.My question is about the slow interaction while filling the purchase order form.Questions:Is this delay expected when using generat
Is it possible to send a WCF web service request in the MSBIN1 format using the Thinkwise Platform?I have tested a standard Web Connection, but it is unclear whether the MSBIN1 format is supported. Could you please clarify if there is a way to send requests to a WCF service that requires MSBIN1-encoded messages?
Hi,I'm trying to understand the expected behavior of the following grid validation methods:await grid.verifyGridRecordCount(expectedCount);await grid.hasNoRowsOverlay();I tested them on two different generated subjects/grids.For verifyGridRecordCount():getRowByIndex() and getCellValuesByColId() work correctly on the same generated grid. However, verifyGridRecordCount() always times out after 10 seconds. I tried different expected values (for example 1, 3, 6, and even the visible total count), but the result is always the same.For hasNoRowsOverlay():When the grid is empty, it correctly returns true. After records are displayed in the grid, I expected it to return false (as described in the documentation), but instead it waits for the overlay locator and eventually times out.Am I using these methods correctly, or are there any prerequisites or limitations for using them?For reference, other generated grid methods on the same subject, such as getRowByIndex() and getCellValuesByColId(), wo
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,
Hi everyone,When I try to fetch the application structure using the PAT via Bearer authentication, I get a 403 error GET /indicium/iam/appl/ii/$metadataHowever, the exact same call works perfectly fine when I switch to Basic Authentication (username/password of the service account).Furthermore, I have no issues at all when fetching actual data from tables (like /employee) using the PAT. It seems to fail on the /$metadata endpoint.The service account has Available for Webservices enabled and full Fetch rights in IAM.Does anyone know why the PAT is being rejected specifically on the metadata endpoint while working fine everywhere else?
Hi,While working with Testwise I noticed that the documentation describes generated Task Bar components such as:subject.task1subject.task2However, none of the generated subjects in our project contain these properties.Instead, only components such as toolbars, grids, forms and tabs are generated.Could you explain under which circumstances Task Bar components are generated?Are they only generated for specific Thinkwise screen types, or should they always be available when a screen contains task buttons?If Task Bar components are not generated, what is the recommended way to interact with task buttons?Thank you.
We have some process flows which open a new document. Since we are transitioning to Universal, we have a Windows variant and a Universal variant of the subject. Now, I need to determine in the process flow which variant to open based on the platform that is being used. Can I get this data during runtime?I only need this solution temporarily until the Windows version has been made inactive, but still it would lead to disruption of work if I cannot control this while both versions are available.If there is another solution I would also like to hear it.
Hi,Update: After trying all generated subjects, I still cannot find a subject that targets the visible grid. It appears the generated root locator does not exist in the rendered DOM. I'm trying to use the generated grid instead of Playwright locators.According to the documentation, a generated subject should allow interactions like:await subject.grid1.getRowByIndex(0);await subject.grid1.getCellByExactValue('Some value');await subject.grid1.getCellValuesByColId('column_id');However, all generated subjects I tried fail because the generated root locator cannot be found in the DOM.For example, Testwise generates locators like:[data-testid="screen__..."]but those data-testid values do not exist in the rendered page. As a result, methods such as:subject.grid1.getRowByIndex(0)subject.grid1.getCellByExactValue(...)subject.grid1.getCellValuesByColId(...)always fail, even though the grid and its rows are clearly visible and can be accessed with standard Playwright locators.My questions are:How
Hi everyone,I’m currently working on a small UX improvement for one of our customers, and I was wondering if anyone has already tackled something similar.The issue is about multi-row selection in a grid. At the moment, the first selected row is visually more prominent than the following ones, because the background color uses a higher opacity:First selected row → opacity: 0.12 Additional selected rows → opacity: 0.06This difference is subtle, but it’s confusing for some users. (🙄) They expect all selected rows to look the same. I’d like to make all selected rows visually identical, meaning the same background color and opacity for the first selected row and all subsequent selected rows. My questionHas anyone:already tried to override the selection styling in the custom.css? or knows which CSS classes/selectors that are used for: the primary selected row additional selected rows And how to make them visually identical?Any hints, selector names, or best practices would be greatly appre
On a Task or Report you can set the “Await result” value to “Optional”.In the docs it is explained like this:Optional - The user has to wait (option 1) but has the possibility to continue the action in the background (option 3). Reports executed in the background can be monitored in the Async action dialog.Where can I find this “Async action” dialog?I know in the windows GUI you had the “Running tasks”, but I cannot find such a thing in the Universal GUI.
Hi,Indicium on our PROD environment is recycled every night at 00:00:00. It seems indicium sometimes tries to start up and delete and recreate the temp .rpt files while they are still being held up by the old indicium, this causes the startup of indicium to fail. We get this error at 00:00:01“Description: The process was terminated due to an unhandled exception.Exception Info: System.UnauthorizedAccessException: Access to the path '***.rpt' is denied. at System.IO.FileSystem.DeleteFile(String fullPath) at Indicium.Startup.<initializeCacheDirectory>g__TryAndDeleteFile|21_0(String filePath) in C:\azp\agent\_work\1\s\src\Indicium\Startup.cs:line 281” In this case the old indicium was only registered as being shutdown at 00:00:08I have checked the rights on the temp files folder, the pool user has full rights. Does anyone know a way to prevent this from happening? I have found the “Disable overlapping recycle” option in the advanced settings of the app pool, this will probably fi
As it turns out the behaviour of the Windows GUI and the Universal GUI differ when it comes to the order of the buttons on a Task and the Confirmation to execute a taskWindows GUI:Universal GUI Can I influence it somewhere to have the default order again as the Windows GUI? We also have “messages” which we can change the order from, but that is useless if they will align with one GUI, but not with the other.
Already have an account? Login
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.