-
Notifications
You must be signed in to change notification settings - Fork 244
Upgrade
Content
SQL scripts for updating the database schema from previous versions can be found in directory
$DCM4CHEE_ARC/sql
. A change in the DB schema is reflected by an incremented second component
of the version number (e.g. from 5.22.x to 5.23.y). So one does not need to update the database schema
for upgrading from a version which only differs in the third component of the version number
(e.g. from 5.22.5 to 5.22.6). For upgrading from an older version which second component of the version
number in not the previous number, one has to first update the data base schema to the previous
version - by applying update scripts for previous versions in the right order - before applying the
update script for the current version.
One has to start Wildfly before updating the tables using the H2 console. Access the console at http://localhost:8080/h2console, login and update the database scheme by:
RUNSCRIPT FROM '$DCM4CHEE_ARC/sql/update-5.23-h2.sql'
> psql -h localhost <database-name> <user-name> < $DCM4CHEE_ARC/sql/update-5.23-psql.sql
> mysql -u <user-name> -p<user-password> <database-name> < $DCM4CHEE_ARC/sql/update-5.23-mysql.sql
> isql-fb
Use CONNECT or CREATE DATABASE to specify a database
SQL> connect 'localhost:<database-name>'
CON> user '<user-name>' password '<user-password>';
SQL> in DCM4CHEE_ARC/sql/update-5.23-firebird.sql;
SQL> exit;
> su <user-name>
Password: <user-password>
> db2 connect to <database-name>
> db2 -t < $DCM4CHEE_ARC/sql/update-5.23-db2.sql
> db2 terminate
$ sqlplus <user-name>/<user-password>
SQL> @$DCM4CHEE_ARC/sql/update-5.23-oracle.sql
Not yet tested
-
Replace previous schema files in OpenLDAP schema configuration directory by new versions from DCM4CHEE Archive distribution:
> cp $DCM4CHEE_ARC/ldap/schema/* /etc/openldap/schema/ [UNIX] > copy %DCM4CHEE_ARC%\ldap\schema\* \Program Files\OpenLDAP\schema\ [Windows]
-
Restart slapd:
> sudo service slapd restart [UNIX]
Update LDAP schemas in OpenLDAP runtime configuration by applying provided LDIF files using OpenLDAP CL utility ldapmodify:
> sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f $DCM4CHEE_ARC/ldap/slapd/dcm4che-modify.ldif
> sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f $DCM4CHEE_ARC/ldap/slapd/dcm4chee-archive-modify.ldif
> sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f $DCM4CHEE_ARC/ldap/slapd/dcm4chee-archive-ui-modify.ldif
-
Replace previous schema files in OpenDJ schema configuration directory by new versions from DCM4CHEE Archive distribution:
> cp $DCM4CHEE_ARC/ldap/opendj/* $OPENDJ_HOME/config/schema/ [UNIX] > copy %DCM4CHEE_ARC%\ldap\opendj\* %OPENDJ_HOME%\config\schema\ [Windows]
-
Restart OpenDJ by
> $OPENDJ_HOME/bin/stop-ds > $OPENDJ_HOME/bin/start-ds
-
Delete the
ou=objectclasses
child entry from the schema entriesou=schema + cn=dcm4chee-archive-ui + ou=objectclasses + cn=dcm4chee-archive + ou=objectclasses + cn=dcm4che + ou=objectclasses
before deleting the schema entries itself, using the Delete Entry function of Apache Directory Studio LDAP Browser.
-
Import new LDAP schema files for Apache DS:
$DCM4CHEE_ARC/ldap/apacheds/dcm4che.ldif $DCM4CHEE_ARC/ldap/apacheds/dcm4chee-archive.ldif $DCM4CHEE_ARC/ldap/apacheds/dcm4chee-archive-ui.ldif
using the LDIF import function of Apache Directory Studio LDAP Browser.
-
If upgrading upto version 5.22.6 :
- If one made structural changes - e.g. by adding/removing Network Application Entities or by configuring multiple
Archive devices - to the provided default configuration, one has to adjust the provided
update-config-VERSION.ldif
files in$DCM4CHEE_ARC/ldap
according to one's changes, before applying them, using the LDIF import function of Apache Directory Studio LDAP Browser or using LDAP CLI utilityldapmodify
of OpenLDAP. To update from an older version than the most-recent previous version, e.g. from 5.21.0 to 5.22.6, one has to apply the update scripts for the previous versions, e.g.:before one can update the LDAP configuration for the current version by:> $ cd $DCM4CHEE_ARC/ldap > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-config-5.22.0.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-config-5.22.1.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-config-5.22.2.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-config-5.22.3.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-config-5.22.4.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-config-5.22.5.ldif
> $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-config-5.22.6.ldif Enter LDAP Password: modifying entry "dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org" :
- If one made structural changes - e.g. by adding/removing Network Application Entities or by configuring multiple
Archive devices - to the provided default configuration, one has to adjust the provided
-
If upgrading to version 5.23.0 and above : Version 5.23.0 onwards, individual ldif files are provided for an update of device and AE specific configuration.
- If one made structural changes - e.g. by adding/removing Network Application Entities or by configuring multiple
Archive devices - to the provided default configuration, one has to adjust the provided
update-dev-VERSION.ldif
and / orupdate-AE-VERSION.ldif
files in$DCM4CHEE_ARC/ldap
according to one's changes, before applying them, using the LDIF import function of Apache Directory Studio LDAP Browser or using LDAP CLI utilityldapmodify
of OpenLDAP. To update from an older version than the most-recent previous version, e.g. from 5.20.0 to 5.23.0, one has to apply the update scripts for the previous versions, e.g.:before one can update the LDAP configuration for the current version by:> $ cd $DCM4CHEE_ARC/ldap > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-dev-5.21.0.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-AS_RECEIVED-5.21.0.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-DCM4CHEE-5.21.0.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-IOCM_EXPIRED-5.21.0.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-IOCM_PAT_SAFETY-5.21.0.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-IOCM_QUALITY-5.21.0.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-IOCM_REGULAR_USE-5.21.0.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-IOCM_WRONG_MWL-5.21.0.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-storescp-5.21.0.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-dev-5.22.0.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-DCM4CHEE-5.22.0.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-dev-5.22.1.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-dev-5.22.2.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-dev-5.22.3.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-dev-5.22.4.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-AS_RECEIVED-5.22.4.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-DCM4CHEE-5.22.4.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-IOCM_REGULAR_USE-5.22.4.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-storescp-5.22.4.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-dev-5.22.5.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-dev-5.22.6.ldif
> $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-dev-5.23.0.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-AS_RECEIVED-5.23.0.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-DCM4CHEE-5.23.0.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-IOCM_REGULAR_USE-5.23.0.ldif > $ ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f update-storescp-5.23.0.ldif Enter LDAP Password: modifying entry "dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org" :
- If one made structural changes - e.g. by adding/removing Network Application Entities or by configuring multiple
Archive devices - to the provided default configuration, one has to adjust the provided
-
Before v5.10.4, any configuration change of the archive using the UI prevents further emission of Audit messages caused by the insert of an universal Audit Suppress Criteria to existing Audit Loggers of the Archive Device. You may either remove that Audit Suppress Criteria from the Audit Logger(s)
- using the UI in v5.10.4+, or
- remove the Audit Logger child node directly in LDAP by applying
dn: cn=cn,cn=Audit Logger,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org changetype: delete
-
In v5.10.2, the configuration which Storage System is used by a particular Archive AE changed: The LDAP attribute which reference the Storage ID for object storage used by the AE changed from
dcmStorageID
todcmObjectStorageID
, and it's no longer possible to configure a default Storage ID used for object storage on Device level. The corresponding lines inupdate-config-5.10.2.ldif
aredn: dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org changetype: modify delete: dcmStorageID - dn: dicomAETitle=DCM4CHEE,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org changetype: modify add: dcmObjectStorageID dcmObjectStorageID: fs1 -
If one changed the default Storage ID
fs1
, one may either adjustupdate-config-5.10.2.ldif
before applying it oneself, or apply one's change afterwards again - either directly in LDAP or using the UI. -
Attribute Coercions (used either on Archive Device or Archive Network AE level) : The LDAP attribute which referenced the AE Title (
dcmAETitle
) and Hostname (dcmHostname
) have been now removed and no longer supported. These can now be specified using Conditions (dcmProperty
) field dependent on their DICOM Transfer Role (dicomTransferRole
).Restriction SCU SCP AE Title SendingApplicationEntityTitle={ae-title}
ReceivingApplicationEntityTitle={ae-title}
Hostname SendingHostname={hostname}
ReceivingHostname={hostname}
-
In v5.19.1, following configurations for Invoke Image Display URLs have changed. Invoke Image Display URLs : The LDAP attribute which referenced the Invoke Image Display Patient URL (
dcmInvokeImageDisplayPatientURL
) and Invoke Image Display Study URL (dcmInvokeImageDisplayStudyURL
) used either on Archive Device or Archive Network AE level have been now removed and no longer supported. This has been now moved on Web Application level, where it can be set using Property (dcmProperty
) in the format<name>=<value>
.Replace any existing configuration
Name (LDAP Attribute) Configured on Level Value (example) Invoke Image Display Patient URL (dcmInvokeImageDisplayPatientURL) Archive Device or Archive Network AE http(s)://:/IHEInvokeImageDisplay?requestType=PATIENT&patientID={} Invoke Image Display Study URL (dcmInvokeImageDisplayStudyURL) Archive Device or Archive Network AE http(s)://:/IHEInvokeImageDisplay?requestType=STUDY&studyUID={} By
Name (LDAP Attribute) Configure on Level Value (example) Property (dcmProperty) Web Application IID_PATIENT_URL=weasis://$dicom:rs --url "{{qidoBaseURL}}{{qidoBasePath}}" -r "patientID={{patientID}}" --query-ext "&includedefaults=false" Property (dcmProperty) Web Application IID_STUDY_URL=weasis://$dicom:rs --url "{{qidoBaseURL}}{{qidoBasePath}}" -r "studyUID={{studyUID}}" --query-ext "&includedefaults=false" Property (dcmProperty) Web Application IID_URL_TARGET=_self For secured version of archive, skip the above point and instead follow the changes mentioned in Upgrade Secured IID
-
Version 5.19.1 onwards, the new Study page uses Web Applications also for querying the own archive. In default configuration, the Web Applications uses
http
andhttps
connection references which are configured with hostname aslocalhost
by default. If one is accessing the archive UI from a browser which is not on the same host as that of archive, then one needs to change the hostname of these connections fromlocalhost
to actual hostname or IP address where the archive is running. -
Version 5.21.0 onwards, a new stylesheet has been added to handle creation of workitems in unified worklist on receive of HL7 message. Update the Vendor Data for this feature to work.
Latest version of DCM4CHEE Archive available is 5.23.0
-
Version 5.22.0 onwards, the private key
key.jks
and the trusted CA certificatecacerts.jks
files shall be moved from$WILDFLY_HOME/standalone/configuration/dcm4chee-arc
to$WILDFLY_HOME/standalone/configuration/keystores
to accommodate the configuration changes. -
Version 5.22.4 onwards, download Client Adapter for Wildfly from Keycloak and unzip it inside
WILDFLY_HOME
.> cd $WILDFLY_HOME > unzip $Downloads/keycloak-wildfly-adapter-dist-11.0.1.zip
-
Version 5.22.5 onwards, the formats of default keystore and truststore in LDAP have been changed from JKS to PKCS12. Hence, copy these configuration files into the WildFly installation:
> cp $DCM4CHEE_ARC/configuration/keystores/key.p12 $WILDFLY_HOME/standalone/configuration/keystores [UNIX] > cp $DCM4CHEE_ARC/configuration/keystores/cacerts.p12 $WILDFLY_HOME/standalone/configuration/keystores [UNIX] > xcopy %DCM4CHEE_ARC%\configuration\keystores\key.p12 %WILDFLY_HOME%\standalone\configuration\keystores [Windows] > xcopy %DCM4CHEE_ARC%\configuration\keystores\cacerts.p12 %WILDFLY_HOME%\standalone\configuration\keystores [Windows] (Select D = directory)
Note: The private key
keystores/key.p12
and the trusted CA certificatekeystores/cacerts.p12
used in TLS connections are not stored in LDAP.
If upgrading from a version older than 5.16.1, it requires complete new setup of Wildfly (version 14 onwards). QueryDSL is no longer supported with DCM4CHEE Archive version 5.16.1 onwards.
-
Update DCM4CHE dcm4chee-arc-light libraries as JBoss modules. This also contains the Keycloak Admin Client (Version 5.22.4 onwards, this module is required)
> cd $WILDFLY_HOME > rm -r modules/org/dcm4che > unzip $DCM4CHEE_ARC/jboss-modules/dcm4che-jboss-modules-dcm4chee-arc-light-5.x.x.zip
-
If upgrading to version 5.19.1 or newer, update jclouds libraries to 2.2.1 as JBoss modules:
> cd $WILDFLY_HOME > rm -r modules/org/apache/jclouds > unzip $DCM4CHEE_ARC/jboss-modules/jclouds-jboss-modules-2.2.1-noguava.zip
-
Only if upgrading archive upto versions 5.16.0 : Update querydsl libraries to 4.2.1 as JBoss modules (if upgrading to version 5.13.2 upto 5.16.0)
> cd $WILDFLY_HOME > rm -r modules/com/apache/querydsl > unzip $DCM4CHEE_ARC/jboss-modules/querydsl-jboss-modules-4.2.1-noguava.zip
-
(Re-)Start WildFly in standalone mode with the correct configuration file:
> $WILDFLY_HOME/bin/standalone.sh -c dcm4chee-arc.xml [UNIX] > %WILDFLY_HOME%\bin\standalone.bat -c dcm4chee-arc.xml [Windows]
-
If upgrading from version 5.5.x or older, create JMS Queue
HL7Send
using JBoss CLI:> $WILDFLY_HOME/bin/jboss-cli.sh -c [UNIX] > %WILDFLY_HOME%\bin\jboss-cli.bat -c [Windows] [standalone@localhost:9990 /] jms-queue add --queue-address=HL7Send --entries=java:/jms/queue/HL7Send
-
If upgrading from version 5.6.x or older, create JMS Queue
StgCmtSCU
using JBoss CLI:> $WILDFLY_HOME/bin/jboss-cli.sh -c [UNIX] > %WILDFLY_HOME%\bin\jboss-cli.bat -c [Windows] [standalone@localhost:9990 /] jms-queue add --queue-address=StgCmtSCU --entries=java:/jms/queue/StgCmtSCU
-
If upgrading from version 5.7.0 or older, install ecs-object-client 3.0.0 libraries as JBoss modules:
> cd $WILDFLY_HOME > unzip $DCM4CHEE_ARC/jboss-modules/ecs-object-client-jboss-modules-3.0.0.zip
-
If upgrading from version 5.7.2 or older, create JMS Queue
RSClient
using JBoss CLI:> $WILDFLY_HOME/bin/jboss-cli.sh -c [UNIX] > %WILDFLY_HOME%\bin\jboss-cli.bat -c [Windows] [standalone@localhost:9990 /] jms-queue add --queue-address=RSClient--entries=java:/jms/queue/RSClient
-
If upgrading from version 5.10.4 or older, create JMS queue
CMoveSCU
using JBoss CLI:> $WILDFLY_HOME/bin/jboss-cli.sh -c [UNIX] > %WILDFLY_HOME%\bin\jboss-cli.bat -c [Windows] [standalone@localhost:9990 /] jms-queue add --queue-address=CMoveSCU --entries=java:/jms/queue/CMoveSCU
-
If upgrading from version 5.12.0 or older, create JMS queue
DiffTasks
using JBoss CLI:> $WILDFLY_HOME/bin/jboss-cli.sh -c [UNIX] > %WILDFLY_HOME%\bin\jboss-cli.bat -c [Windows] [standalone@localhost:9990 /] jms-queue add --queue-address=DiffTasks --entries=java:/jms/queue/DiffTasks
-
If upgrading from version 5.13.0 or older, create JMS queue
Export4
andExport5
using JBoss CLI:> $WILDFLY_HOME/bin/jboss-cli.sh -c [UNIX] > %WILDFLY_HOME%\bin\jboss-cli.bat -c [Windows] [standalone@localhost:9990 /] jms-queue add --queue-address=Export4 --entries=java:/jms/queue/Export4 [standalone@localhost:9990 /] jms-queue add --queue-address=Export5 --entries=java:/jms/queue/Export5
-
If upgrading to version 5.14.1 or newer, create JMS Queue
StgVerTasks
using JBoss CLI:> $WILDFLY_HOME/bin/jboss-cli.sh -c [UNIX] > %WILDFLY_HOME%\bin\jboss-cli.bat -c [Windows] [standalone@localhost:9990 /] jms-queue add --queue-address=StgVerTasks --entries=java:/jms/queue/StgVerTasks
-
If upgrading from version 5.14.1 or older, create additional JMS queues
Export6
,Export7
,Export8
,Export9
andExport10
by default to enable greater configurability for processing tasks from various exporters using JBoss CLI:> $WILDFLY_HOME/bin/jboss-cli.sh -c [UNIX] > %WILDFLY_HOME%\bin\jboss-cli.bat -c [Windows] [standalone@localhost:9990 /] jms-queue add --queue-address=Export6 --entries=java:/jms/queue/Export6 [standalone@localhost:9990 /] jms-queue add --queue-address=Export7 --entries=java:/jms/queue/Export7 [standalone@localhost:9990 /] jms-queue add --queue-address=Export8 --entries=java:/jms/queue/Export8 [standalone@localhost:9990 /] jms-queue add --queue-address=Export9 --entries=java:/jms/queue/Export9 [standalone@localhost:9990 /] jms-queue add --queue-address=Export10 --entries=java:/jms/queue/Export10
-
If upgrading from version 5.15.1 or older, create JMS Queue
Rejection
using JBoss CLI:> $WILDFLY_HOME/bin/jboss-cli.sh -c [UNIX] > %WILDFLY_HOME%\bin\jboss-cli.bat -c [Windows] [standalone@localhost:9990 /] jms-queue add --queue-address=Rejection --entries=java:/jms/queue/Rejection
-
If upgrading to 5.16.2 or newer, remove the
CMoveSCU
queue and create new JMS queues forRetrieve
> $WILDFLY_HOME/bin/jboss-cli.sh -c [UNIX] > %WILDFLY_HOME%\bin\jboss-cli.bat -c [Windows] [standalone@localhost:9990 /] jms-queue remove --queue-address=CMoveSCU [standalone@localhost:9990 /] jms-queue add --queue-address=Retrieve1 --entries=java:/jms/queue/Retrieve1 [standalone@localhost:9990 /] jms-queue add --queue-address=Retrieve2 --entries=java:/jms/queue/Retrieve2 [standalone@localhost:9990 /] jms-queue add --queue-address=Retrieve3 --entries=java:/jms/queue/Retrieve3 [standalone@localhost:9990 /] jms-queue add --queue-address=Retrieve4 --entries=java:/jms/queue/Retrieve4 [standalone@localhost:9990 /] jms-queue add --queue-address=Retrieve5 --entries=java:/jms/queue/Retrieve5 [standalone@localhost:9990 /] jms-queue add --queue-address=Retrieve6 --entries=java:/jms/queue/Retrieve6 [standalone@localhost:9990 /] jms-queue add --queue-address=Retrieve7 --entries=java:/jms/queue/Retrieve7 [standalone@localhost:9990 /] jms-queue add --queue-address=Retrieve8 --entries=java:/jms/queue/Retrieve8 [standalone@localhost:9990 /] jms-queue add --queue-address=Retrieve9 --entries=java:/jms/queue/Retrieve9 [standalone@localhost:9990 /] jms-queue add --queue-address=Retrieve10 --entries=java:/jms/queue/Retrieve10 [standalone@localhost:9990 /] jms-queue add --queue-address=Retrieve11 --entries=java:/jms/queue/Retrieve11 [standalone@localhost:9990 /] jms-queue add --queue-address=Retrieve12 --entries=java:/jms/queue/Retrieve12 [standalone@localhost:9990 /] jms-queue add --queue-address=Retrieve13 --entries=java:/jms/queue/Retrieve13
-
Undeploy old DCM4CHEE Archive 5.x.x (replace 5.x.x with version number to be undeployed) using JBoss CLI, e.g.:
> $WILDFLY_HOME/bin/jboss-cli.sh -c [UNIX] > %WILDFLY_HOME%\bin\jboss-cli.bat -c [Windows] [standalone@localhost:9990 /] undeploy dcm4chee-arc-ear-5.x.x-psql.ear
-
Deploy new DCM4CHEE Archive 5.x.x (replace 5.x.x by the version number you are deploying) using JBoss CLI, e.g.:
[standalone@localhost:9990 /] deploy $DCM4CHEE_ARC/deploy/dcm4chee-arc-ear-5.x.new-psql.ear
-
If upgrading secured version of archive, then also refer Secured Archive Wildfly Upgrade
Refer Secured Archive Upgrade, for :
- Use / test of secured DICOM Upper Layer services, optionally using dcm4che tools.
- Upgrading secured version of archive.
DCM4CHEE 5 Documentation