Release 8.3.0

PhixFlow Ltd. is pleased to announce the release of PhixFlow 8.3.0. This page describes the improvements and fixes in this version. This major release includes some important fixes.

Installing or Upgrading to PhixFlow Version 8.3.0

To install a new PhixFlow instance:

  1. Check System Requirements and Compatibility for details of the PhixFlow system requirements and update any dependencies.   
  2. Follow the instructions in Installing PhixFlow.

To upgrade an existing PhixFlow instance: 

  1. Check System Requirements and Compatibility for changes to the system requirements or supported database versions. For example, you may need to upgrade your database or Java version.
  2. Ensure you have a backup of the database before upgrading PhixFlow.
  3. Follow the Upgrading PhixFlow steps. It is important to complete Step 8, in which you apply any Special Upgrade Instructions for all the intermediate releases between your current version and the version to which you are upgrading. See below for the special instructions for this version.

  4. This release includes changes that affect the PhixFlow database. After upgrading, remember to republish the PhixFlow data as described in Step 10 of Upgrading PhixFlow.
Sections on this page

Special Instructions

Special Instructions

This upgrade includes instructions to add a pepper string and alias to the keystore. See:

Run the PhixFlow upgrade script

Running the upgrade script makes essential security improvements to passwords.

If you are upgrading from a version earlier than 8.2.0, please read the special upgrade instructions for 8.2.0. This release introduced the keystore and encryption of security data. It also changed the database indexing scheme for stream data tables.

Updating the indexing scheme in a large Oracle database may take a long time. If this is an issue for you, please contact PhixFlow Support. You may be able to use the --skip-superceded option to prevent re-indexing. However, this will affect some PhixFlow features.

After upgrading your database in Step 10 of Upgrading PhixFlow, make sure you have sufficient disc space, memory and time to run the PhixFlow upgrade script.  There is advice in the special upgrade instructions for 8.2.0.

Run the PhixFlow upgrade script from the installation directory .../phixflow-version-date/install.
 To see information about all the options, run the upgrade script with the -help option.

java -jar bin/upgrader.jar -help

The command returns:

[Boot] INFO:  loading properties from one-jar.properties
2021-02-09 10:52:19,475 [main] INFO  phixflow.upgrader.main.UpgraderMain - PhixFlow Upgrade starting
Option              Description
------              -----------
--skip-superceded   Skip upgrading the superceded_dtm column on stream data tables
                      (Oracle only; only use if advised by PhixFlow support)
--help              Print this message
--match-streams     Only streams matching this regexp are upgraded (Oracle only)
--pass              The database password
--test              Test the database connection properties
--upgrade           Upgrade the PhixFlow database schema
--url               The database url, e.g. jdbc:mysql://hostname/database
--user              The database username

To upgrade PhixFlow, run the upgrade script with the -upgrade option, for example.

java -jar bin/upgrader.jar -url="jdbc:mysql://localhost/phixflow" -user=<myuser> -pass=<mypass> -upgrade

After the upgrade script completes, continue with the following configuration steps.

Add a pepper string to the keystore 

PhixFlow now requires a pepper string to be added to the keystore. When a local user sets their password, the pepper string is added to it and the combined string is encrypted. This means user passwords are tied to a PhixFlow instance. 

  1. Run the -importpass command, specifying the alias: pepperkey
    The alias is case-sensitive. If you use a different alias, update phixflow-instance.xml to use the same alias.
  2. When prompted, enter the keystore password.
  3. When prompted for the password, enter the pepper string you want to add to user passwords. 
    We recommend this string has the same characteristics as a password. For example it should be a random string containing at least 6 letters, numbers and special characters. 
    Keep a secure record of the pepper sting. 
 Expand Windows Example

On Windows, you must use the backslash \ in the path. PhixFlow will not be able to read the pepper key value if you use the forward slash /.

Command Line:

"%JAVA_HOME%\bin\keytool" -importpass -alias pepperkey -keystore C:\secure\hidden.jks -storetype PKCS12

Powershell:

&"$env:JAVA_HOME\bin\keytool.exe" -importpass -alias pepperkey -keystore C:\secure\hidden.jks -storetype PKCS12
 Expand Linux Example
$JAVA_HOME/bin/keytool -importpass -alias pepperkey -keystore /opt/secure/hidden.jks -storetype PKCS12

Merge changes in configuration files

You must create new versions of the following configuration files in $webapp/WEB-INF/classes:

 - phixflow-instance.xml
 - phixflow-datasource.xml
 - phixflow-login.xml

 - phixflow-secret.xml

To do this we recommend you:

  1. Rename your existing configuration file, for example by adding a .bak suffix.
  2. Follow the Install the PhixFlow Webapp instructions for creating a new file from the.example file provided. 
  3. Copy the individual values from your existing configuration file and paste them into the new file.
    Avoid copying entire XML blocks into your new configuration files, as you may overwrite a section of the configuration file that PhixFlow needs.

If you choose to merge the changes from the new .example file into your existing configuration file, the following notes indicate where there are changes.

phixflow-instance.xml

The new section for configuring the pepper alias is required.

<!-- The pepper key is instance specific so extra caution has to be taken when changing the pepper key value in keystore, changing the value in keystore will cause login issue for user's migrated to new password encryption -->

   <util:properties id="instanceProperties">
      <prop key="pepperkey">pepperkey</prop>
   </util:properties>


The default value is pepperkey. If you have multiple PhixFlow instances, each instance must have a pepper string and alias; see Considerations for Pepper Strings.

phixflow-datasource.xml

1. You can no longer specify the database username and password directly in phixflow-datasource.xml.
If you have not already done so, you must add the database username and password to the keystore.
Specify the keys for the username and password in the new bean <bean id="externalCredential" by replacing demo.

<bean id="externalCredential" class="com.accipia.centerview.util.ExternalCredentialProvider">

   <property name="secretService">
      <ref bean="secretService"/>
   </property>
   <property name="usernameKey">
      <value>demo</value>
   </property>
   <property name="passwordKey">
      <value>demo</value>
   </property>

</bean>


2. In <bean id="dataSource" 

  • the class name has changed from class="com.accipia.centerview.util.PhixFlowDataSource">
    to class="org.apache.commons.dbcp2.PhixFlowDataSource">
  • property name and ref bean have changed from secretService to credentialProvider and externalCredential respectively
  • the following lines have been removed, because they are now in the <bean id="externalCredential":
    <property name="username">
       <value>demo</value>
    </property>
    <property name="password">
       <value>demo</value>
    </property>

phixflow-login.xml

1. New <bean id="passwordEncoder" specifies the encryption method for passwords; see Understanding Password Encryption.

2. New <bean id="securityQuestionEncoder" specifies the encryption method for security question.

3. New <bean id="sameSiteCookieFilter". If you use SAML for login, uncomment this.

4. <bean id="exampleAuthenticationOnlySamlAttributeMap" has an additional property: <property name="globalLogout" value="false" />

5. <bean id="idpFileMetadataProvider" has additional property: <property name="requireLogoutResponseSigned" value="true" />

<bean id="passwordEncoder" specifies the encryption method for passwords. For greater security, you can remove any encoders you do not require; see Removing Old Encoders.

phixflow-secret.xml

  1. The new <bean id="keyStoreSecretService" is required.
  2. <bean id="secretService" has changed.

After restart, configure datasources and email accounts

For all datasource modelling objects and email accounts, upgrading to 8.3.0 will migrate all existing:

  • datasource instances to Authorisation Type Local
  • email accounts to Authorisation Type None

After the upgrade is complete and PhixFlow has been restarted, review each datasource instance and email account. For those that require a username and password, we recommend these are stored securely; see the release note on Secure Credentials for Datasource and Email Account.

  1. Save the username and password with their alias to the keystore; see Adding Data to a Keystore.
  2. In the properties for the datasource instance or email account:
    1. Set Authorisation Type External.
    2. Add the aliases to the Username Key and Password Key fields.

Discontinued Features

PhixFlow no longer supports:

  • Tomcat 8.5.
  • Microsoft Internet Exporer.

Please email support@phixflow.com if you are planning to run PhixFlow 8.3.0 on an unsupported version of a database or Tomcat.

DEV-7988  When accessing a datasource or HTTP datasource, you can no longer configure PhixFlow to pass the username and password of the current user; see Secure Credentials for Datasource and Email Account, below. The following properties have been removed.

  • Datasource/HTTP datasource instance:
    • Use User Credentials on Export

    • Allow Anonymous Export

  • System Configuration Allow anonymous export by default

DEV-7660  In a file collector, you can no longer select a File Type of HTML File. This feature was unused.

Changes to Privileges

  • Removed
  • New; see Restricting Access During System Maintenance.
    • Restricted Login Only  Usually for administrators. Allows PhixFlow login during system maintenance down-time.
    • Restricted Login TaskPlan Processing  Usually for administrators. Allows running a task plan during system maintenance down-time.

Features and Improvements

Performance

DEV-7454  After a server restart, PhixFlow automatically re-caches frequently-used models and dashboards in the background. Once re-caching is complete, the first user to access the model or dashboard no longer experiences a delay. The period over which PhixFlow tracks object usage is set in System Configuration Delete DTO Usage Records after DaysUpgrading to version 8.3.0 sets this option to 7 days.

Secure Credentials for Datasource and Email Account 

DEV-7988, DEV-7934, DEV-7662, DEV-7988, DEV-7466  When accessing a datasource or HTTP datasource, you can no longer configure PhixFlow to pass the username and password of the current user. You must provide a username and password in the datasource instance. This applies to datasources and HTTP datasources. You now have the option to configure access to a datasource instance or an email account more securely. You can:

  • either pass credentials stored in the PhixFlow database, using the properties:
    • Authorisation Type Local
    • Username 
    • Password
  • or securely pass credentials from a keystore using aliases. Add the details to your keystore; see Adding Data to a Keystore. Then provide the aliases in the properties:
    • Authorisation Type External
    • Username Key
    • Password Key

Email accounts can also have the Authorisation Type No Authorisation.

Improvements to Translation

DEV-7786  You can now configure translation of values displayed in a filter using the Show the list of values button. To translate these values, PhixFlow requires:

  • a translation table for the logged-in user's locale and the current application
  • the translation table has a translation string for the value
  • the stream attribute property Translate Values to be ticked.

DEV-7588  There is a new translateTo function that you can use to translate values according to the application running and the language name supplied.

PDF Conversion

DEV-7930  PhixFlow can now convert exported Excel files into PDFs. 

  • Administrators must configure LibreOffice to be available: see Configuring PDF Conversion
  • Data modellers can specify PDF conversion using the new file exporter options Convert to PDF and PDF Target Path; see File Exporter
  • PhixFlow reports on PDF conversion processes on a new console tab called PDF Chore.

Restricting Access During System Maintenance

DEV-7918  In previous versions of PhixFlow, during system mainenance or upgrade, only administrators could access PhixFlow or initiate processes when the following system configuration options were selected:

  • Restrict non admin logins only
  • Suspend processing for non admin users

These options have been changed so that access can be granted to other roles or user groups. For example a PhixFlow consultant may need access. To support this:

  • Restrict non admin logins only has been renamed to Only allow users with the restricted login permission to log in. 
    You must add the new Restricted Login Only privilege to the Administrators role, and any other role or user group that requires access.
  • Suspend processing for non admin users has been renamed to Only allow users with the restricted permission to run task plans. 
    You must add the new Restricted Login TaskPlan Processing privilege to the Administrators role, and any other role or user group that needs to run processes, such as analysis or task plans, during system maintenance.

There are also dto usage and rebuild options in the server.properties configuration file related to database management. 

# the dto usage service polling interval in ms
dtoUsageService.pollingInterval=60000
# the dto rebuild service polling interval in ms
dtoRebuildService.pollingInterval=60000
# the dto rebuild service delay before building the dtos
dtoRebuildService.dtoRebuildDelay=300000

For more details, see Restricting Access During System Maintenance.

Improved Security and More Use of Keystore

DEV-7935   phixflow-datasource.xml now requires keystore aliases rather than the PhixFlow database credentials. 

DEV-5937, DEV-6604  To improve security, any new or reset user passwords and security answers will be one-way encrypted using BCrypt. In addition, the password encryption uses a pepper string. See the special instruction Add a pepper string to the keystore, above, for details of how to set this.
We recommend users reset their passwords and secure answers as soon as possible; see Understanding Password Encryption.

DEV-7797  Changes to the keystore no longer require PhixFlow to restart to take effect. By default PhixFlow rechecks keystore values every 10 seconds. 

Other Changes

DEV-7645  From a file exporter or task plan, you can now send HTML emails. Tick Email as HTML and include HTML tags in Message Expression. This means you can format the email text and include links. 

DEV-7579  For grid views, you can now use an expression to determine whether or not an attribute's field is displayed: Grid View →  Hide if evaluates to True; see Stream View.

DEV-7585  Styles now have a DateTimeFormat, which is applied to grid columns when triggered by a formatting rule; see Style.

Bug Fixes

DEV-7812  In the user group properties → Users section, the list displayed by the Show Users button now includes mixed and external users, not just local users. For information about user types, see the User page.

DEV-7877  When you change a user account from local to mixed, PhixFlow now deletes the security questions and answers, as they are not required. For information about user types, see the User page.

DEV-8030  You can select the text of error messages even when there is a network error.

DEV-7974  On a layout template, using the Display option no longer occasionally displays a white screen.

DEV-8061  When Tomcat is restarted local users will now remain logged in.