Your Horizon repository is defined in your /etc/yum.repos.d/ directory.

The file may be named opennms-repo-stable-<OSversion>.repo, but it is not guaranteed to be.

  1. Sudo to root.

  2. Enable auto updates:

    yum -y install yum-utils
    yum-config-manager --enable opennms-repo-stable-*
  3. Purge any cached yum data:

    yum clean all
  4. Make a backup copy of your OpenNMS config:

    rsync -Ppav ${OPENNMS_HOME}/etc /tmp/etc.orig
    rsync -Ppav${OPENNMS_HOME}/jetty-webapps/opennms/WEB-INF /tmp/opennms-web-inf
  5. Upgrade the Horizon packages to the newest version:

    yum -y upgrade opennms
  6. Disable auto updates:

    yum-config-manager --disable opennms-repo-stable-*
  7. Upgrade Java 11 to the latest release:

    yum -y install java-11-openjdk java-11-openjdk-devel
  8. Execute runjava to set the JVM that Horizon will use:

    ${OPENNMS_HOME}/bin/runjava -s
  9. Check for configuration file changes, and update accordingly using the files you backed up in identify changed configuration files.

    If you upgrade in place, OpenNMS renames any shipped config that conflicts with an existing user-modified config to .rpmnew or .rpmsave. Inspect these files manually and reconcile any differences. Use diff -Bbw and diff -y to look for changes. If any .rpmnew or .rpmsave files exist within the configuration directory, services will not start.
  10. Run the Horizon installer:

    ${OPENNMS_HOME}/bin/install -dis

    The upgrade may take some time. An Updgrade completed successfully! message confirms that the upgrade has completed. If you do not get this message, check the output of the install command for any errors.

  11. Clear the Karaf cache:

    yes | ${OPENNMS_HOME}/bin/fix-karaf-setup.sh
  12. Start OpenNMS Horizon:

    systemctl start opennms.service
    tail -F ${OPENNMS_HOME}/logs/manager.log illustrates the Horizon startup progress.
  13. The upgrade completes and operation resumes.

Make sure you clear your browser’s cache before using the Horizon web UI against the upgraded version. This is especially important for pages that use JavaScript heavily (for example, the Requisitions UI).