16 July 2021

1. Support for Apache Kafka

General support for using Apache Kafka have been added as this release. Supported functionality are:

  • Transfer job data to a Kafka topic

  • Consume data from a Kafka topic

  • Use reply handler to handle asynchronous replies from a Kafka topic

More detail in the subchapters below.

1.1. Transfer Job Data

As of this release, you can send data to an Apache Kafka Topic.

Configuring such destination is done in the ${TIF_ROOT}/etc/destinations.xml file as shown below:

<Destinations xmlns="http://technia.com/TIF/Destinations"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://technia.com/TIF/Destinations destinations.xsd">

    <Kafka id="kafka-1"
           bootstrapServer="server1:9092,server2:9092,server3:9092"
           clientId="${tif.node}-${tif.instance}" />
</Destinations>

Secondly, you use the destination in the Job configurations like shown below:

<Job>
    <Name>Example Job</Name>
    <TransferData>
    	<Payload>tvc:payload/ExamplePayload.xml</Payload>
    	<Destinations>
            <Kafka id="kafka-1" topic="TIF-JOB-TEST" key="${job.source.name}">
                <Header name="tifJobId" value="${job.id}" />
                <Header name="tifInstanceId" value="${tif.instance.id}" />
                <Header name="tifDestinationId" value="${destination.id}" />
            </Kafka>
    	</Destinations>
    </TransferData>
</Job>

Please see this document for more details.

1.2. Kafka Consumer

You can setup consumers / listeners that will consumer records from Kafka topics. With such consumer you can for example import data into ENOVIA/3DExperience from data, which some other system have published into a Kafka topic.

You can use custom code to process the message or directly trigger the create / update integration.

See this document regarding triggering of the create/update integration.

1.3. Kafka Reply Handler

You can use Kafka as a source for a reply handler. This means that you can receive asynchronous replies to a previous outbound job from TIF. With the reply handler, you can update ENOVIA/3DExperience with the response from the other system.

Image below illustrates the reply handler in context of Kafka.

image
Figure 1. Kafka Reply Handler

Please see this document for more details.

2. XML External Entity (XXE) Prevention

There are new properties defined in ${TIF_HOME}/modules/enovia/etc/module.properties to control the security aspects of XML, XSLT and XSD configurations/payloads. This concerns XML External Entity (XXE) prevention, and the default settings are defined in accordance with OWASP recommendations.

xml.disallowDoctypeDecl=true
xslt.accessExternalDtd=false
xslt.accessExternalStylesheet=false
xsd.accessExternalDtd=false
xsd.accessExternalSchema=false

See ${TIF_HOME}/modules/enovia/etc/module.properties for further documentation notes.

3. Jakarta Mail Implementation

We have changed to use the Jakarta mail implementation.

4. Admin UI Improvements

  • When resending a failed job, there is an option to mark the job as resolved if the resend succeeds.

  • In Jobs view there are separated columns added for source object type, name and revision.

5. "Not Found Strategy" for REST IDLocators

There is a new optional configuration setting for REST IDLocators called notFoundStrategy. The strategy defines what to do if no IDs are found.

The valid values are fail (default), continue and exit.

  • fail stops the execution. The job is marked as failed and HTTP status code 404 "Not Found" is responded to client.

  • exit stops the execution. The job is marked as completed and HTTP status code 204 "No Content" is responded to client.

  • continue continues the execution with no IDs.

For example:

<Rest>
    ...
    <IdLocator notFoundStrategy="exit" />
</Rest>

6. Server JAR Modularization

Some blocks of functionality have been refactored and broken out from the tif-enovia-server.jar file into separate JAR files.

This is mainly related to the support for the different messaging technologies such as JMS, Rabbit-MQ, IBM-MQ and Kafka.

7. Fixed Bugs

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

Issue No Description

808

SOAP destination not working with Java 11

809

History off not working when running the create/update integration.

812

Mail job event handler missing dependencies

815

Response meta properties not shown if response has no body

816

MQ listener service not closed correctly

814

Unable to process CSV files using a directory listener with the create/update integration

775

A transactional context is not available when postponing a transfer to the future.

806

Unclear information provided in the startup of TIF regarding available HTTP/HTTPS connectors and the URL’s to the webapplications.

819

Page size and related controls not visible in Job view