9.1. Preparation of an update

General information

When you update Goobi workflow, all plug-ins should also be updated. You should also check the page Installed plug-ins in Goobi workflow. If this page does not yet exist, the relevant files must be identified in the file system. It is important not to forget the REST API.

Commands from this manual are best copied by clicking on the corresponding icon. Otherwise there is the danger of copying unwanted whitespaces.

Sensible preparatory work before carrying out the update

Checking the condition

To ensure the machine is in good condition, the following items should be checked before and/or after the update:

find /opt/digiverso/goobi/{rulesets,config} /opt/digiverso/itm/{config,templates} /etc/tomcat{,7,8,9}  -name "*.xml" -exec xmllint --noout {} \;
mysql goobi -e'SELECT DISTINCT ldapgruppenid FROM benutzer WHERE ldapgruppenid NOT IN (SELECT ldapgruppenid FROM ldapgruppen) OR ldapgruppenid IS NULL'
mysql goobi -NBse 'SELECT table_name FROM INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA="goobi" and TABLE_TYPE="BASE TABLE" and ENGINE != "InnoDB"' | while read i; do echo $i; mysql goobi -e "alter table $i ENGINE = InnoDB"; done

Creation of a backup

It makes sense to issue the Tomcat before the backup. However, it is necessary to check beforehand that no other user is logged into Goobi workflow. In addition to displaying the users who are logged in in the interface, the last entries in the process log or the last logins can be helpful in assessing the situation:

mysql goobi -e'select creationDate, userName, type, left(content,70) from journal order by creationDate desc limit 30'
grep user\ DN /opt/digiverso/logs/goobi.log -B1 | tail

The Tomcat process for Goobi workflow can then be terminated:

systemctl stop tomcat9

Use the following commands to create a backup directory and copy the files to it:

BAK=/home/intranda/BACKUP/$(date -I) && mkdir $BAK
mysqldump goobi | gzip > $BAK/goobi.$(date +%s).sql.gz
mkdir $BAK/goobi $BAK/webapps
cp -at $BAK/goobi /opt/digiverso/goobi/{config,xslt,lib,plugins,rulesets,scripts}
cp -at $BAK/webapps /var/lib/tomcat{,7,8,9}/webapps/goobi
cp -at $BAK/ /opt/digiverso/tomcat-lib
cp -at $BAK/ /opt/digiverso/config
# If intranda TaskManager is installed
cp -at $BAK/webapps /var/lib/tomcat{,7,8,9}/webapps/itm
cp -at $BAK/ /opt/digiverso/itm
# If LayoutWizzard is installed
cp -at $BAK /opt/digiverso/[L,l]ayout[w,W]izzard

Copy the new files to this machine

It is recommended to copy the files to /tmp/g3 on the machine to be updated. The following function can then be used to easily determine the differences between two configuration files:

gdiff() { diff -uBw /tmp/g3/"$1" /opt/digiverso/goobi/config/"$1" | colordiff; }

The following commands can be used to move the files to the correct paths:

mv /tmp/g3/goobi.war /var/lib/tomcat9/webapps/
mv /tmp/g3/statistics_template.* /opt/digiverso/goobi/plugins/statistics/
mv /tmp/g3/plugin_intranda_*GUI*.jar /opt/digiverso/goobi/plugins/GUI/
mv /tmp/g3/plugin_intranda_administration_*.jar /opt/digiverso/goobi/plugins/administration/
mv /tmp/g3/plugin_intranda_command*.jar /opt/digiverso/goobi/plugins/command/
mv /tmp/g3/plugin_intranda_step_*.jar /opt/digiverso/goobi/plugins/step/
mv /tmp/g3/plugin_intranda_dashboard*.jar /opt/digiverso/goobi/plugins/dashboard/
mv /tmp/g3/plugin_intranda_opac*.jar /opt/digiverso/goobi/plugins/opac/
mv /tmp/g3/plugin_intranda_import*.jar /opt/digiverso/goobi/plugins/import/
mv /tmp/g3/plugin_intranda_export*.jar /opt/digiverso/goobi/plugins/export/
mv /tmp/g3/plugin_intranda_statistics*.jar /opt/digiverso/goobi/plugins/statistics/
mv /tmp/g3/plugin_intranda_validation*.jar /opt/digiverso/goobi/plugins/validation/
mv /tmp/g3/plugin_intranda_workflow*.jar /opt/digiverso/goobi/plugins/workflow/
mv /tmp/g3/plugin_intranda_rest_*.jar /opt/digiverso/goobi/lib/
# If intranda TaskManager is installed
mv /tmp/g3/itm.war /var/lib/tomcat9/webapps/
mv /tmp/g3/TaskClient.jar /opt/digiverso/itm/bin/TaskClient.jar

Now the existing configuration files can be compared with the new ones.

Especially configuration files of plugins can have a different file name due to a change in the naming scheme.

The gdiff function can be used to compare the files. The desired changes should now be merged and applied to the new files.

When the work is complete, the timestamp comparison can be used to determine whether all necessary files have been updated:

ls -lh /opt/digiverso/goobi/plugins/*/*
ls -lh /opt/digiverso/goobi/lib/*

Plugins that are built as tar package:

goobiInstallPlugin() {
    tar -C /opt/digiverso/goobi/ -xvf $1 --exclude "pom.xml"
# Example:
goobiInstallPlugin /tmp/g3/plugin_intranda_step_replace-images.tar

Testing the installed update

The following things should be checked after an update:

Rescue in case of problems

Sometimes errors may occur after the update. The following points help to identify and solve typical problems:

Goobi does not start - ActiveMQ

If the Tomcat hangs after starting, the contents of the folder /opt/digiverso/goobi/activemq/ may be to blame. Emptying and restarting helps in this case:

find /opt/digiverso/goobi/activemq/ -type f -delete


The LayoutWizzard.jar in /opt/digiverso/{goobi,itm}/lib/ must be the same Symbolic links do not work.

Implementation of the actual update

After all preliminary work has been carried out, the actual update can take place. This is explained in detail in individual steps here:

page9.2. Update steps

Last updated