Knowledge Base

What's new in 8.3

Last Modified:
05 Dec 2019
User Level:
Administrator

We're excited to announce the release of Version 8.3 of TERMINALFOUR's Digital Marketing and Web Content Management Platform!

This release has allowed us to update our supported systems as well as other technologies used in the product. This will allow for the implementation of new features and enhancements to existing features in future releases. The most notable update is the support for Java 11.

Supported Systems in 8.3

Full details on the supported systems for 8.3 can be found in the TERMINALFOUR 8.3 Supported Systems article. Please see below for an overview of changes to supported systems.

We are introducing support for:

  1. Oracle Java 11 OpenJDK
  2. Tomcat 9
  3. Windows Server 2016
  4. MS SQL 2017
  5. Oracle 12C R2

How to upgrade to 8.3

Once you have confirmed your systems are on the supported systems list, then the upgrade to Version 8.3 will be the same as a regular upgrade. If TERMINALFOUR manages your hosting, then they will take care of this part. For any questions relating to the upgrade or preparing for the upgrade, please contact the Client Support team and they will be happy to advise.

View the full release notes.

Updates to Programmable Layouts, Custom Libraries, API and Web Services

If you use Programmable Layouts, Custom Libraries, API or Web Services, then there will be some minor updates to be made when you upgrade.

It is very important that such updates are tested thoroughly before proceeding with a production upgrade.

Programmable Layouts

TERMINALFOUR uses Rhino to parse Programmable Layouts and although Rhino was deprecated back in Java 7, it is still very much alive. Our testing has shown that it is still the most compatible with your existing Programmable Layouts.

Processor type changes

If you are using the processor type to determine if the layout is a Programmable Layout, the processor type value of the Rhino Javascript engine has changed from "javascript" to "rhino". 

In this case, the following:

try {
var format = publishCache.getTemplateFormatting(dbStatement, tid, mylayout); var processorType = format.getProcessor().getProcessorType(); // There are other potential processors in the system. So we just check thats it is a javascript processor type (which is programmable layout output) if (String(processorType) === 'javascript') {

changes to:

try {
var format = publishCache.getTemplateFormatting(dbStatement, tid, mylayout);
var processorType = format.getProcessor().getProcessorType();
// There are other potential processors in the system. So we just check thats it is a javascript processor type (which is programmable layout output)
 if (String(processorType) === 'rhino') {

Eval

From 8.3 if you are using the Eval function you must pass it a String or it will not function as expected.

Ordering

Default ordering is reversed in Java 11. 

If you were using:

section.getContent(CachedContent.APPROVED)

You should now use the following to retain the ordering.

section.getContent(language, CachedContent.APPROVED)

Strings

Pre 8.3, if you were converting a number to a string by adding an empty string to the number you would do this:

var style_id = section.getStyle(channel) + "";

From 8.3 on this would create an object in 8.3 rather than a string. Instead, you should cast to a string:

var style_id = String(section.getStyle(channel));

Other

On the query handler page (ctfn=query) the edit button may not appear or may take a long time to appear. This is because in Java 11 the font that is used there is no longer packaged with Java as it was previously. To have it behave as it used to before you should install the below:

yum -y install fontconfig

Custom Libraries

If you are using any custom libraries (e.g., 3rd party CSV JDBC drivers) these will need to be re-added when migrating to Tomcat 9 and must be Java 11 compatible.

Custom API Code

If you are running custom scripts on your server that use Java and TERMINALFOUR’s API these will need to be updated and re-compiled with Java 11.

Any custom Brokers / Listeners / etc. must be updated to work with the 8.3.1 API and Java 11 or they will not function.

Web Services authentication

A minor change has taken place in the response from our authentication web service which may require you to update your code.

Before 8.3:

$response = Connection::connectToT4($username, $password);
$authHeader = "Bearer " . $response->{"access_token"};
$response = Connection::get("about", array("Authorization: $authHeader"));

From 8.3 onwards:

$response = Connection::connectToT4($username, $password);
$authHeader = "Bearer " . $response->{"accessToken"};
$response = Connection::get("about", array("Authorization: $authHeader"));

Overview of Changes to Supported Systems

 Version 8.2.18Version 8.3November 2019
Linux / CentOS 7.0
Linux / CentOS 6.5
Windows Server 2016
Windows Server 2008 & 2012
MySQL 5.7
MySQL 5.0 to 5.6
MS SQL 2017
MS SQL 2008 & 2012
Oracle 12C R2
Oracle 12C R1
Oracle 11G R1
Tomcat 9 & AJP proxy
Tomcat 9 & HTTP proxy
Tomcat 7 & 8
Oracle Java 11 OpenJDK
Oracle Java 7
Back to top