Universal Controller 7.8.0.0 Release Notes

Universal Controller 7.8.0.0 Release Notes

 

Release Notes

Universal Controller release 7.8.0.0 contains the following high-level features. For a complete list of all the included features and fixes, please refer to the Universal Controller 7.8.x Maintenance list.

Universal Controller 7.8.0.0 requires Tomcat 10.1.x for deployment with either Java 17 or Java 21.

Tomcat 8.5 (EOL) and Tomcat 9 are no longer supported.

Java 11 is no longer supported.

Architecture

Backlog

Title

Description

Backlog

Title

Description

B-02980

PostgreSQL "Database Type" for Database Connections.

From the Database Connection form, a new PostgreSQL option is available from the Database Type drop-down.

When selected, the form will be pre-populated with a template Connection URL and a Driver for PostgreSQL.

B-21288

PostgreSQL support for Universal Controller database.

Universal Controller now supports PostgreSQL for its database.

Set uc.db.rdbms=postgres in uc.properties, along with the other necessary database configuration properties documented here.

B-06851

Deliver Universal Controller release as a Docker image.

Universal Controller releases are additionally now provided in the form of a Docker image.

B-20247

Add TLS SNI Headers for OMS Clients

OMS Servers can now use TLS SNI. You can specify the OMS Server Address using the following format:

<hostname/ip>:<port>:<SNI hostname>

Port and SNI hostname fields are optional.

B-21487*

Additional failover configuration options

Additional uc.properties configuration properties were introduced to allow more granular configuration of Universal Controller failover engagement.

These are advanced properties and should only be modified under the guidance of support.

Auditing

Backlog

Title

Description

Backlog

Title

Description

E-02127

Change History

You can now enforce the specification of a Change Description when modifying a record.

image-20250331-194521.png

Three system properties have been added to toggle and manage this functionality.

  • Change History Enabled (uc.change_history.enabled)

  • Change History Description Required (uc.change_history.description.required)

  • Change History Retention (uc.change_history.retention)

You can view Change History for a particular record from the Metadata section.

image-20250331-195000.png

See Properties for specifications.

B-20741

Add Promotion Description to Promote Bundle… and Promote… operations.

You can now specify a Promotion Description when promoting via a bundle or directly.

image-20250331-204606.png
image-20250331-203750.png

The Promotion Description is displayed from both the Promotion History and Promotion Schedule.

image-20250331-204134.png
image-20250331-203938.png

Configuration / Management

Backlog

Title

Description

Backlog

Title

Description

B-20711

Controller boundaries - Fetch limits

The maximum value you could set for the following Properties was historically unbounded, as long as it did not exceed the maximum integer value.

  • CLI/Web Service Result Limit (uc.cli.result_limit)

  • Client Export Fetch Limit (uc.export.client.fetch_limit)

  • Scheduled Report Fetch Limit (uc.report.scheduled.fetch_limit)

To allow system administrators more control over managed Universal Controller instances, the following uc.properties properties were introduced to customize the upper boundary of the above properties, respectively.

  • uc.cli.result_limit.maximum

  • uc.export.client.fetch_limit.maximum

  • uc.report.scheduled.fetch_limit.maximum

See Properties for specifications.

B-20712

Backup and Purge override setting

You can now specify a maximum value for the Days Older Than of a Data Backup/Purge configuration. Three new uc.properties have been added:

  • uc.backup.activity.numofdays.maximum

  • uc.backup.audit.numofdays.maximum

  • uc.backup.history.numofdays.maximum

See Properties for specifications.

B-20713

Remove the "No time-constraint" option from Lists

You can now restrict which options are available from Time Constraint selection drop-downs.

New uc.properties have been added:

  • uc.activity.time_window.maximum

  • uc.agent.task_instances.tab.time_window.maximum

  • uc.audit.time_window.maximum

  • uc.history.time_window.maximum

  • uc.target_task_instances.tab.time_window.maximum

  • uc.task_instances.tab.time_window.maximum

  • uc.task_instances.time_window.maximum

  • uc.trigger_task_instances.tab.time_window.maximum

See Properties for specifications.

Conversions

Backlog

Title

Description

Backlog

Title

Description

B-13151

Run criteria - Global Evaluate At option (move from Variable only)

Task Run Criteria: You can now use the Evaluate At option for non-variable run/skip criteria, allowing you to push all evaluation to Run Time evaluation. Previously, Evaluate At was only available for variable run/skip criteria.

B-17973

Monitor Task Return Codes

The Use Exit Code On Failed field has been added to Monitor forms to specify if the Monitor will end in a Success status with Exit Code 255 as an alternative to going into a Failed status. 

B-20702

Function: Return Nth Weekday of Month

For this, and all other functions, refer to the Functions user documentation.

B-20703

Function: Return Nth Day of Week in Month

image-20250331-231501.png

For this, and all other functions, refer to the Functions user documentation.

B-21141

Function: Return Nth Day of Week in Month (Advanced)

For this, and all other functions, refer to the Functions user documentation.

B-21142

Function: Return Nth Weekday of Month (Advanced)

For this, and all other functions, refer to the Functions user documentation.

B-21392

Add new built-in variable: ${ops_avg_duration}

For this, and all other built-in variables, refer to the Built-In Variables user documentation.

B-21485

Add splitPreserveAllTokens parameter to Delimited Value functions to support empty delimited values.

A new optional parameter, splitPreserveAllTokens, has been added to the following functions:

  • _varDelimitedValue

  • _varDelimitedValueCount

  • _outputDelimitedValue

  • _outputDelimitedValueCount

  • _outputDelimitedValueFromTask

  • _outputDelimitedValueCountFromTask

If splitPreserveAllTokens is true, adjacent delimiters are treated as delimiters for empty tokens; otherwise, adjacent delimiters are treated as one delimiter. Default is false.

Dependency Modernization

Backlog

Title

Description

Backlog

Title

Description

B-20611

Add support for Tomcat 10.1.x, and drop support for Tomcat 8.5.x and 9.x.

Universal Controller 7.8.0.0 requires Tomcat 10.1.x for deployment.

We have dropped support for Tomcat 8.5 (EOL) and Tomcat 9 as there is a significant breaking change with Tomcat 10.x: specifically, the Java package used by the specification APIs has changed from javax to jakarta. Furthermore, Spring Framework / Security 6 requires a minimum of Tomcat 10.

B-20612

Drop support for Java 11.

We have dropped support for Java 11, as Spring Framework / Security 6 requires a minimum of Java 17 at runtime.

B-20613

Add support for Java 21.

In addition to support for Java 17, Universal Controller now supports Java 21.

B-20614

Spring Framework / Spring Security integration and migration from 5.x to 6.x.

Universal Controller has modernized its integration with Spring Framework / Security by migrating to Spring Framework 6.

Spring Framework 6 requires a minimum of Java 17 at runtime, as well as a minimum of Tomcat 10 (for Jakarta EE 9 compatibility).

B-20666

B-21365

User Interface framework migration from 12.1p to 14.1p.

We have migrated our User Interface framework to a version compatible with Jakarta namespaces, a requirement for deploying with Tomcat 10.

B-20667

GWT dependency updated from 2.9.0 to 2.12.0.

Universal Controller GWT Web Toolkit dependency has been updated to 2.12.0.

B-20700

SLF4J dependency updated from 1.7.x to  2.0.16.

To align with other Universal Controller dependencies that have moved to SLF4J2, the Simple Logging Facade for Java has been updated from 1.x to 2.x.

Universal Controller continues to use Apache Log4j 2 as its logging implementation; however, as part of this release, logging associated with the Platform Log Level property is now consolidated into the uc.log.

The Apache Log4j 2 dependency also had a minor update from 2.21.1 to 2.24.3.

B-21291*

Update Apache Commons DBCP (from 2.8 to 2.12) & Apache Commons Pool (from 2.9 to 2.12)

Our Database connection pooling dependencies have been updated to apply bug fixes and enhancements.

B-21397

Upgrade Jakarta Mail dependency to Angus Mail.

Angus Mail is the direct successor of JavaMail/JakartaMail. This update relates to breaking the tight integration between Jakarta Mail Specification API and the implementation.

Secrets Management

Backlog

Title

Description

Backlog

Title

Description

B-21551*

Add HashiCorp Vault credential provider parameter(s) for path prefixes.

The HashiCorp Vault credential provider will now use the MOUNT_PATH provider parameter to set the prefix path depth automatically so that the "data" qualifier is injected into the path at the proper location.

For example, if MOUNT_PATH is specified as stonebranch/secrets/kv-v2 and SECRET_PATH as uc, then the "data" qualifier will be injected into the path as follows:

/v1/stonebranch/secrets/kv-v2/data/uc

If the MOUNT_PATH provider parameter is not specified, then the path prefix depth of SECRET_PATH is assumed to be 1.

B-21552*

Add HashiCorp Vault credential provider parameter(s) for namespace feature (Vault Enterprise).

The NAMESPACE provider parameter will be added to support specifying a HashiCorp Vault namespace . If the NAMESPACE is specified, then the X-Vault-Namespace header will be set for both authentication and read requests. Final paths for all requests will be relative to the header value.

For example, the final path given the provider parameters below would be:

/v1/stonebranch/secrets/kv-v2/data/uc

image-20250331-215936.png

Requires Vault Enterprise or HCP Vault Dedicated cluster.

Web Service API

Backlog

Title

Description

Backlog

Title

Description

E-02096*

Task Instance Read (Full Record)

You can now read the full details of a specified task instance through the Task Instance Read Web Service API.

B-21145*

Task Instance List Advanced - Ability to exclude task instance Output

You can now specify EXCLUDE as the instanceOutputType for the Task Instance List Advanced Web Service API. This will exclude the task instance output from the API response.

B-21262*

Task Instance List / Task Instance List Advanced - Ability to specify Sort field/order

You can now sort task instances by a specified field (startTime or updatedTime) and direction (ascending or descending) with the List and List Advanced Task Instance Web Service API.

B-21296

Additional Fields for Global Variable READ

New read-only properties have been added to Global Variables: created, createdBy, updated, and updatedBy. This affects the Read and List Advanced (with scope = global) Variable Web Service APIs.

B-21376*

Task Instance List / Task Instance List Advanced - Add templateId/templateName

The templateId and templateName are now returned by the List Task Instances Web Service response automatically.

The List Task Instances Advanced Web Service now supports templateId and templateName as responseFields to optionally return templateId and templateName.

B-21527*

Task List / Task List Advanced - Reduce the number of queries

Optimizations were made to reduce the number of fetches, under certain circumstances, for both the List Tasks and List Tasks Advanced Web Services.

D-12713

Task output retrieval does not verify STDOUT was received.

This not a feature, but is noted in the release notes as it has a backwards compatibility impact.

In prior releases, if STDOUT and STDERR were requested, and only STDERR was retrieved due to a problem retrieving STDOUT, such as reaching maximum OMS message size, the API would have returned successfully, however, now it will return HTTP response status code 500 with the following message.

Failed to retrieve output; expected output type STDOUT not returned.

Workload Analytics / Observability

Backlog

Title

Description

Backlog

Title

Description

B-20714

B-20715

Monitoring for both licensed monthly executions and total monthly executions.

You can now view statistics for both licensed monthly executions and total monthly executions. Previously, you could only view licensed monthly executions.

From the System Details widget and metrics, you can now see:

  • Licensed Monthly Executions - the instance count applicable for the customer's License Key.

  • Monthly Executions - the instance count for all instances, regardless of type and regardless the customer's License Key.

See Licensing for more details.

Clicking on the report icon next to Licensed Monthly Executions will display the built-in UAC - Licensed Monthly Task Instance Executions report, where as, clicking the report icon next to Monthly Executions will display the built-in UAC - Monthly Task Instance Executions report.

You can also run these built-in reports directly from Reports.

Additionally, a new Monthly Executions gauge metric, uc_monthly_executions, was introduced that returns the total number of completed (Success or Finished) task instance executions for the current month by given type and status.

B-20716

Prometheus - Universal Agent Status Gauge

A new Universal Agent Status gauge metric, uc_agent_status, has been added to externally monitor the status of registered Universal Agents.

B-20717

Prometheus - Active Task Instances Gauge

A new Universal Controller Active Task Instances gauge metric, uc_task_instance_active, has been added to externally monitor the number of currently active instances by a given status.

A sample visualization of this metric is shown below.

image-20250331-200151.png

B-20718

Prometheus info available locally on disk

Support for configuring Universal Controller to write Prometheus metrics to file.

As a best practice, the Monitor Web Service should be used for scraping metrics.

This is an advanced configuration and should only be used in exceptional cases and under the guidance of support.

B-21337*

Add the associated User Id (Username) to logging for large / long running queries.

To aid in debugging long running queries, Universal Controller will now log the User Id (Username) along with the query information, for example:

2025-03-31-14:18:44:465 -0400 INFO [http-nio-9090-exec-2 @@14:17:24.237578900-Q] (User: john.doe) Query took 1 Minute 2.718 Seconds to prepare & execute and 5.318 Seconds to process results. Total time: 1 Minute 13.268 Seconds SQL: <SQL_query> Parameters: [<SQL_parameters>]

B-21379

Prometheus - Upgrade Java client from 0.12.0 to 1.3.3

Some Prometheus metric names were not compliant with the OpenMetrics specification. The following metrics have been renamed:

  • jvm_memory_bytes_committed -> jvm_memory_committed_bytes

  • jvm_memory_bytes_init -> jvm_memory_init_bytes

  • jvm_memory_bytes_max -> jvm_memory_max_bytes

  • jvm_memory_pool_bytes_committed -> jvm_memory_pool_committed_bytes

  • jvm_memory_pool_bytes_init -> jvm_memory_pool_init_bytes

  • jvm_memory_pool_bytes_max -> jvm_memory_pool_max_bytes

  • jvm_memory_pool_bytes_used -> jvm_memory_pool_used_bytes

  • jvm_memory_pool_collection_bytes_committed -> jvm_memory_pool_collection_committed_bytes

  • jvm_memory_pool_collection_bytes_init -> jvm_memory_pool_collection_init_bytes

  • jvm_memory_pool_collection_bytes_max -> jvm_memory_pool_collection_max_bytes

  • jvm_memory_pool_collection_bytes_used -> jvm_memory_pool_collection_used_bytes