This guide is for upgrading your installation of Mirth Connect 2.1 or later. There are a few steps that must be performed before upgrading to backup your database and configuration properties.
If you are using a Mirth Appliance...
Congratulations! The upgrade process is done automatically when the appliance is upgraded.
1. Before you upgrade
Before upgrading, we highly recommend that you backup both your Mirth Connect Server Configuration and your Mirth Connect database.
- Backup server configuration: Before proceeding, it's important that you backup your existing server configuration. This can be done through the Mirth Connect Administrator under Settings. The server configuration includes channels, code templates, alerts, and global scripts. User accounts and stored messages will not be backed up.
- Backup database: If you are using the embedded Derby database, create a backup of the $MIRTH_HOME/mirthdb. If you are using an external database (ex. PostgreSQL, MySQL), create a backup of your database using your preferred database administration tool (ex. pgAdmin, MySQL Administrator).
Changes to some custom configuration files may need to be manually copied over after the upgrade. If you've made changes to any of the following files, copy them to a location outside of your existing $MIRTH_HOME directory before running the new Mirth Connect installer. Once Mirth Connect is upgraded, you will need to update the newly installed files with your custom changes.
- Custom database drivers: If you have added custom database drivers they will be preserved in custom-lib during the upgrade. However, you will need to back up your additions to $MIRTH_HOME/conf/dbdrivers.xml
- Java JVM parameters: If you have added any Java JVM parameters or changed any of the default heap size settings, create a backup of any $MIRTH_HOME/*.vmoptions files
- Logger settings: If you have made any changes to your logger settings, create a backup of $MIRTH_HOME/conf/log4j.properties
- CLI configuration: If you have made any changes to the CLI configuration file, create a backup of $MIRTH_HOME/conf/mirth-cli-config.properties
- Make sure that you have exited and stopped the Mirth Connect Administrator, Server Manager, and Server/Service before proceeding.
- Run and complete the new Mirth Connect installer, choosing the update option using the same installation directory.
3. After the upgrade
- Custom database drivers: Restore your changes to $MIRTH_HOME/conf/dbdrivers.xml
- Java JVM parameters: Restore the changes in your backed up *.vmoptions files to the corresponding *.vmoptions files $MIRTH_HOME.
- Logger settings: Set any properties you changed in your backed up $MIRTH_HOME/conf/log4j.properties manually.
- CLI configuration: Restore the changes in your backed up $MIRTH_HOME/conf/mirth-cli-config.properties file.
- Start/Restart the server
- Custom extensions: Install new versions of any custom extensions
These are version specific changes to channels that are not done automatically during the upgrade process. Only channels with certain connectors or deprecated code references are affected by these updates. Versions that may require specific changes are listed below. For example, if you are upgrading from 2.1.0 to 2.2.0, you should look at any notes below for both 2.1.1 or 2.2.0.
The 'Email Sender' has been renamed to the 'SMTP Sender' and it no longer has the option to 'Use Server Settings' for the SMTP server configuration. If your channel has this configuration, your destination and/or channel will be disabled. You will need to manually enter your SMTP server settings and enable your destination/channel again after upgrading.
The Database Reader no longer prepends table name to the column name or alias regardless of how many tables are used in the query. Each element name in the generated XML will be the alias if one exists, otherwise it will be the column name. Users connecting to Postgres or Oracle databases with the Database Reader connector should not be required to make any changes. Users connecting to other databases should update their channels accordingly if needed. It is recommended to always use a unique alias.
These are version specific instructions that are not done automatically during the upgrade process. Versions that may require special instructions are listed below. For example, if you are upgrading from 2.1.0 to 2.2.0, you should look at any notes below for both 2.1.1 or 2.2.0.
Any messages that were queued at the time of upgrade from 2.x will not be processed. If you would like to ensure these messages are processed, we recommend flushing out all queued messages before upgrading:
For non-polling channels:
- Pause the channel
- Wait for all queued messages to finish processing
For polling channels:
- Edit the channel, export the source connector (to have a backup)
- Change the source connector type to Channel Reader
- Redeploy the channel
- Wait for all queued messages to finish processing
- Edit the channel again, restore the exported source connector, but do not redeploy
Do the above for all channels until there are no more queued messages. If any queued messages cannot be processed because the external system is down, you can search for the queued messages and export them as XML or Plain Text for manual processing later.
To simply remove all queued messages you can remove them from the Message Browser, which should also remove them from the file system, or simply delete the queuestore folder (or individual channel folders inside of queuestore) in your appdata directory.
A new index has been added to the message metadata table for each channel to improve queue performance . Channels created in 3.1.0 will automatically create this index, but existing channels will need to have the index created manually:
- Stop all channels that require the index
- Navigate to Settings > Database Tasks
- Select the "Add Metadata Index" task
- Click Run Task
If you do not see the "Add Metadata Index" task, then the index already exists for all of your channels and there is no action needed. If the task fails to add the index for all of your channels, ensure that the remaining affected channels are stopped or undeployed and run the task again.
Ensure you have enough disk space before adding the new index. The index will require roughly 45 megabytes of disk space per connector for every million messages currently stored in the database. It may take some time depending on how many messages are currently stored, so it is recommended to schedule some downtime for adding the index.
Due to the recent POODLE vulnerability, we have disabled SSLv3 for all of our relevant connectors and connections that use SSL. In case you are connecting to some legacy systems that require SSLv3, it is possible to re-enable SSLv3. In your mirth.properties file, you will find the following two properties:
- https.client.protocols = TLSv1.2,TLSv1.1,TLSv1
- https.server.protocols = TLSv1.2,TLSv1.1,TLSv1,SSLv2Hello
If you need to use SSLv3, simply add "SSLv3" into the comma separated list for the client or server protocols and restart your server. These two properties also allow you to configure exactly which SSL protocols you wish to use. Similarly, if you need to add or remove cipher suites, you can update the https.ciphersuites property in the mirth.properties file.
JRE 1.6 (Java 6) is no longer be supported as of 3.2.0. If you are still using JRE 1.6, please ensure you update to at least JRE 1.7 before upgrading to Mirth Connect 3.2.0+. However future releases in the 2.x, 3.0.x, and 3.1.x branches will still continue to support JRE 1.6 unless otherwise stated.
The default connection pool used for message processing has been updated to HikariCP. We've seen that HikariCP is generally faster and more reliable than DBCP although this change should be imperceptible to most users. Support for DBCP still exists and users can revert back to it if necessary by adding the following line to mirth.properties and restarting the server.
- database.pool = dbcp
A bug in the configuration map was fixed where certain special characters were not being handled correctly (MIRTH-3542). Since this bug affected both the saving and loading of the configuration map, there is a chance your configuration map values will be loaded differently after upgrading Mirth Connect. Please verify your configuration map values after upgrading.
Mirth Connect plugins that implement custom client <-> server communication will need to be updated to use the new HTTP servlet architecture introduced in version 3.4.0.
Specifically, the invoke() method has been removed from the ServicePlugin interface as well as the ClientPlugin abstract class. Prior to 3.4.0, calls to ClientPlugin.invoke() on the client were routed to ServicePlugin.invoke() on the server.
To invoke servlet methods from the client side, use the getServlet() method instead of the previous invokePluginMethod* methods.
3.3.x and earlier:
3.4.0 and later:
The servlet interface must also be specified in the plugin's plugin.xml file:
Due to the recent SWEET32 vulnerability, we've disabled cipher suites using Triple DES. If for any reason you need to use one of these cipher suites to communicate with a legacy system, you can re-enable it in mirth.properties with the "https.ciphersuites" setting. If you're using the SSL Manager extension, then you can choose to enable these cipher suites on a specific channel / connector rather than for the entire server. If you have any connectors using the SSL Manager that arenot using the server default cipher suites, then you will want to update these connectors and uncheck any cipher suites containing "3DES".
To address the secondary "nation state resources" theoretical use-case of the Logjam vulnerability, in 3.5 we're now setting the ephemeral Diffie-Hellman key size to 2048. If for any reason you need to change this, you can do so in mirth.properties with the "https.ephemeraldhkeysize" setting.
Custom attachment handlers that extend MirthAttachmentHandlerProvider will need to provide a constructor that matches and calls this super constructor:
Custom attachment handlers also may need to update method signatures if any of the following methods have been overridden (updated signatures on the second line of each group):