TIF 2026.1.0 Release Information

This release was published on 2026-02-06.

IMPORTANT: Upgrade to Java 17 and Jakarta packages

The migration to Java 17 and Jakarta packages has been on the list of upcoming planned changes for some time and is now finally implemented. This update ensures compliance with modern Java standards, improves long-term maintainability, and aligns TIF with the Jakarta EE ecosystem.

While this brings benefits, it also introduces breaking changes that require review and updates to custom code, dependencies, and optional components.

Important Changes

The minimum supported Java version is now Java 17 or newer. Please ensure your environment is upgraded before deploying.

Starting with Java 17, several javax packages have been removed from the JDK. To maintain compatibility and align with modern standards, TIF has been updated to use Jakarta packages instead.

If your custom Java code references any of the removed javax packages, it will no longer compile. You must update those references to use the corresponding jakarta packages.

Update Checklist

  1. Upgrade Java to version 17 or newer.

  2. Update imports in your custom code:

    • Replace all javax.* references with the corresponding jakarta.* packages.

  3. Check dependencies:

    • Ensure your build tools include Jakarta libraries instead of Javax.

  4. If an external database is used as TIF database:

    • Upgrade JDBC drivers to versions compatible with Java 17 and place them in ${TIF_ROOT}/lib/custom.

  5. If connections to external destination systems (e.g., JMS brokers, RabbitMQ) are used:

    • Upgrade the client drivers/libraries to versions compatible with Java 17 and place them in ${TIF_ROOT}/lib/custom.

  6. Review third-party libraries (if any is used):

    • Verify compatibility with Jakarta packages.

  7. If Nashorn scripting capabilities are used:

    • Upgrade Nashorn-related JARs to the latest version and place them in ${TIF_ROOT}/lib/custom.

Updated Packages

The following javax packages have been replaced with their Jakarta equivalents:

Old Package (javax) New Package (jakarta) Description JAR File in ${TIF_ROOT}/lib

javax.activation

jakarta.activation

Handles MIME type data activation and content handling.

jakarta.activation-api-2.1.4.jar

javax.annotation

jakarta.annotation

Provides common annotations for Java applications.

jakarta.annotation-api-2.1.1.jar

javax.annotation.security

jakarta.annotation.security

Security-related annotations for Jakarta EE.

jakarta.annotation-api-2.1.1.jar

javax.inject

jakarta.inject

Dependency Injection annotations.

jakarta.inject-api-2.0.1.jar

javax.jms

jakarta.jms

Java Message Service API for messaging.

jakarta.jms-api-3.1.0.jar

javax.jws

jakarta.jws

Web Services annotations (JAX-WS).

(Provided by JAX-WS stack, e.g., jaxb-runtime-4.0.5.jar)

javax.servlet

jakarta.servlet

Core Servlet API for web applications.

jakarta.servlet-api-6.1.0.jar

javax.servlet.http

jakarta.servlet.http

HTTP-specific Servlet API.

jakarta.servlet-api-6.1.0.jar

javax.transaction

jakarta.transaction

Transaction management API.

jakarta.transaction-api-2.0.1.jar

javax.ws.rs

jakarta.ws.rs

RESTful Web Services API (JAX-RS).

jackson-jakarta-rs-base-2.20.0.jar

javax.ws.rs.container

jakarta.ws.rs.container

JAX-RS container interfaces for filters and interceptors.

jackson-jakarta-rs-base-2.20.0.jar

javax.ws.rs.core

jakarta.ws.rs.core

Core JAX-RS classes and interfaces.

jackson-jakarta-rs-base-2.20.0.jar

javax.ws.rs.ext

jakarta.ws.rs.ext

JAX-RS extension interfaces.

jackson-jakarta-rs-base-2.20.0.jar

javax.xml.soap

jakarta.xml.soap

SOAP messaging API (JAX-WS).

jakarta.xml.soap-api-3.0.0.jar

Drivers for External Database (Optional)

If your TIF environment connects to an external database, ensure JDBC drivers are upgraded to versions compatible with Java 17. Place the drivers in ${TIF_ROOT}/lib/custom.

JDBC Drivers:

Verify the latest version of the required driver. The below download URLs were accessed on 2025-12-10.

Client Drivers/Libaries for External Destinations

If connections to external destination systems (e.g., JMS brokers, RabbitMQ) are used, you need to upgrade driver jars to versions that are Java 17 compatible and align with your broker/server version.

Broker-specific client examples (choose what you use):

  • RabbitMQ: amqp-client-<version>.jar

  • Apache ActiveMQ “Classic”: activemq-client-<version>.jar

  • IBM MQ: com.ibm.mq.allclient-<version>.jar

Place drivers and required dependencies in ${TIF_ROOT}/lib/custom.

This is only required if external destination systems are used.

Nashorn Scripting Engine (Optional)

If Nashorn scripting capabilities are utilized within TIF, the Nashorn scripting engine is required.

As of Java 17, the old Nashorn-related JARs must be upgraded to the new ones.

You can also download them from: https://mvnrepository.com/artifact/org.openjdk.nashorn/nashorn-core (accessed on 2025-12-10)

Required JARs:

Verify the latest version. At the time of this release, Nashorn was at version 15.7.

  • nashorn-core-15.7.jar

  • asm-9.9.jar (dependency)

  • asm-commons-9.9.jar (dependency)

  • asm-tree-9.9.jar (dependency)

  • asm-util-9.9.jar (dependency)

This is only required if Nashorn scripting is used in your TIF environment.

Offline Mode for Maintenance Tasks

We have introduced a new offline mode for running scheduled maintenance tasks such as cleansers and tidy-routines.

By starting the TIF server in offline mode, all services and integrations are disabled, allowing maintenance tasks to run sequentially without interruptions.

The TIF server can be started in offline mode using the command-line switch -dbcleanup.

Benefits:

  • Ensures no user activity or integrations interfere with cleanup.

  • Optimizes performance for maintenance tasks.

  • Running cleanup in offline mode frequently can serve as an alternative to scheduled execution of maintenance tasks and improve overall system performance.

You can also control which tasks are executed in offline mode.

The performance of some tasks has also improved, such as tidy-routine-for-scheduled-job-executions.

Please read more here.

Encryption for HTTPS Password Properties

It is now possible to encrypt property values that contain passwords for HTTPS configuration. This applies to sensitive properties such as keystore, keymanager, and truststore passwords that are configured in etc/tif.custom.properties.

To read about different ways to encrypt passwords, please click here.

For example:

https.keyStore.password=secret:myKeyStoreSecret
If you are using a secret stored in the TIF database, you must first create it via Admin UI before referencing it in your tif.custom.properties.

New Setting for Handling Large Files with POI

We have added a new property to control the Java Docprops property updater, allowing better handling of large Office files, such as XLSX. Previously, the Apache POI library could throw security exceptions when files contained many internal entries, treating them as potential ZIP bombs.

You can now adjust the threshold by setting docProps.poi.zipSecureFile.maxFileCount in module.custom.properties to the desired limit. For example:

docProps.poi.zipSecureFile.maxFileCount = 10000

Windows File Modifier - Excluded Fields in Update Properties Action

The Windows version of File Modifier now supports specifying excluded field codes when performing the Update Properties action. This enhancement addresses issues related to Microsoft Office, particularly when certain fields, like TOC, are updated.

Example Configuration:

<Job>
    ...
    <FileModifier>
        ...
        <UpdateProperties>
            ...
			<ExcludedFields>
			    <!-- TOC (Table of Contents) field -->
				<Field>TOC</Field>
			</ExcludedFields>
        </UpdateProperties>
    </FileModifier>
</Job>

See List of field codes in Word (accessed on 2025-12-09).

Field codes INCLUDEPICTURE, FILLIN and ASK are always excluded.

Custom Macros Supported for Properties in Payload Transformer

Outbound jobs now support custom macros when passing properties to payload transformers.

Example Payload Configuration:

<Payload>
    ...
    <Transformer xslt="tvc:xslt/MyStylesheet.xslt">
		<Property name="myParam1" value="${job.id}" />
		<Property name="myParam2" value="${job.java.com.acme.tif.MyResolver:foo}" />
	</Transformer>
</Payload>

Read more about transformers and job macros.

Fixed Bugs

Below is the list of fixed bugs as of this release.

Issue No Description

1054

POI property updater does not work with certain large XLSX files

1058

Admin UI crashes when enabling column that contains null data

1062

Queue object lock error should be logged in the TIF log

1066

Infinite Recursion in NewJob Job Event Handler with Identical jobcfg

1068

REST service display name not updated from XML configuration