Version : 88

Released : 2026-06-21

Changes in this Release

Issue

Type

Module(s)

Description

4818

Bug

API

The standards explanations API (/api/v2/draft/<id>/standards_explanations/) was making more queries than necessary. This was corrected.

4808

Feature

Admin

There is a new view showing background tasks for TrialGrid admins.

4809

Feature

Admin

There is a new view for TrialGrid admins to monitor background task performance.

4812

Feature

Admin

TrialGrid administrators can now search Task records by type, user, date range, and description on the admin Tasks page.

4879

Bug

Admin

Corrected an error when uploading a spreadsheet to create Object Definitions.

4779

System

Agents

The Help agent and development Test agent have been migrated to the new orchestrator framework.

4841

Bug

Agents

The Test Case Creator agent was incorrectly requiring a field to be chosen for the AddForm check action. This has been corrected.

4844

Feature

Agents

The Test Case creator agent now supports selection of one or more folders.

4815

Feature

Automated Testing

Automated Tests support Rave EDC 2026.2.0

4823

Feature

Automated Testing

The Test Case generator has a new option to repeat all scenarios across a range of folders.

4824

Feature

Automated Testing

The Test Case generator has a new option to repeat all scenarios for record positions 1 and 2.

4825

Feature

Automated Testing

The Test Case generator has a new option to create additional scenarios testing blank values.

4826

Feature

Automated Testing

The Test Case generator has a new option to create additional scenarios testing that queries are closed after being opened.

4840

Bug

Automated Testing

AI generation of Test Cases could fail for edit checks with a custom function action and many check steps. This has been corrected.

4843

Bug

Automated Testing

Veeva Test Case generation was failing for a rule with no bindings. The identifier defined in the Rule will be used.

4845

Bug

Automated Testing

The Veeva Test Case generator was not handling all @PreviousEvent identifiers correctly.

4847

Bug

Automated Testing

The Veeva Test Case generator showed the coded value instead of the entry label when checking the value of a codelist field. It now uses the label.

4848

Feature

Automated Testing

The Veeva Test Case generator now supports the GetAllMatches function.

4849

Feature

Automated Testing

The Veeva Test Case generator now supports the Middle and Substitute functions.

4850

Bug

Automated Testing

Veeva Test Case generation failed to parse rules referencing OID names that start with a digit or hyphen (e.g. 9HPIN, 6MWT, 9-HPT). These names are now accepted.

4851

Bug

Automated Testing

The Veeva Test Case generator did not resolve unknown date/time components for MinDate/MaxDate/MinDateTime/MaxDateTime when a Site timezone argument was supplied. This is now handled correctly.

4852

Bug

Automated Testing

The Veeva Test Case generator now supports the SiteDateTime(date, time) form that combines a Date item and a Time item.

4864

Feature

Automated Testing

Long test case runs can now periodically recycle the browser (quit and relaunch, resuming the run) to release accumulated memory.

4869

Bug

Automated Testing

A Veeva "I should not see the following query" step now correctly passes when the only matching open query differs from the expected text by whitespace or case and the organization does not allow whitespace or case differences in test results. Previously the step incorrectly failed in this situation.

4870

Feature

Automated Testing

A Veeva "I should not see form" step now captures a screenshot of the form's parent event in review mode, providing evidence of the event's form list when the form is correctly absent.

4871

Feature

Automated Testing

Veeva event visibility steps now capture a screenshot of the subject in review mode whenever there is no specific event to show — when "I should not see event(s)" passes, and when "I should see event(s)" fails because an expected event is absent — providing evidence of the subject's event schedule.

4872

Bug

Automated Testing

The Veeva data entry step helper now offers a value dropdown of "true" and "false" for boolean (checkbox) items. The Form column also no longer shows a solitary "." for an incomplete datapoint reference, which previously blocked the column's dropdown search.

4873

Feature

Automated Testing

When a Veeva test step finds that an Event or Event/Form combination does not exist for the subject, subsequent steps that rely on the same Event/Form now fail immediately ("not found in an earlier step") instead of being re-attempted. A passing step clears this state. This matches the existing Rave behaviour.

4874

Feature

Automated Testing

Veeva organizations have a new setting "Allow all events to be added" (on by default). When it is off, adding an event that is not Unscheduled in a Veeva test case is a validation error instead of a warning.

4875

Bug

Automated Testing

Veeva value-check steps (for example "has value") read the value from the API, which does not report visibility. When the item is hidden by form dynamics the field does not appear in the screenshot, so the result text now adds "Item {name} is present but not visible." after checking the loaded form in the browser.

4878

Feature

Automated Testing

You can now register new Rave EDC (2026.2.0+) URLs for Automated Testing; the same Rave URL can be registered by more than one organization.

4897

Bug

Automated Testing

Rave EDC 2026.1.0 test cases were failing. This has been corrected.

4837

Feature

Custom Properties

On a text Custom Property's value management page, you can now delete a value, which clears it (sets it to empty) on all records that use it.

4885

Bug

Custom Properties

A custom object whose name contains a line break no longer loses its library compliance match when opened and saved. The standards-match identifier is no longer stored as a corrupted copy of the identifier when the edit form strips the line break, so compliance correctly falls back to the identifier.

4880

Bug

Diagnostic

Boolean settings on the "Fields should have a SAS Format specified" and "Data Dictionary commas and semicolons" diagnostics are now respected. Previously these toggles had no effect, so the SAS Format diagnostic always checked Text, Integer and Float fields even when those options were disabled (the default). After this fix the SAS Format diagnostic checks only the field types you have enabled, which for most projects reduces the number of findings to Date/Time fields only.

4810

System

Infrastructure / System

An optimization was made to the background job which queues Test Case Runs.

4820

Bug

Infrastructure / System

During brief outages of an internal service, the system reported a misleading error that hid the real problem. This was corrected.

4822

Bug

Performance

The Linked Objects count on library drafts now loads much faster and the count is cached for 5 minutes to avoid constant recalculation.

4827

Bug

Performance

Performance of saving a standards-library object (form, check, folder, dictionary, etc.) is improved. The compliance recalculation for consuming drafts now runs in the background while those objects show as recalculating.

4846

Feature

Performance

Large grids and property sheets now render only the rows in view, keeping TrialGrid fast and responsive even with thousands of rows.

4865

System

Performance

Reduced database load from the page-updates poll: the logged-in-users badge is now cached per organization and the running-test-cases setting is read from cache instead of querying on every poll.

4866

Bug

Performance

The Standards Approvals lists now load on demand with server-side filtering and a row cap, so very large approval sets display faster and do not cause web server errors.

4800

Feature

Permissions

The Project Owner concept has been replaced by Project Roles. When creating a Project you can now optionally assign a user to a Project Role directly from the Add Project page. As with the pre-existing Project Owner workflow, the creator can assign the Role to themselves or to any other URL user this does not require the creator to hold a separate "Manage Users" permission on the URL. All existing Project Owner users have been switched to a new or existing Project Owner Role within that Project. Project Roles that grant the "Assign Users" permission can now add and remove members from the Project Team page. This replaces the Project Owner shortcut that previously allowed owners to manage their team without an explicit URL-level permission.

4831

Bug

Permissions

File and test-data uploads now require the appropriate manage permission, and test data can no longer be uploaded to a locked draft.

4838

Bug

Property Sheets

The HTML cell editor in property sheet spreadsheet views now reuses a single editor instead of stacking duplicate editors when editing multiple cells in succession.

4839

Bug

Property Sheets

Copying rows between grids now always pastes the most recently copied data (no longer a stale earlier copy), and selecting cells with the mouse auto-scrolls the grid when you drag past its edge.

4833

Bug

Security

Changing a user's password now resets its expiry date, so a newly set password is no longer immediately reported as expired.

4831

Bug

Security

File and test-data uploads now require the appropriate manage permission, and test data can no longer be uploaded to a locked draft.

4834

Feature

Security

Organization super-users can now see the identifiers of API tokens held by users in their organization and revoke them from a new API Tokens page on the organization home page. Note that the tokens themselves are only shown at creation time and only a hash of the token value is stored, not the token itself. Super users cannot see the actual API tokens and they are also encrypted to TrialGrid Ltd staff.

4827

Bug

Standards

Performance of saving a standards-library object (form, check, folder, dictionary, etc.) is improved. The compliance recalculation for consuming drafts now runs in the background while those objects show as recalculating.

4832

Bug

Standards

Copying a data dictionary or unit dictionary into a library now recalculates standards compliance for consuming drafts, so their displayed compliance no longer goes stale. Copying many objects into a library at once now recalculates all of their consumers in a single background task rather than one task per object.

4866

Bug

Standards

The Standards Approvals lists now load on demand with server-side filtering and a row cap, so very large approval sets display faster and do not cause web server errors.

4885

Bug

Standards

A custom object whose name contains a line break no longer loses its library compliance match when opened and saved. The standards-match identifier is no longer stored as a corrupted copy of the identifier when the edit form strips the line break, so compliance correctly falls back to the identifier.

4828

Bug

Study build

Excel files that had been repackaged by a security "content disarm and reconstruction" tool were rejected during upload because the rewritten file was no longer recognised as an Excel workbook. Such files are now detected by their internal structure and import correctly.

4821

Feature

UX

TrialGrid Ltd can now create custom icon definitions from a script. This is a admin feature hidden to users.

4836

Feature

UX

Object lists can now be filtered to show only Unassigned objects, and a new Assigned to dropdown lets you filter by one or more specific users or roles.

4839

Bug

UX

Copying rows between grids now always pastes the most recently copied data (no longer a stale earlier copy), and selecting cells with the mouse auto-scrolls the grid when you drag past its edge.

4846

Feature

UX

Large grids and property sheets now render only the rows in view, keeping TrialGrid fast and responsive even with thousands of rows.

4843

Bug

Veeva

Veeva Test Case generation was failing for a rule with no bindings. The identifier defined in the Rule will be used.

4845

Bug

Veeva

The Veeva Test Case generator was not handling all @PreviousEvent identifiers correctly.

4847

Bug

Veeva

The Veeva Test Case generator showed the coded value instead of the entry label when checking the value of a codelist field. It now uses the label.

4848

Feature

Veeva

The Veeva Test Case generator now supports the GetAllMatches function.

4849

Feature

Veeva

The Veeva Test Case generator now supports the Middle and Substitute functions.

4850

Bug

Veeva

Veeva Test Case generation failed to parse rules referencing OID names that start with a digit or hyphen (e.g. 9HPIN, 6MWT, 9-HPT). These names are now accepted.

4851

Bug

Veeva

The Veeva Test Case generator did not resolve unknown date/time components for MinDate/MaxDate/MinDateTime/MaxDateTime when a Site timezone argument was supplied. This is now handled correctly.

4852

Bug

Veeva

The Veeva Test Case generator now supports the SiteDateTime(date, time) form that combines a Date item and a Time item.

4869

Bug

Veeva

A Veeva "I should not see the following query" step now correctly passes when the only matching open query differs from the expected text by whitespace or case and the organization does not allow whitespace or case differences in test results. Previously the step incorrectly failed in this situation.

4870

Feature

Veeva

A Veeva "I should not see form" step now captures a screenshot of the form's parent event in review mode, providing evidence of the event's form list when the form is correctly absent.

4871

Feature

Veeva

Veeva event visibility steps now capture a screenshot of the subject in review mode whenever there is no specific event to show — when "I should not see event(s)" passes, and when "I should see event(s)" fails because an expected event is absent — providing evidence of the subject's event schedule.

4872

Bug

Veeva

The Veeva data entry step helper now offers a value dropdown of "true" and "false" for boolean (checkbox) items. The Form column also no longer shows a solitary "." for an incomplete datapoint reference, which previously blocked the column's dropdown search.

4873

Feature

Veeva

When a Veeva test step finds that an Event or Event/Form combination does not exist for the subject, subsequent steps that rely on the same Event/Form now fail immediately ("not found in an earlier step") instead of being re-attempted. A passing step clears this state. This matches the existing Rave behaviour.

4874

Feature

Veeva

Veeva organizations have a new setting "Allow all events to be added" (on by default). When it is off, adding an event that is not Unscheduled in a Veeva test case is a validation error instead of a warning.

4875

Bug

Veeva

Veeva value-check steps (for example "has value") read the value from the API, which does not report visibility. When the item is hidden by form dynamics the field does not appear in the screenshot, so the result text now adds "Item {name} is present but not visible." after checking the loaded form in the browser.