IBM Support

Watsonx.governance post-upgrade solution load steps | OpenPages on Cloud Pak for Data

How To


Summary

After you upgrade watsonx.governance, you need to load the corresponding solution loader files manually into OpenPages to ensure that the latest solution changes are applied. These solution changes are not loaded automatically during the upgrade process.

This document provides the steps to load the updated OpenPages solution loader files for Cloud Pak for Data versions 5.2.0, 5.2.1, and 5.3.1.

Steps

Post-upgrade steps to load solution loader files

 
  1. Log in to your Red Hat® OpenShift® cluster as an instance administrator:

    oc login OpenShift_URL:port
    
  2. Change to the project where OpenPages is installed:

    oc project <Project>
    
  3. Patch the OpenPages instance CR to enable the debug container. Wait for the operator reconciliation to complete.

    oc patch OpenPagesInstance <OpenPages Instance Name> --type=merge --patch '{
      "spec": {
        "run_debug_provisioner": true
      }
    }'
  4. A new pod is deployed in the specified namespace. The pod has the following name:

    op-<OpenPages Instance ID>-db-debug-deploy-xxxxxxx-xxxx
  5. Switch to the OpenPages debug pod: 

    oc exec -it op-<OpenPages Instance ID>-db-debug-deploy-xxxxxxx-xxxx -- bash
    
  6. Define the upgrade source and destination versions. For example:

    export SOURCE_VERSION=5.1.3
    export DESTINATION_VERSION=5.2.1
    The solution loader phases (phase6, phase7, phase8) to be loaded during the process depend on the source version (the version you're upgrading from) and the destination version (the version you're upgrading to).
    • If you're upgrading from a version earlier than 5.2.0 to a version greater than 5.2.0 and earlier than 5.3.1, both phase6 and phase7 must be loaded.
    • If you're upgrading from a version earlier than 5.2.0 to exactly 5.2.0, only phase6 needs to be loaded.
    • If you're upgrading from version 5.2.0 to a version earlier than 5.3.1, only phase7 is required.
    • If you're upgrading from a version earlier than 5.2.0 to version 5.3.1, phase6, phase7, and phase8 must be loaded.
    • If you're upgrading from version 5.2.0 to version 5.3.1, only phase8 needs to be loaded.

      Source VersionDestination VersionPhases to load
      <  5.2.0< 5.3.1phase6, phase7
      <  5.2.0= 5.2.0phase6
      = 5.2.0< 5.3.1phase7
      < 5.2.0= 5.3.1phase6, phase7, phase8
      = 5.2.0= 5.3.1phase8
  7. Create the script file in the /tmp directory, Set Execute permissions on the script file, and then run it:

    #!/usr/bin/env bash
    
    source /app-root/bin/logging-utils.sh
    source /app-root/bin/unset_proxy.sh
    
    declare -r sharedsecret="$(cat /var/run/sharedsecrets/token)"
    declare -r apibase="https://internal-nginx-svc.${ZEN_CONTROL_PLANE_NS}.svc.cluster.local:12443/zen-data"
    declare -r optoken="$(curl -k -H "secret: ${sharedsecret}" -H 'cache-control: no-cache' -X GET "${apibase}/internal/v1/service_token?username=OpenPagesAdministrator&expiration_time=120" | jq -r '.token')"
    declare -r OP_EXT_HOST="${OP_EXT_HOST}"
    declare -r OP_EXT_PORT="${OP_EXT_PORT}"
    
    # Function to set loader_phases
    
    version_gt() { test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1"; }
    version_eq() { [ "$1" = "$2" ]; }
    
    set_loader_phases() {
    
      if version_gt "5.2.0" "$SOURCE_VERSION" && version_eq "$DESTINATION_VERSION" "5.2.0"; then
        loader_phases=("phase6")
    
      elif version_gt "5.2.0" "$SOURCE_VERSION" && version_gt "5.3.1" "$DESTINATION_VERSION"; then
        loader_phases=("phase6" "phase7")
    
      elif version_eq "$SOURCE_VERSION" "5.2.0" && version_gt "5.3.1" "$DESTINATION_VERSION"; then
        loader_phases=("phase7")
    
      elif version_gt "5.2.0" "$SOURCE_VERSION" && version_eq "$DESTINATION_VERSION" "5.3.1"; then
        loader_phases=("phase6" "phase7" "phase8")
    
      elif version_eq "$SOURCE_VERSION" "5.2.0" && version_eq "$DESTINATION_VERSION" "5.3.1"; then
        loader_phases=("phase8")
    
      else
        loader_phases=()
        logInfo "No matching loader phases for source: $SOURCE_VERSION and destination: $DESTINATION_VERSION"
      fi
    }
    set_loader_phases
    
    
    
    # update ObjectManager properties
    logInfo "Updating ObjectManager properties"
    sed -i "s|rest.url.path\s*=.*|rest.url.path = https://${OP_EXT_HOST}:${OP_EXT_PORT}/${OP_CONTEXT_ROOT}-grc/api|g" /opt/ibm/OpenPages/bin/openpages-tools-client.properties
    sed -i "s|configuration.manager.force.update.object.strings\s*=.*|configuration.manager.force.update.object.strings = true|g" /opt/ibm/OpenPages/bin/ObjectManager.properties
    sed -i "s|configuration.manager.force.update.application.strings\s*=.*|configuration.manager.force.update.application.strings = true|g" /opt/ibm/OpenPages/bin/ObjectManager.properties
    sed -i "s|configuration.manager.vendor.mode\s*=.*|configuration.manager.vendor.mode = true|g" /opt/ibm/OpenPages/bin/ObjectManager.properties
    if [[ $? != 0 ]]; then
      logError "Failed to update properties."
      exit 1
    fi
    
    cat /opt/ibm/OpenPages/bin/openpages-tools-client.properties
    main() {
      load_watsonx_modules
    }
    
    wait_for_app() {
      # wait for OpenPages to become available
      logInfo "Waiting for application startup at https://${OP_EXT_HOST}:${OP_EXT_PORT}/${OP_CONTEXT_ROOT}"
      while true; do
        curl -s -k -X GET -H "Authorization: Bearer ${optoken}" https://${OP_EXT_HOST}:${OP_EXT_PORT}/${OP_CONTEXT_ROOT}-grc/api/types | grep -q "sox"
        if [[ $? == 0 ]]; then
          break
        fi
        sleep 30s
      done
    }
    
    load_watsonx_modules(){
      wait_for_app
    
      for phase in "${loader_phases[@]}"; do
        logInfo "Loading Watsonx.Gov $phase solution loader files" &&
          cd /opt/ibm/OpenPages/bin &&
          ./ObjectManager.sh b c jwt "${optoken}" \
            "/opt/ibm/OpenPages/loaderdata/OP.watsonx.governance.${phase}.modules" \
            "/opt/ibm/OpenPages/loaderdata/OP.watsonx.governance.${phase}.modules/_wxgov.loader.${phase}.txt"
    
        if [[ $? != 0 ]]; then
          logError "Error occurred while loading Watsonx.Gov $phase solution"
        fi
      done
    
      logInfo "Loading AI Factsheet Webhooks" &&
        cd /opt/ibm/OpenPages/bin &&
        ./ObjectManager.sh l c jwt "${optoken}" \
          "/opt/ibm/OpenPages/loaderdata/OP.watsonx.governance.phase7.modules" \
          "/opt/ibm/OpenPages/loaderdata/OP.watsonx.governance.phase7.modules/wxgov.phase7.webhooks"
      
      if [[ $? != 0 ]]; then
        logError "Error occurred while loading AI Factsheet Webhooks"
      fi
    }
    
    cd "$(dirname "${BASH_SOURCE[0]}")"
    
    main "$@"
 
The following logs show the loader files being processed and imported into OpenPages:
[04/08/2025 12:54:14 UTC] bb.sh INFO:  Loading Watsonx.Gov phase6 solution loader files
2025-08-04T12:54:18,091+0000 INFO [objectmanager.App] - Starting ObjectManager in command mode: batch
2025-08-04T12:54:18,629+0000 INFO [util.RestUtils] - sending 105059 bytes to endpoint load/CP4D_Token-1754312058136

...
...

[04/08/2025 12:56:06 UTC] bb.sh INFO:  Loading Watsonx.Gov phase7 solution loader files
2025-08-04T12:56:10,023+0000 INFO [objectmanager.App] - Starting ObjectManager in command mode: batch
2025-08-04T12:56:10,933+0000 INFO [util.RestUtils] - sending 420021 bytes to endpoint load/CP4D_Token-1754312170189
2025-08-04T12:56:12,974+0000 INFO [util.Utils] - Starting to poll process 3331 for updates...
2025-08-04T12:56:13,137+0000 INFO [util.Utils] - ObjectManager Import Process (wxgov.phase7.schema): started
2025-08-04T12:56:13,137+0000 INFO [util.Utils] - ObjectManager Import Process (wxgov.phase7.schema): [wxgov.phase7.schema] : Preparing to start import...


...
...

[04/08/2025 13:05:06 UTC] bb.sh INFO:  Loading Watsonx.Gov phase8 solution loader files
2025-08-04T13:05:10,023+0000 INFO [objectmanager.App] - Starting ObjectManager in command mode: batch
2025-08-04T13:05:10,933+0000 INFO [util.RestUtils] - sending 520021 bytes to endpoint load/CP4D_Token-1754312710189
2025-08-04T13:05:12,974+0000 INFO [util.Utils] - Starting to poll process 3332 for updates...
2025-08-04T13:05:13,137+0000 INFO [util.Utils] - ObjectManager Import Process (wxgov.phase8.schema): started
2025-08-04T13:05:13,137+0000 INFO [util.Utils] - ObjectManager Import Process (wxgov.phase8.schema): [wxgov.phase8.schema] : Preparing to start import...


...
...

2025-08-04T13:05:11,327+0000 INFO [objectmanager.App] - Exiting after 6894ms with status code 0

 
 
 
 
 
 

Document Location

Worldwide

[{"Type":"MASTER","Line of Business":{"code":"LOB76","label":"Data Platform"},"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SSE3K1","label":"IBM OpenPages for IBM Cloud Pak for Data"},"ARM Category":[{"code":"a8m3p000000UoQtAAK","label":"Administration"},{"code":"a8m3p000000UoRRAA0","label":"Administration-\u003EUpgrade"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"9.0.0"},{"Type":"MASTER","Line of Business":{"code":"LOB76","label":"Data Platform"},"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SSDH4GU","label":"IBM OpenPages Cartridge"},"ARM Category":[{"code":"a8m3p000000UoQtAAK","label":"Administration"},{"code":"a8m3p000000UoRRAA0","label":"Administration-\u003EUpgrade"}],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"9.1.0;9.1.1"}]

Document Information

Modified date:
07 August 2025

UID

ibm17241676