Version : 90
Released : 2026-09-06
Changes in this Release
Issue |
Type |
Module(s) |
Description |
|---|---|---|---|
4956 |
Feature |
Actions can now set a custom property value to a fixed value or to the result of an expression evaluated when the action runs — for example a due date of today() + days(10), the acting user, or another of the object's own properties. A value that comes out empty — whether from an expression or from data collection — clears the property, the same as Clear Property. Action preconditions and standards rule logic also gain int() and float() conversions, and an HTML custom property collected by an action is now entered through a rich-text editor. |
|
5114 |
Bug |
Tooltips on datapoint widgets in the Test Case editor and on the LLM agent session list no longer raise a background error when the surrounding content refreshes while a tooltip is appearing. |
|
5178 |
Feature |
AI usage is now limited by cost rather than tokens. Each organization has a monthly AI budget and a daily per-user cost limit, and the AI usage report shows the cost of each day's usage. |
|
4978 |
Feature |
TrialGrid now automatically rotates stored iMedidata service account passwords on a schedule. |
|
5061 |
System |
Test case run settings are now stored as individual overrides on top of code-defined defaults, so new settings can be added without a database migration. |
|
5064 |
System |
Veeva Vault API rate limits are now recognised and waited out. |
|
5097 |
Bug |
Test Case Run results now keep showing the Running state for the step in flight, and show the final state of a step that was running when a run failed or was cancelled without needing to reload the page. Results arriving for a scenario whose steps have not been displayed yet are no longer lost. |
|
5103 |
Feature |
Veeva Rules that read an item on a linked form now generate test cases. The generated test enters data on both forms and links them with the "I link form" step, including when the rule reaches the linked form through a Form Link item. |
|
5114 |
Bug |
Tooltips on datapoint widgets in the Test Case editor and on the LLM agent session list no longer raise a background error when the surrounding content refreshes while a tooltip is appearing. |
|
5123 |
Feature |
Test steps checking a Folder name now capture a screenshot of the subject's folders when the expected name is not found. |
|
5129 |
Bug |
Test Case steps which require a text block are now flagged in the editor when the block is missing, and fail with a clear message rather than an internal error if run. |
|
5146 |
System |
TrialGrid validation tests now stop the tests the first time the credentials for a shared test account are rejected, rather than repeating the same failed login until the account is locked out. This change is internal to TrialGrid validation and does not impact user test case runs. |
|
5151 |
Bug |
Test Case Run workers now scale down reliably when demand drops, and finish their in-progress Test Case Runs instead of pausing them. |
|
5162 |
Bug |
Veeva test steps that cannot capture a screenshot now report the missing evidence instead of passing silently, and TrialGrid restarts the browser when screenshots repeatedly fail. |
|
5175 |
Feature |
iMedidata service accounts are now held per organization. |
|
5177 |
Bug |
Deleting a Test Run or Test Case now warns when Test Cases are still running and cancels them, and deleting a Draft, Project or URL cancels any running Test Cases. |
|
5183 |
Feature |
Test steps which check received emails now ignore whitespace, line breaks and case differences when matching the email subject and message text. |
|
5201 |
Feature |
Data entry is faster: TrialGrid now reads Rave's own save response to see whether the save changed the Subject's Folders or Forms, and only re-reads the Subject when it did. |
|
5202 |
Feature |
The receive email Test Case steps now accept placeholders such as {subject_name} and {testcase_name} in the expected subject and message. |
|
5200 |
Bug |
Document Templates and Test Case scripts can now only access the objects and attributes listed in the TrialGrid Object Model Reference. |
|
5204 |
Bug |
Veeva data entry steps now recover when the browser is lost mid-run: TrialGrid relaunches the browser and resumes instead of ending the run as Cancelled. |
|
5094 |
Feature |
The Veeva Test Set Run wizard now offers the studies and sites the Vault account can reach rather than asking for them to be typed. |
|
5207 |
Bug |
Test case runs are no longer started by workers left over from a previous release, so runs no longer fail against updated TrialGrid data. |
|
5220 |
Bug |
Veeva Rules that use the And() and Or() functions, or that do numeric comparisons on codelist items such as severity or grade scales, now generate Test Cases correctly instead of producing nothing. When an optional additional scenario cannot be generated, the Test Case is still created and records the reason as a comment, and internal errors during Test Case generation are now reported instead of silently producing no scenarios. |
|
5228 |
Bug |
Deleting a Test Run now completes immediately and reliably, however many Test Cases, results and log entries it recorded. The run disappears from TrialGrid straight away and its data is removed in the background. |
|
5218 |
Bug |
Veeva rule bindings containing a hyphen in a form label are now parsed correctly. When a rule references a form TrialGrid cannot resolve, the error now names the Rule Bindings that were skipped and the level each name actually sits at, instead of reporting an unrelated missing form. A rule stops only when none of its Rule Bindings can be parsed. |
|
5225 |
Bug |
Test Case Runs that use the same named subject on the same study and site no longer run at the same time. Subjects visited by a Test Case Run on the new Rave EDC are now recorded individually rather than as a single unidentified entry, which changes what document templates listing them show for runs from this release onwards. |
|
5230 |
Bug |
Rules that call a function Veeva does not support in rules now report which function is the problem, instead of a low-level parser error. |
|
5231 |
Bug |
Progress logs in the Test Case Advisor and library Draft import modals now only follow new messages while you are at the bottom of the log, so you can scroll back and read earlier messages while generation is still running. |
|
5219 |
Bug |
A Vault domain can be registered by more than one organization, each with its own account, and a duplicate registration no longer fails a Test Case Run at start-up |
|
5268 |
Bug |
Test Cases in a Veeva Draft can now be exported to Excel. The Test Data upload, which reads a Rave Folder/Form/Field file, is no longer offered for Veeva Drafts. |
|
5270 |
Bug |
Editing a Test Case Template in a Veeva Draft now updates the Test Cases that include it. |
|
5271 |
Bug |
A test run whose save was refused by Rave with "ChangeCode can not be zero!" now reloads the form and tries once more, which recovers the save when the browser session had lost the Change Codes it started with. Where the Rave role genuinely has no Change Codes configured for the study, the run now says so and names the role, instead of repeating Rave's message. |
|
5252 |
Feature |
Data entry steps now check the values TrialGrid entered were stored, retrying a save that stored nothing and failing the step where the stored values differ. |
|
5272 |
Bug |
When a Test Case step enters a value that is not in a Dynamic Search List on a log form, TrialGrid now reports the values the list does contain. |
|
5215 |
Feature |
Empty data columns (Labels, Standards, Test Cases, Custom Properties) in object list views are now selectable in the column picker even when they have no data, and are included in CSV, Excel, PDF, clipboard and print exports when shown. |
|
5216 |
Feature |
Users can now view and bulk assign users from spreadsheet views via an Assignments column. |
|
4956 |
Feature |
Actions can now set a custom property value to a fixed value or to the result of an expression evaluated when the action runs — for example a due date of today() + days(10), the acting user, or another of the object's own properties. A value that comes out empty — whether from an expression or from data collection — clears the property, the same as Clear Property. Action preconditions and standards rule logic also gain int() and float() conversions, and an HTML custom property collected by an action is now entered through a rich-text editor. |
|
5131 |
Bug |
Comparing two Veeva Drafts with 'Ignore Custom Properties' now compares the built-in Veeva object types on their standard properties, ignoring only Custom Properties added by users. |
|
5133 |
System |
Whether a Property is part of a Veeva object's built-in definition or was added by a user is now recorded on the Property itself, so Draft compares which ignore Custom Properties stay correct as the Veeva schema changes. |
|
5164 |
Bug |
Deleting a custom object now preserves the earlier activity history of both the object and any child objects removed with it, and the deletion is recorded as "[Deleted <object type>] Deleted <identifier>" wherever it is performed. Deleting an object definition likewise preserves the history of every object built from it and from its child definitions. |
|
5174 |
Feature |
Custom Properties which are part of the built-in definition of an object type can no longer be edited, deleted or copied. |
|
5152 |
Bug |
Changing a Custom Property's type now recalculates the identifiers of Custom Objects built from that property, so they no longer keep the old values. A Reference Property's target Object Definition can no longer be changed once values are stored against it. |
|
5217 |
Bug |
Changing the Display Order of a Custom Property that forms part of a Custom Object identifier now rebuilds those identifiers, instead of leaving them to change on their own later. |
|
5001 |
Feature |
Document Template reports can now be run from Draft object listings such as Forms, Fields and Custom Objects. The report receives the objects selected on the page and those matching the active search and filters. |
|
5033 |
Feature |
The Document Template AI tag now supports effort levels, reports truncated output instead of silently clipping it, and new ai_json_list and ai_json_object functions return structured data for the template to lay out. |
|
5200 |
Bug |
Document Templates and Test Case scripts can now only access the objects and attributes listed in the TrialGrid Object Model Reference. |
|
5113 |
Bug |
Inline scripts in dynamically loaded page fragments and in the help search page now carry the correct Content Security Policy nonce. |
|
5061 |
System |
Test case run settings are now stored as individual overrides on top of code-defined defaults, so new settings can be added without a database migration. |
|
5104 |
System |
Recent activity lists and test case validation now respond quickly on drafts, projects, studies and organizations with large change histories. |
|
5151 |
Bug |
Test Case Run workers now scale down reliably when demand drops, and finish their in-progress Test Case Runs instead of pausing them. |
|
5166 |
Bug |
Test outputs belonging to a deleted project or URL are now removed from storage when the project or URL is permanently deleted. |
|
5171 |
Bug |
The task-metrics recorder no longer produces duplicate key errors in the database log when several worker processes record the first task of a new hour. |
|
5207 |
Bug |
Test case runs are no longer started by workers left over from a previous release, so runs no longer fail against updated TrialGrid data. |
|
5104 |
System |
Recent activity lists and test case validation now respond quickly on drafts, projects, studies and organizations with large change histories. |
|
5107 |
Bug |
The Linked Objects count and tab on standards library drafts now load quickly, even for libraries used by many studies. |
|
5151 |
Bug |
Test Case Run workers now scale down reliably when demand drops, and finish their in-progress Test Case Runs instead of pausing them. |
|
5201 |
Feature |
Data entry is faster: TrialGrid now reads Rave's own save response to see whether the save changed the Subject's Folders or Forms, and only re-reads the Subject when it did. |
|
5209 |
Bug |
Bulk Compare updates are substantially faster on large selections, so copying many changes between Drafts in one operation no longer times out. |
|
4990 |
Feature |
Project Roles are now defined and managed at the organization level and shared across all of an organization's URLs, instead of being defined separately per URL. Role management (add, edit, delete, and a new bulk merge) is available to organization administrators from organization navigation. |
|
5156 |
Feature |
Project role descriptions can now be edited. |
|
5113 |
Bug |
Inline scripts in dynamically loaded page fragments and in the help search page now carry the correct Content Security Policy nonce. |
|
5200 |
Bug |
Document Templates and Test Case scripts can now only access the objects and attributes listed in the TrialGrid Object Model Reference. |
|
5107 |
Bug |
The Linked Objects count and tab on standards library drafts now load quickly, even for libraries used by many studies. |
|
5161 |
Bug |
Standards compliance recalculation now continues correctly when an object is deleted while the calculation is in progress. |
|
5170 |
Bug |
Removing a standards deviation explanation, deleting a Draft, a Project or a Role, and revoking an API token no longer mark the earlier activity history of the surviving Project, URL or account as deleted. Existing activity records are repaired. |
|
5193 |
Bug |
Compare rows for added and deleted child objects are now labelled with the object's own identifier, and attributes that were previously hidden behind that label are shown again. |
|
5170 |
Bug |
Removing a standards deviation explanation, deleting a Draft, a Project or a Role, and revoking an API token no longer mark the earlier activity history of the surviving Project, URL or account as deleted. Existing activity records are repaired. |
|
5172 |
Bug |
Deleting a Form, Folder, Matrix or Dictionary no longer destroys the activity history of the objects deleted with it; those records are now kept and marked as deleted |
|
5198 |
Feature |
A new Import Applicable Library Objects command on the Draft home page finds Matrices, Edit Checks and Derivations in the Draft's Standard Library whose Folders, Forms and Fields already exist in the Draft, and copies the ones you select along with any Custom Functions they use. |
|
5208 |
Bug |
A bulk Compare update that cannot finish now leaves the target Draft untouched instead of applying only part of the changes, so the operation is safe to retry. |
|
5209 |
Bug |
Bulk Compare updates are substantially faster on large selections, so copying many changes between Drafts in one operation no longer times out. |
|
5193 |
Bug |
Compare rows for added and deleted child objects are now labelled with the object's own identifier, and attributes that were previously hidden behind that label are shown again. |
|
5231 |
Bug |
Progress logs in the Test Case Advisor and library Draft import modals now only follow new messages while you are at the bottom of the log, so you can scroll back and read earlier messages while generation is still running. |
|
5273 |
Bug |
Organization activity lists now include activity from Veeva Vaults. |
|
5274 |
Bug |
The menu on a Field in the Form Editor can now be used after Fields have been dragged; previously it opened behind the Fields below it, making Clone and Delete unreachable. |
|
5215 |
Feature |
Empty data columns (Labels, Standards, Test Cases, Custom Properties) in object list views are now selectable in the column picker even when they have no data, and are included in CSV, Excel, PDF, clipboard and print exports when shown. |
|
5231 |
Bug |
Progress logs in the Test Case Advisor and library Draft import modals now only follow new messages while you are at the bottom of the log, so you can scroll back and read earlier messages while generation is still running. |
|
4963 |
Bug |
Validation-doc issue pages now handle escaped characters properly in titles and content. |
|
5076 |
System |
The Validation Plan now identifies ALCOA++ as the governing framework for data integrity and maps each attribute to the controls which deliver it. Python package licences are now checked against an approved list, with each exception and the reason for it published in the Python Packages Inventory. |
|
5077 |
System |
The Annex 11 personnel response and the Validation Plan Roles and Responsibilities section now state how independent review is achieved. Each change to the software is reviewed and approved by someone other than its author, and a release assembles work which has already been reviewed in that way rather than acting as a further review of the content itself. |
|
5089 |
Feature |
A check in the build pipeline now reports when GitLab.com has been upgraded in order to ensure validation of gitlab for TrialGrid Ltd is maintained. |
|
5195 |
Feature |
Every TrialGrid behave test scenario must now name the issue it validates, enforced when the build runs, so the validation documentation continues to show a test for every issue. This change is internal to TrialGrid validation and does not impact user test case runs. |
|
5058 |
Feature |
Veeva Lab Codelists and Lab Unit Codelists now import into TrialGrid as object types in their own right, so a Lab codelist and a study codelist sharing a name can both be held in the same draft. Items referencing a Lab codelist resolve to it via new Lab Codelist and Lab Unit Codelist properties. Existing drafts are converted automatically; Lab codelists previously skipped because of a name collision need a re-import from the SDS. |
|
5064 |
System |
Veeva Vault API rate limits are now recognised and waited out. |
|
5103 |
Feature |
Veeva Rules that read an item on a linked form now generate test cases. The generated test enters data on both forms and links them with the "I link form" step, including when the rule reaches the linked form through a Form Link item. |
|
5131 |
Bug |
Comparing two Veeva Drafts with 'Ignore Custom Properties' now compares the built-in Veeva object types on their standard properties, ignoring only Custom Properties added by users. |
|
5133 |
System |
Whether a Property is part of a Veeva object's built-in definition or was added by a user is now recorded on the Property itself, so Draft compares which ignore Custom Properties stay correct as the Veeva schema changes. |
|
5162 |
Bug |
Veeva test steps that cannot capture a screenshot now report the missing evidence instead of passing silently, and TrialGrid restarts the browser when screenshots repeatedly fail. |
|
5204 |
Bug |
Veeva data entry steps now recover when the browser is lost mid-run: TrialGrid relaunches the browser and resumes instead of ending the run as Cancelled. |
|
5094 |
Feature |
The Veeva Test Set Run wizard now offers the studies and sites the Vault account can reach rather than asking for them to be typed. |
|
5220 |
Bug |
Veeva Rules that use the And() and Or() functions, or that do numeric comparisons on codelist items such as severity or grade scales, now generate Test Cases correctly instead of producing nothing. When an optional additional scenario cannot be generated, the Test Case is still created and records the reason as a comment, and internal errors during Test Case generation are now reported instead of silently producing no scenarios. |
|
5218 |
Bug |
Veeva rule bindings containing a hyphen in a form label are now parsed correctly. When a rule references a form TrialGrid cannot resolve, the error now names the Rule Bindings that were skipped and the level each name actually sits at, instead of reporting an unrelated missing form. A rule stops only when none of its Rule Bindings can be parsed. |
|
5230 |
Bug |
Rules that call a function Veeva does not support in rules now report which function is the problem, instead of a low-level parser error. |
|
5219 |
Bug |
A Vault domain can be registered by more than one organization, each with its own account, and a duplicate registration no longer fails a Test Case Run at start-up |
|
5268 |
Bug |
Test Cases in a Veeva Draft can now be exported to Excel. The Test Data upload, which reads a Rave Folder/Form/Field file, is no longer offered for Veeva Drafts. |
|
5270 |
Bug |
Editing a Test Case Template in a Veeva Draft now updates the Test Cases that include it. |
|
5273 |
Bug |
Organization activity lists now include activity from Veeva Vaults. |