Rolling back the Engineering Lifecycle Management instance across the channels in the Red Hat OpenShift CLI

Cross-channel rollback allows you to revert your Engineering Lifecycle Management deployment to an earlier version, release, or mod level from any available update channel. Use this method when you need to change the major version number (for example, from 7.2.0 to 7.1.0).

Before you begin

  • You must have the appropriate permissions to roll back the Engineering Lifecycle Management instance. For more information about the user roles in the Red Hat® OpenShift®, see User roles mapping in Engineering Lifecycle Management on Hybrid Cloud.
  • Ensure that the required Engineering Lifecycle Management operator channel is available in the operator hub that supports the Engineering Lifecycle Management operator and Engineering Lifecycle Management instance version to be rolled back to.
  • Ensure to backup the applications configuration files and text indices data for all the applications, see Backing up the Engineering Lifecycle Management application by using ELMOperation instance. Backup files generated in the previous steps would be located at elm-backup-pvc for application configurations and text indices files. And, Engineering Lifecycle Management instance YAML configuration in elm-backup-pvc
  • Back up all the Engineering Lifecycle Management application database. For more information, see Backing up and restoring other supported databases.
  • You must consider the Engineering Lifecycle Management applications downtime when you roll back the Engineering Lifecycle Management instance.

Procedure

  1. Rolling back to previous ELM version across channel requires existing operator to be uninstalled. Uninstall the existing operator version by following the steps mentioned in Uninstalling Engineering Lifecycle Management operator
  2. Install the Engineering Lifecycle Management operator with the required channel on the same project. For more information, see Installing Engineering Lifecycle Management on Hybrid Cloud
  3. Shut down all the applications by running the shutdown command on the application pod terminal. For more information, see Accessing application pod terminal.
    /elm/server/addServerTask.sh afterShutdown WAIT_FOR_POD_SHUTDOWN
    /elm/server/server.shutdown
    Note: The stop sequence for Engineering Lifecycle Management applications is ENI -> RB -> DCC -> LQE -> CCM -> QM -> RM-> GC -> JTS -> JAS
  4. Restore the Engineering Lifecycle Management application database that is backed up before the upgrade process. For more information, see Backing up and restoring other supported databases.
    Note: You must restore the correct database backup that is backed up before the upgrade process. The database backup must be for the Engineering Lifecycle Management version to be rolled back.
  5. Restart all the applications by running the shutdown command on the application pod terminal. For more information, see Accessing application pod terminal.
    /elm/server/addServerTask.sh afterShutdown RESTART
    Note: The start sequence for Engineering Lifecycle Management applications is JAS->JTS -> CCM -> QM -> RM -> GC -> LQE -> DCC -> RB -> ENI
  6. Rollback the Engineering Lifecycle Management instance by using the following steps
    1. Log in to the Red Hat OpenShift and connect to your project.
    2. Patch the Engineering Lifecycle Management instance. Cluster administrator or user with the necessary permissions needs to patch the Engineering Lifecycle Management instance version to the available rollback version.
      1. Get Engineering Lifecycle Management instance
        oc get elm -n <namespace-name>
        Replace the namespace-name
        oc get elm -n example
      2. Rollback Engineering Lifecycle Management instance
        oc patch elm <elm-instance-name> --patch '{"spec":{"version":"<available-elm-version>"}}' --type=merge -n <namespace-name>

        Replace the elm-instance-name and namespace-name. For example

        oc patch elm example-elm --patch '{"spec":{"version":"7.1.0_iFix004"}}' --type=merge -n example
      The Engineering Lifecycle Management operator starts the rollback process. The following stages are completed during the process.
      • Rollback validations
      • Rollback
      • Engineering Lifecycle Management instance post rollback validations
      • Application Diagnostics
    3. Monitor the rollback progress in the Upgrade Events table and Application Events table. Once the rollback process completes, you can see the Completed status for all four stages in the Upgrade Events table. If any error message appears, resolve the error by following the troubleshooting information that is provided in Troubleshooting of upgrade errors
      oc get elm <elm-instance-name> -o jsonpath='Application Events : {"\n\n"}{range .status.applicationsStatus.conditions[*]}Application - {.type}{"\t"}Status - {.status}{"\t"}Message - {.message}{"\n"}{end}{"\n\n"}Upgrade Events : {"\n\n"}{range .status.upgradeStatus.conditions[*]}Status - {.status}{"\t"}Message - {.message}{"\n"}{end}' -n <namespace-name>

      Replace the elm-instance-name and namespace-name in the following command. For example

      oc get elm/example-elm -o jsonpath='Application Events : {"\n\n"}{range .status.applicationsStatus.conditions[*]}Application - {.type}{"\t"}Status - {.status}{"\t"}Message - {.message}{"\n"}{end}{"\n\n"}Upgrade Events : {"\n\n"}{range .status.upgradeStatus.conditions[*]}Status - {.status}{"\t"}Message - {.message}{"\n"}{end}' -n example
  7. Verify that the Engineering Lifecycle Management instance is rolled back successfully.
    oc get elm <elm-instance-name> -o jsonpath='Installed ELM Version : {.spec.version} {"\n"}{.status.upgradeStatus.conditions[].message}' -n <namespace-name>

    Replace the elm-instance-name and namespace-name in the following command. For example

    oc get elm example-elm -o jsonpath='Installed ELM Version : {.spec.version} {"\n"}{.status.upgradeStatus.conditions[].message}' -n example
  8. Get the JTS URL and open in browser. The JAS login page opens
    oc get elm example-elm -o jsonpath='https://{.spec.hostName}/{.spec.applications.JTS.contextRoot}' -n example

    Replace the elm-instance-name and namespace-name in the following command. For example

    oc get elm example-elm -o jsonpath='https://{.spec.hostName}/{.spec.applications.JTS.contextRoot}' -n example
    Important: Use the login credentials that have administrative privileges in the application.
  9. Click Settings > Manage Server. On the Status Summary page, verify that the Engineering Lifecycle Management version appears in the Build Information section. In the left page, click Diagnostics. Ensure that no error is listed on the page.