Knowledge Base

What's new in 8.3

Last Modified:
29 Jul 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 make use of 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

Programmable Layouts currently use the Rhino engine that's provided with Java 7. This engine was updated in Java 8 to Nashorn (which is Rhino compatible) and replaced in Java 11 by GraalVM. While Nashorn is deprecated in Java 11, it will still function.

To maintain backward compatibility, the upgrade will add a line of code to each Programmable Layout instructing Java to run using the older engine.

Any layouts which are stored in the Media Library will need to be manually updated with the following line:

load("nashorn:mozilla_compat.js");

During the upgrade, TERMINALFOUR will also alter references to the ApplicationContextProvider so that it continues to work as it does now.

Old:

ApplicationContextProvider.getBean (IUserManager)

New:

ApplicationContextProvider.getBean (IUserManager.class)

The replace method in Programmable Layouts

Before 8.3

Using

.replace('apples','oranges')

would replace all occurrences of 'apples' and change them to 'oranges'

From 8.3 onwards:

Only the first occurrence of 'apples' is replaced with the code above. To replace all occurrences you can use either:

.replaceAll('apples','oranges')

or use a regular expression with a global flag.

In the regular expression below, //g is the global flag and i is the ignore case flag:

var regexForApples = /apples/gi; 
var str = 'Apples are round, and apples are juicy.'; 
var newstr = str.replace(regexForApples, 'oranges'); 

For more information, see this note in the Rhino Migration Guide.

forEach 

The forEach method has been deprecated in Nashorn. Loops are still possible using other methods such as iterators and for loops. e.g.

Before 8.3:


    children.forEach(function (child) {            
        // function body     
    }); 

After 8.3:


    for each (var child in children) {    
        // function body     
    }

Strict mode 

The version of Rhino pre-8.3 did not correctly implement 'use strict'. Nashorn now does implement this as expected. This means if you are currently using 'use strict' you should review it and ensure it is functioning as you would expect.

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