Installing Siebel Monthly Updates in a Siebel CRM Environment Deployed by SCM

You can use these steps to install latest monthly updates in a Siebel CRM environment deployed by SCM. These steps do not include repository upgrade steps, which are optional and identical to those relevant for on-premises Siebel CRM deployments.

Starting with version 26.6, SCM and Siebel CRM support custom non-root user ID and group ID for pods. This helps harden the security posture of deployed environments. Pods can run with user-selected non-root user ID, group ID, and file system group ID based on the security requirements of the target cluster.

Note: Using custom non-root user ID and group ID is optional. To use this feature, you must first update your environment from version 26.5 or earlier to version 26.6 or later. Perform the custom non-root user ID and group ID update steps only when you need to change the user ID and group ID or when the target cluster security policy requires specific non-root user, group, or file system group values.

To move to the hardened security model, you must:

  1. Install the monthly update by following the procedure in this section.
  2. Perform the post-update security hardening steps for SCM and Siebel pods. For more information, see the Post-Update Security Hardening for SCM and Siebel Pods section in Appendix.
Note: For OpenShift environments, you must:
  1. Complete the prerequisites for updating to version 26.6 or later. For more information, see Prerequisites for Updating to Version 26.6 .
  2. Apply the monthly update.
  3. (Optional) Perform the post-update security hardening steps. For more information, see the Post-Update Security Hardening for SCM and Siebel Pods section in Appendix.
Note: When moving Siebel environments from versions older than CM_23.8.1 to the latest, by following steps below, the sourcing of python virtual environment is required in addition to sourcing of the k8sprofile to access the OKE Cluster. Otherwise, for example, kubectl commands such as kubectl get pods may throw error. Sourcing of virtual environment and k8sprofile can be done by running the following commands:
sudo podman exec -it cloudmanager bash
bash-4.4$ source /home/opc/venv/bin/activate 
source /home/opc/siebel/<env_id>/k8sprofile

If you're migrating from a Siebel CRM release earlier than 25.10, you'll need to apply OpenSSL-based encryption later in the monthly updates' installation process, after you build and push the new Siebel CRM custom image for the target version.

To install a Siebel monthly update in a Siebel CRM environment deployed using SCM:

  1. Back up the database.

    You must perform a backup of the database; preferably, a full backup.

  2. Enable separate keystores for server and client authentication.

    Starting with Siebel release 26.3, Siebel mandates the use of separate certificates for server and client authentication to improve security and ensure compliance with modern Public Key Infrastructure (PKI) standards.

    For the steps to configure separate keystores for client and server authentication, refer to MOS article KB888322 - Configuring Separate Keystores for Server and Client Authentication.

    Note: Effective May 1, 2026, many Trusted Root Certification Authorities will no longer issue SSL certificates that include both the server authentication and client authentication Extended Key Usage (EKU).
  3. Back up the SCM provided files for the Siebel CRM environment.

    You must back up the files in the current environment to ensure that you have a working version of the required set of files in case of any issues with the new upgrade or if you want to roll back to the previous version.

    To create a backup, do the following:

    1. Create a backup directory:
      ssh -i <private_key> opc@<cm_instance>
      mkdir /home/opc/siebel/<ENV_ID>/<backup_dir_name>
    2. Exec in to the SCM container:
      sudo podman exec -it cloudmanager bash
    3. Mount the siebfs file system to take the required backup:
      1. On a Kubernetes cluster using Siebel Installer:
        kubectl exec -it <pod_name> -n <namespace> -- /bin/bash

        In the example, the value of <pod_name> is the Kubernetes generated random string prefixed with scm-. For example, scm-7895dc6b5c-xcfvd.

        sudo mount -t nfs {FILESYSTEM_HOST}:/{env-namespace}-siebfs{filesystem-index} /home/opc/siebel/{env_id}/{env-namespace}-siebfs{filesystem-index} -o nolock
      2. On OCI using SCM:
        sudo podman exec -it cloudmanager bash
        sudo mount -t nfs {FILESYSTEM_HOST}:/{env-namespace}-siebfs{filesystem-index} /home/opc/siebel/{env_id}/{env-namespace}-siebfs{filesystem-index} -o nolock
    4. Copy the SCM Helm charts, SCM Git repositories, environment configurations (for example, CGW and SES), Siebel server (for example, quantum) and AI configurations (for example, quantum) to the backup directory (<backup_dir_name>):
      cd /home/opc/siebel/<env_id>/<backup_dir_name>
      cp -R /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/ /home/opc/siebel/<ENV_ID>/<env_namespace>-cloud-manager/ /home/opc/siebel/<ENV_ID>/<env_namespace>-siebfs0/<ENV_NAMESPACE>/CGW/ /home/opc/siebel/<ENV_ID>/<env_namespace>-siebfs0/<ENV_NAMESPACE>/SES/ /home/opc/siebel/<ENV_ID>/<env_namespace>-siebfs0/<ENV_NAMESPACE>/edge/ /home/opc/siebel/<ENV_ID>/<env_namespace>-siebfs0/<ENV_NAMESPACE>/quantum/ /home/opc/siebel/<ENV_ID>/<backup_dir_name>
      exit
      Note: The variables in the example have the following values:
      • <private_key>: The key used in SCM stack creation.
      • <cm_instance>: The SCM instance IP address.
      • <backup_dir_name>: The name of the backup directory.
      • <env_id>: The six characters long environment ID.
      • <env_namespace>: The name of the environment given in the payload.
      • <ENV_NAMESPACE>: The name of the environment given in the payload, in uppercase.
      • edge: The Siebel CRM server name.
      • quantum: The ai server name.
  4. Tag git repositories.
    1. Create a tag in the SCM Git repository as follows:
      sudo podman exec -it cloudmanager bash 
      cd /home/opc/siebel/<ENV_ID>/<env_namespace>-cloud-manager/
      git pull
      git tag <tag_name> 
      git push origin --tags 

      In the example, <tag_name> is the source Siebel version. For example, 25.7.

    2. Create a tag in the Helm charts Git repository as follows:
      sudo podman exec -it cloudmanager bash 
      cd /home/opc/siebel/<ENV_ID>/ <env_namespace>-helmcharts/ 
      git pull
      git tag <Tag_Name> 
      git push origin --tags 
      exit

      In the example, <Tag_Name> is the source Siebel version. For example, 25.7.

  5. Upgrade SCM.

    You must upgrade your SCM instance to match the target Siebel CRM version to which you wish to upgrade. For more information, see Updating Siebel Cloud Manager with a New Container Image.

    To upgrade SCM using Helm in a Kubernetes cluster, see Upgrading SCM using Helm.

  6. Update SCM container images to the user's container registry.
    1. Copy the SCM container images to the user's container registry using the SCM mirror API. For more information, see Mirroring Siebel Base Container Images.
    2. Verify the mirror API response by comparing it with the image details specified in the /home/opc/siebel-cloud-manager/scripts/cmapp/yaml/siebel_images.yaml file.
    Note:
  7. Update the Traefik Helm chart:

    You must update the Traefik Helm chart to the latest version. To update the Traefik Helm chart, do the following:

    1. Suspend Flux kustomization for Traefik as follows:
      1. Verify the deployment state of Traefik:
        helm list -n <env_namespace>

        The name of the Traefik in the command response is <env_namespace>-traefik.

      2. Suspend the Flux Kustomizations and Helm release for Traefik before applying the Traefik Helm chart changes from the Helm chart repository:
        flux suspend kustomization traefik-controller traefik-resources -n <env_namepsace>
        flux suspend helmrelease traefik -n <env_namepsace>
    2. Update the Helm chart repository:
      1. Copy the infrastructure Helm chart from the SCM charts directory:
        cd /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/ 
        rm -Rf traefik
        <env_namespace>-helmcharts/
      2. Go to the traefik directory:
        cd /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/traefik
      3. Open Chart.yaml and increment the chart version to roll out the Traefik Helm chart changes.
      4. Commit the changes to the Git repository:
        git add .
        git commit -m "traefik latest helmchart changes" 
        git push
      5. Verify that the working tree is clean:
        git status
        Note: Flux reconciliation does not happen at this time as flux is in suspended mode.
    3. Resume the Flux Kustomizations and Helm release for Traefik:
      cd /home/opc/siebel/<ENV_ID>/
      source k8sprofile
      flux resume kustomization traefik-controller traefik-resources -n <env_namepsace> 
      flux resume helmrelease traefik -n <env_namepsace> 
      flux reconcile source git siebel-repo -n <env_namespace>
      flux reconcile source git <env_namespace>-repo -n <env_namespace>

      In the example above, <env_namespace>-repo is the name of the Flux repository and <env_namespace> is the repository name.

    4. Verify that the Traefik updates have been applied successfully. Confirm that the SUSPENDED field is False and the READY field is True in the output of the following commands:
      flux get kustomization traefik-controller -n <env_namespace>
      flux get kustomization traefik-resources -n <env_namespace> 
      flux get helmrelease traefik -n <env_namespace>

      Verify that the APP VERSION field shows the latest version and that the version number has increased from the previous version:

      helm list -n <env_namespace>
  8. Update secrets with the user's container registry details.

    You must update the secret definition used to pull images from the user's container registry with the user's container registry credentials. To recreate the secret definition with the user’s container registry credentials and update the secret named ocirsecret used in flux project, do the following:

    1. Delete existing secret definitions as follows:
      sudo podman exec -it cloudmanager bash 
      source /home/opc/siebel/<ENV_ID>/k8sprofile
      kubectl delete secret -n <env_namespace> ocirsecret 
      kubectl delete secret -n <env_namespace> customsecret
    2. Go to the secrets directory, create new ocirsecret and customsecret definitions with the user's container registry details and write the secrets to YAML files as follows:
      cd /home/opc/siebel/<env_id>/<Cloud manager repository name>/flux-crm/infrastructure/secrets
      
      kubectl --dry-run=client -n <env_namespace> create secret docker-registry ocirsecret \
      --docker-server=<registry_url> \
      --docker-username=<registry_username>\
      --docker-password=<registry_password> \
      --docker-email=siebel@oracle.com \
      -o yaml > ocir-siebeldev.yaml
      
      kubectl --dry-run=client -n <env_namespace> create secret docker-registry customsecret \
      --docker-server=<registry_url> \
      --docker-username=<registry_username>\
      --docker-password=<registry_password> \
      --docker-email=siebel@oracle.com \
      -o yaml > customsecret.yaml
    3. Commit the changes to the remote Git repository:
      git add .
      git commit -m "updated secrets with user’s container registry details" 
      git pull
      git push
    4. Reconcile flux to rollout the new secret created to the SCM repository:
      flux reconcile source git siebel-repo -n <env_namespace>
      flux reconcile source git <env_namespace>-repo -n <env_namespace>
      flux reconcile kustomization infrastructure -n <env_namespace>

      In the example, <env_namespace> is the name of the flux repository.

    5. Verify the ocirsecret and customsecret definitions. Get the secret and observe the age of the secret to confirm that the secret is updated:
      kubectl -n <env_namepace> get secret ocirsecret 
      kubectl -n <env_namepace> get secret customsecret
    6. Verify that the secret is working by pulling a basic image from the user’s container registry using the new ocirsecret, as follows:
      Note: Since ocirsecret is updated in <env_namespace>, you must create the test image pod with the name test_imagePull.yaml only in <env_namespace>.
      1. Go to the siebel directory:
        cd /home/opc/siebel/
      2. Create a kubernetes YAML file with the name test_imagePull.yaml that uses the updated secret to pull the image from the user’s container registry. Create the test_imagePull.yaml file:
        vi test_ImagePull.yaml

        Add the following details to the test_ImagePull.yaml file:

        apiVersion: v1 kind: Pod metadata:
        name: test-image-pod namespace: <env_namespace>
        spec: containers:
        - name: my-test-container
         
        image: <user_registry_url>/<registry_prefix>/cm/base-builder:<tag id from mirror response>
        command: ["sh", "-c", "echo 'Image pulled successfully!' && sleep 180"] imagePullSecrets:
        - name: ocirsecret

        In the example above, <env_namespace> is the secret's namespace.

      3. Apply test_imagePull.yaml manifest to verify the secret:
        kubectl apply -f test_imagePull.yaml -n <env_namespace>
      4. Query the status of pod continuously until the status changes from ContainerCreating to Running:
        kubectl get pod test-image-pod -n <env_namespace> -w
      5. Verify if the image has been pulled successfully:
        kubectl -n <env_namespace> logs po/test-image-pod
      6. Clean up the test pod:
        kubectl delete -f test_imagePull.yaml -n <env_namespace>
  9. Update Metacontroller Helm chart.

    You must update the Metacontroller Helm chart to the latest version. To update the Metacontroller Helm chart, do the following:

    1. Suspend flux kustomization for Metacontroller as follows:
      1. Verify the deployment state of Metacontroller:
        helm list -n <env_namespace>

        The name of the Metacontroller in the command response is <env_namespace>-metacontroller.

      2. Suspend flux kustomization for Metacontroller to rollout the latest Metacontroller changes in the Helm repository:
        flux suspend kustomization metacontroller -n <env_namepsace>
    2. Copy the tls directory to a backup directory:
      cd metacontraoller
      cp -r tls /home/opc/siebel/<env_id>/<backup_directory>/tls
    3. Update the Helm chart repository:
      1. Copy the Metacontroller Helm chart from the SCM charts directory:
        cd /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/
        rm -Rf metacontroller
        cp -R /home/opc/siebel-cloud-manager/charts/metacontroller /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/
      2. Go to the metacontroller directory:
        cd /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/metacontroller
      3. Open Chart.yaml and increment the chart version to roll out the Metacontroller changes.
      4. Copy the tls directory from the backup location to the <helm_repo>/metacontroller directory:
        cd /home/opc/siebel/<env_id>/<backup_folder>/metacontroller
        cp -r tls /home/opc/siebel/<env_id>/<helm_repo>/metacontroller/tls
      5. Commit the changes to the Git repository:
        cd /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/metacontroller
        git add .
        git commit -m "metacontroller latest helmchart changes"
        git push
      6. Verify the status of the working tree to confirm that the status is "nothing to commit, working tree clean":
        git status
        Note: Flux reconciliation does not happen at this time as flux is in suspended mode.
    4. Resume flux kustomization for Metacontroller:
      cd /home/opc/siebel/<ENV_ID>/
      source k8sprofile
      flux resume kustomization metacontroller -n <env_namepsace>
      flux reconcile source git siebel-repo -n <env_namespace> 
      flux reconcile source git <env_namespace> -n <env_namespace>

      In the example, <env_namespace> is the name of the flux repository.

    5. Verify and confirm the Metacontroller updates, ensure that the value of the field SUSPENDED is False and READY is True for the following commands:
      flux get kustomization metacontroller -n <env_namespace>
      flux get helmrelease metacontroller -n <env_namespace>
    6. Ensure that APP VERSION points to the latest version and is incremented from the previous version:
      helm list -n <env_namespace>
  10. Update Siebel operator Helm chart.

    You must update the Siebel operator Helm chart to the latest version. To update the Siebel operator Helm chart, do the following:

    1. Suspend flux kustomization for Siebel operator as follows:
      1. Verify the deployment state of the Siebel operator:
        kubectl get pods -n <env_namespace>

        The name of the Siebel operator in the command response is siebel-controller-xxx; here, xxx is the random number generated and assigned to the Siebel-operator.

      2. Suspend flux kustomization for siebel-operator to rollout latest Siebel-operator changes in SCM and Helm repositories:
        flux suspend kustomization siebel-operator -n <env_namepsace>
    2. Update the Helm charts repository:
      1. Copy the Siebel operator Helm charts from the SCM siebel-operator directory:
        cd /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/
        rm -Rf siebel-operator
        cp -R /home/opc/siebel-cloud-manager/operators/siebel-operator /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/
      2. Update the following in the /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/siebel-operator/manifest/siebel-operator.yaml file:
        • Replace {{ infrastructure.namespace }} with the actual namespace value. For example:
          kind: CompositeController
          	metadata:
          	  name: siebel-controller
          	spec:
          	  generateSelector: true
          	  parentResource:
          	    apiVersion: siebel.metacontroller.io/v1alpha1
          	    resource: monitors
          	  childResources:
          	  - apiVersion: v1
          	    resource: configmaps
          	    updateStrategy:
          	      method: InPlace
          	  hooks:
          	    sync:
          	      webhook:
          	        url: https://siebel-controller.test.svc.cluster.local/sync
          	        timeout: 1800s
          	    customize:
          	      webhook:
                  url: https://siebel-controller.test.svc.cluster.local/customize
            timeout: 1800s
          Note: In this example, test is the namespace in which Siebel CRM is deployed.
        • Update the securityContext section as follows:
          securityContext:
          	        runAsUser: 1000
          	        runAsGroup: 0
                  fsGroup: 1000
      3. Confirm that the oracle.siebel.namespace-envid parameter is set to <env_namespace>-<env-id> in the following files:
        • /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/siebel-operator/kustomization.yaml
        • /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/siebel-operator/manifest/kustomization.yaml
      4. Go to the siebel-operator Helm chart directory:
        cd /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/siebel-operator/manifest
      5. Open kustomization.yaml and add the image details under the values section as follows.
        images:
        - name: siebel-operator-base
          newName: <user_registry_url>/<registry_prefix>/cm/siebel-operator-base
      6. Commit the changes to the Git repository:
        cd /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/siebel-operator/
        git add .
        git commit -m "Siebel operator latest helmchart changes"
        git push
      7. Verify that the working tree is clean:
        git status
        Note: Flux reconciliation does not happen at this time as flux is in suspended mode.
    3. Resume flux kustomization for Siebel operator:
      cd /home/opc/siebel/<ENV_ID>/
      source k8sprofile
      flux resume kustomization siebel-operator -n <env_namepsace>
      flux reconcile source git siebel-repo -n <env_namespace> 
      flux reconcile source git <env_namespace> -n <env_namespace>

      In the example, <env_namespace> is the name of the flux repository.

    4. Verify and confirm the Siebel operator updates, ensure that the value of the field SUSPENDED is False and READY is True:
      flux get kustomization siebel-operator -n <env_namespace>
    5. Confirm that the config map is reloaded:
      kubectl -n <env_namespace> get cm 
      kubectl -n <env_namespace> get cm siebel-controller-xxx
  11. Suspend image update automation in Flux:
    flux suspend image update cm-siebel-image-update1 -n <env_namespace> 
    flux suspend image update cm-siebel-image-update2 -n <env_namespace>
  12. Build and push the new Siebel CRM custom image for the target version.

    You must re-tag the copied Siebel CRM base image to the user’s environment registry and push it to the registry specific to the user’s environment.

    1. Re-tag the copied Siebel CRM base image to the user's environment registry:
      1. Set the target Siebel CRM version:
        sudo podman exec -it cloudmanager bash
        export target_version=<target_siebel_version>
      2. Set the source_base_image variable to the destination registry repository obtained from the mirror:
        export source_base_image="<user_registry_url>/<user_registry_prefix>/cm/siebel:$target_version-full"
      3. Verify that the source_base_image variable is set properly:
        echo $source_base_image
        export target_base_image="<user_registry_url>/<user_registry_namespace>/<env_namespace>/siebel:$target_version-full"
      4. Verify that the target_base_image variable is set properly:
        echo $target_base_image
      5. Re-tag the target Siebel CRM base image to the user's environment registry:
        podman login <user_region>.ocir.io
        podman tag $source_base_image $target_base_image
    2. Log in to the docker registry to push the target Siebel CRM base image to the user's registry:
      podman login <user_region>.ocir.io
      podman push $target_base_image
    3. Sync the local environment ID's Helm charts Git repository with the remote repository for the custom artifacts changes.
      cd /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/
      git clean -d -x -f
      git pull
    4. Copy the siebel-artifacts Helm charts from SCM charts directory:
      cd /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/ 
      rm -Rf siebel-artifacts/
      cp -R /home/opc/siebel-cloud-manager/charts/crm/siebel-artifacts /home/opc/siebel/<ENV_ID>/
      <env_namespace>-helmcharts/
    5. Restore the siebel-artifacts/build folder from the backup:
      cp -R /home/opc/siebel/<ENV_ID>/backup/<env_namespace>-helmcharts/siebel-artifacts/build/ / home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/siebel-artifacts/
    6. Go to the siebel-artifacts directory:
      cd /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/siebel-artifacts
    7. Open Charts.yaml and increment the chart version to roll out the Siebel artifact changes.
    8. Commit the changes to the Git repository:
      git add .
      git commit -m "siebel-artifact latest helmchart changes" 
      git push
    9. Verify that the working tree is clean:
      git status
    10. Replace chown with chmod in dockerfile:
      cd /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/siebel-artifacts/build/
      sed -i 's|COPY --chown=1000:1000 mde/ /siebel/mde|COPY --chmod=775 mde/ /siebel/mde|' dockerfile
    11. Build a new custom image for the Siebel CRM web artifacts and push it to the customer registry:
      cd /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/siebel-artifacts/build/
      export target_image=<registry_url>/<registry_namespace>/<env_namespace>/siebel:$target_version.CUSTOM.1
      podman build --build-arg BASE_IMAGE=${target_base_image} -t ${target_image} ./ -f dockerfile
      podman push $target_image
      exit
  13. (Execute this step only if you are migrating from a Siebel CRM release earlier than 25.10). Apply OpenSSL-based encryption. For more information, see Migrating Siebel CRM Containers to OpenSSL Encryption.
  14. Update Siebel Gateway Helm chart and Helm release.

    You must update the Siebel Gateway Helm chart to the latest version and Helm release to point to the user's container registry. To update the Siebel Gateway Helm chart and Helm release:

    1. Suspend flux Helm release for Siebel Gateway as follows:
      1. Verify the deployment state of Siebel Gateway:
        helm list -n <env_namespace>
      2. Suspend flux Helm release for Siebel Gateway to roll out the latest changes:
        flux suspend helmrelease siebel-gateway -n <env_namespace>
    2. Update Helm charts repository:
      1. Copy the latest Siebel Gateway Helm chart from SCM the charts directory:
        cd /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/
        rm -Rf siebel-gateway 
        cp -R /home/opc/siebel-cloud-manager/charts/crm/siebel-gateway /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/
      2. Go to the siebel-gateway Helm chart directory:
        cd /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/siebel-gateway
      3. Open Charts.yaml and increment the chart version to roll out the Siebel Gateway changes.
      4. Commit the changes to the Git repository:
        git add .
        git commit -m "siebel-gateway latest helmchart changes"
        git push
      5. Verify that the working tree is clean:
        git status
        Note: Flux reconciliation does not happen at this time as flux is in suspended mode.
    3. Update the SCM repository with the Siebel Gateway changes:
      1. Go to the siebel directory in the SCM repository:
        cd /home/opc/siebel/<ENV_ID>/<env_namespace>-cloud-manager/flux-crm/apps/base/siebel/
        Note: You must verify that the image tags defined in each Helm release YAML file under the <env_namespace>-cloud-manager> repository match the image tag IDs listed in the /home/opc/siebel-cloud-manager/scripts/cmapp/yaml/siebel_images.yaml file. Apply this verification to all Helm release YAML updates in each of the subsequent steps.
      2. Add the custom image details under the values section in the siebel-gateway.yaml file as follows:
        values:
            image:
              siebel:
                imagePullPolicy: IfNotPresent
                registry: <user_registry_url> 
                repository: <registry_prefix/object_namespace>/<env_namespace>/siebel
                tag: <target_image built in step 8.d, for example 25.5.CUSTOM.1> 
        busybox:
            registry: <user_registry_url> 
            repository: <registry_prefix/object_namespace>/<env_namespace>/cm/base-builder
            tag: <tag_id from siebel_images.yaml>
            imagePullPolicy: Always
        logging:
            image:
              registry: <user_registry_url>
              repository: <registry_prefix/object_namespace>/<env_namespace>/cm/fluentd-collector
              tag: <tag_id from siebel_images.yaml>
              imagePullPolicy: Always
      3. Commit the changes to the repository:
        git add .
        git commit -m "Updating siebel-gateway helmrelease container images repository to user's container registry"
        git push
    4. Resume flux Helm release for Siebel Gateway:
      cd /home/opc/siebel/<ENV_ID>/
      source k8sprofile
      flux resume helmrelease siebel-gateway -n <env_namepsace>
      flux reconcile source git siebel-repo -n <env_namespace> 
      flux reconcile source git <env_namespace> -n <env_namespace>

      In the example, <env_namespace> is the name of the flux repository.

    5. Verify and confirm the Siebel Gateway updates, ensure that the value of the field SUSPENDED is False and READY is True:
      flux get kustomization apps -n <env_namespace>
      flux get helmrelease -n <env_namespace>
    6. Ensure that APP VERSION points to the latest version and is incremented from previous version:
      helm list -n <env_namespace>
  15. Update Siebel Config Helm chart and Helm release.

    You must update the siebel-config Helm chart to the latest version. To update the siebel-config Helm chart:

    1. Suspend flux Helm release for siebel-config as follows:
      1. Verify the deployment state of siebel-config:
        helm list -n <env_namespace>
      2. Suspend Helm release to rollout siebel-config changes in SCM and Helm repositories:
        flux suspend helmrelease siebel-config -n <env_namespace>
    2. Update the Helm chart repository:
      1. Copy the siebel-config Helm chart from the SCM charts directory:
        cd /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/siebel-config
        rm -Rf templates/ values.yaml Chart.yaml
        cp -R /home/opc/siebel-cloud-manager/charts/crm/siebel-config/templates/ /home/opc/siebel-cloud-manager/charts/crm/siebel-config/values.yaml /home/opc/siebel-cloud-manager/charts/crm/siebel-config/Chart.yaml /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/siebel-config/
      2. Go to the Helm chart siebel-config directory:
        cd /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/siebel-config
      3. Open Chart.yaml and increment the chart version to roll out the infrastructure changes.
      4. Commit the changes to the Git repository:
        git add .
        git commit -m "siebel-configlatest helmchart changes"
        git push
      5. Verify that the working tree is clean:
        git status
        Note: Flux reconciliation does not happen at this time as flux is in suspended mode.
    3. Update the Helm release:
      1. Go to the siebel directory:
        cd /home/opc/siebel/<ENV_ID>/<Cloud manager repository name>/flux-crm/apps/base/siebel/
      2. Update the value of the busybox parameter in siebel-config.yaml in SCM Git repository as follows:
        values:
        image:
        busybox:
            registry: <user_registry_url> 
            repository: <registry_prefix/object_namespace>/<env_namespace>/cm/base-builder
            tag: <tag_id from siebel_images.yaml>
            imagePullPolicy: Always
        dbutils:
            registry: <user_registry_url> 
            repository: <registry_prefix/object_namespace>/<env_namespace>/cm/dbutils
            tag: <tag_id from siebel_images.yaml>
            imagePullPolicy: Always
      3. Commit the changes to the Git repository:
        git add .
        git commit -m "Updating the image tags"
        git push
    4. Resume flux Helm release for siebel-config:
      cd /home/opc/siebel/<ENV_ID>/
      source k8sprofile
      flux resume helmrelease siebel-config -n <env_namepsace>
      flux reconcile source git siebel-repo -n <env_namespace> 
      flux reconcile source git <env_namespace> -n <env_namespace>
      flux reconcile -n <env_namepsace> kustomization apps

      In the example, <env_namespace> is the name of the flux repository.

    5. Verify and confirm the siebel-config updates, ensure that the value of the field SUSPENDED is False and READY is True for the following commands:
      flux get kustomization apps -n <env_namespace>
      flux get helmrelease -n <env_namespace>
    6. Ensure that APP VERSION points to the latest version and is incremented from previous version:
      helm list -n <env_namespace>
  16. Update Siebel Helm chart and Helm release.

    You must update the siebel Helm chart to the latest version and Helm release to point to the user's container registry. To update the siebel Helm chart and Helm release, do the following:

    1. Suspend flux Helm release for siebel as follows:
      1. Verify the deployment state of the siebel:
        helm list -n <env_namespace>
      2. Suspend Helm release for siebel to roll out the latest changes:
        flux suspend helmrelease siebel -n <env_namespace>
    2. Update the Helm chart repository:
      1. Copy the siebel Helm charts from SCM charts directory:
        cd /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/
        rm -Rf siebel
        cp -R /home/opc/siebel-cloud-manager/charts/crm/siebel /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/
      2. Go to the siebel Helm chart directory:
        cd /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/siebel
      3. Open Chart.yaml and increment the chart version to roll out the Siebel changes.
      4. Commit the changes to the Git repository:
        git add .
        git commit -m "siebel latest helmchart changes"
        git push
      5. Verify that the working tree is clean:
        git status
        Note: Flux reconciliation does not happen at this time as flux is in suspended mode.
    3. Update the SCM repository with the siebel changes
      1. Go to the siebel directory:
        cd /home/opc/siebel/<ENV_ID>/<env_namespace>-cloud-manager/flux-crm/apps/base/siebel/
      2. Update the siebel.yaml file as follows:
        values:
          image:
             siebel:
                  imagePullPolicy: IfNotPresent
                   registry: <user_registry_url> 
                   repository: <registry_prefix/object_namespace>/<env_namespace>/siebel
                   tag: <target_image built in step 8.d, for example 25.5.CUSTOM.1> 
             busybox:
                   registry: <user_registry_url> 
                   repository: <registry_prefix/object_namespace>/<env_namespace>/cm/base-builder
                   tag: <tag_id from siebel_images.yaml>
                   imagePullPolicy: Always
             dbutils:
                   registry: <user_registry_url> 
                   repository: <registry_prefix/object_namespace>/<env_namespace>/cm/dbutils
                   tag: <tag_id from siebel_images.yaml>
                   imagePullPolicy: Always
        logging:
            registry: <user_registry_url>
            repository: <registry_prefix/object_namespace>/<env_namespace>/cm/fluentd-collector
            tag: <tag_id from siebel_images.yaml>
            imagePullPolicy: Always
      3. Commit the changes to the Git repository:
        git add .
        git commit -m "Updating siebel helmrelease container images repo to my registry" 
        git push
    4. Resume flux Helm release for siebel:
      cd /home/opc/siebel/<ENV_ID>/
      source k8sprofile
      flux resume helmrelease siebel -n <env_namepsace>
      flux reconcile source git siebel-repo -n <env_namespace> 
      flux reconcile source git <env_namespace> -n <env_namespace>
      flux reconcile -n <env_namepsace> kustomization apps

      In the example, <env_namespace> is the name of the flux repository.

    5. Verify and confirm the Siebel updates, ensure that the value of the field SUSPENDED is False and READY is True for the following commands:
      flux get kustomization apps -n <env_namespace>
      flux get helmrelease siebel -n <env_namespace>
    6. Ensure that APP VERSION points to the latest version and is incremented from previous version:
      helm list -n <env_namespace>
  17. Update Siebel artifacts Helm chart.

    You must update the Siebel artifacts Helm chart to the latest version and Helm release to point to the user's container registry. To update the Siebel artifacts Helm chart and Helm release:

    1. Suspend flux Helm release for siebel-artifacts as follows:
      1. Verify the deployment state of the siebel-artifacts:
        helm list -n <env_namespace>
      2. Suspend Helm release for siebel-artifacts to roll out the latest changes:
        flux suspend helmrelease siebel-artifacts -n <env_namespace>
    2. Update the Helm chart repository:
      1. Copy the siebel-artifacts Helm charts from SCM charts directory:
        cd /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/
        rm -Rf siebel-artifacts/ 
        cp -R /home/opc/siebel-cloud-manager/charts/crm/siebel-artifacts /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/
      2. Replace chown with chmod in dockerfile:
        cd /home/opc/siebel/<ENV_ID>/<env_namespace>- helmcharts/siebel-artifacts/build/
        sed -i 's|COPY --chown=1000:1000 mde/ /siebel/mde|COPY --chmod=775 mde/ /siebel/mde|' dockerfile
      3. Restore the siebel-artifacts/build folder from the backup:
        cp -R /home/opc/siebel/<ENV_ID>/backup/<env_namespace>-helmcharts/siebel-artifacts/build/ /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/siebel-artifacts/
      4. Go to the siebel-artifacts directory:
        cd /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/siebel-artifacts
      5. Open Chart.yaml and increment the chart version to roll out the siebel-artifacts changes.
      6. Commit the changes to the Git repository:
        git add .
        git commit -m “Siebel-artifacts latest helmchart changes"
        git push
      7. Verify that the working tree is clean:
        git status
        Note: Flux reconciliation does not happen at this time as flux is in suspended mode.
    3. Update the SCM repository with the siebel-artifacts changes:
      1. Go to the siebel directory:
        cd /home/opc/siebel/<ENV_ID>/<env_namespace>-cloud-manager/flux-crm/apps/base/siebel
      2. Update the image details in the siebel-artifacts.yaml file as follows:
        values:
           image:
              siebel:
                    base_image: <user_registry_url>/<registry_prefix/object_namespace>/cm/siebel:$target_version-full
                    imagePullPolicy: IfNotPresent
                    registry: <user_registry_url> 
                    repository: <registry_prefix/object_namespace>/<env_namespace>/siebel
                    tag: <target_image built in step 8.d, for example 25.5.CUSTOM.1> 
              busybox:
                    registry: <user_registry_url> 
                    repository: <registry_prefix/object_namespace>/<env_namespace>/cm/base-builder
                    tag: <tag_id from siebel_images.yaml>
                    imagePullPolicy: Always
              dbutils:
                    registry: <user_registry_url> 
                    repository: <registry_prefix/object_namespace>/<env_namespace>/cm/dbutils
                    tag: <tag_id from siebel_images.yaml>
                    imagePullPolicy: Always
      3. Set imageBuilder.privileged based on the target cluster type:
        	spec:
        	  values:
        	    imageBuilder:
        	      privileged: <false_for_OCNE_and_OpenShift_true_for_other_cluster_types>

        In the above payload section, set the value of imageBuilder.privileged to:

        • false for OCNE and OpenShift clusters.
        • true for other supported Kubernetes cluster types that require privileged image-builder execution.
      4. Commit the changes to the Git repository:
        git add .
        git commit -m "Updating siebel-artifacts helmrelease container images repo to user's container registry"
        git push
    4. Update version in Chart.yaml as follows:
      1. Go to the siebel-artifacts directory:
        cd /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/siebel-artifacts
      2. Update the Chart.yaml file as follows:
        name: siebel-artifacts
        version: 0.1.1
        appVersion: "25.5"
      3. Commit the changes to the Git repository:
        git add .
        git commit -m "Updating new siebel version"
        git push
    5. Resume flux Helm release for siebel-artifacts:
      1. Resume siebel-artifacts helmrelease:
        cd /home/opc/siebel/<ENV_ID>/
        source k8sprofile
        flux resume helmrelease siebel-artifacts -n <env_namepsace>
      2. Trigger manual reconciliation:
        flux resume image update cm-siebel-image-update1 -n <env_namespace>
        flux resume image update cm-siebel-image-update2 -n <env_namespace>
        flux reconcile source git siebel-repo -n <env_namespace> 
        flux reconcile source git <env_namespace> -n <env_namespace>
        flux reconcile kustomization apps -n <env_namepsace> 

        In the example, <env_namespace> is the name of the flux repository.

    6. Verify and confirm the siebel-artifacts updates, ensure that the value of the field SUSPENDED is False and READY is True for the following commands:
      flux get kustomization apps -n <env_namespace>
      flux get helmrelease siebel-artifacts -n <env_namespace>
    7. Ensure that APP VERSION points to the latest version:
      helm list -n <env_namespace>
  18. Update Siebel observability Helm chart and Helm release.

    You must update the Siebel observability Helm chart to the latest version. To update the Siebel-observability Helm chart, do the following:

    1. Verify the deployment state of monitoring Helm charts (kube-state-metrics, node-exporter, prometheus, prometheus-adapter, prometheus-alertmanager, and oracle-db-monitoring):
      helm list -n <env_namespace>
      Note:
      • prometheus-alertmanager is deployed only if send_alerts is set to true.
      • oracle-db-monitoring is deployed only if enable_oracle_db_monitoring is set to true.
    2. Suspend flux Helm release for Siebel observability to roll out the latest changes as follows:
      flux suspend helmrelease kube-state-metrics -n <env_namespace>
      flux suspend helmrelease node-exporter -n <env_namespace>
      flux suspend helmrelease prometheus -n <env_namespace>
      flux suspend helmrelease prometheus-adapter -n <env_namespace>
      flux suspend helmrelease prometheus-alertmanager -n <env_namespace>
      flux suspend helmrelease oracle-db-monitoring -n <env_namespace>
    3. Update the Helm chart repository:
      Note: If you have made custom ConfigMap changes for any observability-related chart, back up the changes before replacing the Helm chart content. After you copy the updated charts, restore the custom changes as required.
      1. Copy the Siebel observability Helm charts from the SCM charts directory:
        cd /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/
        rm -Rf node-exporter/ kube-state-metrics/prometheus prometheus-adapter/prometheus-alert-manager/oracle-db-monitoring/
        cp -R /home/opc/siebel-cloud-manager/charts/siebel_observability/* /home/opc/siebel/<ENV_ID>/<env_namespace>
      2. Increment the chart version in the Chart.yaml file to roll out the changes, in the following directories:
        /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/kube-state-metrics/
        /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/node-exporter/
        /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/prometheus/
        /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/prometheus-adapter/
        /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/prometheus-alert-manager/
        /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/oracle-db-monitoring/
      3. Commit the changes to the Git repository:
        git add .
        git commit -m " infrastructure latest helmchart changes"
        git push
      4. Verify that the working tree is clean:
        git status
        Note: Flux reconciliation does not happen at this time as flux is in suspended mode.
    4. Update the Helm release:
      1. Go to the siebel_observability directory:
        cd <git_url>/root/<Cloud manager repository name>/-/blob/master/ flux-crm/apps/base/siebel_observability/
      2. Update the following in prometheus.yaml in SCM Git repository
        • The busybox section as follows:
          values:
            image:
               busybox:
                     registry: <user_registry_url> 
                     repository: <registry_prefix/object_namespace>/<env_namespace>/cm/base-builder
                     tag: <tag_id from siebel_images.yaml>
                     imagePullPolicy: Always
        • The prometheus_oci_adapter section as follows:
          values:
              prometheus_oci_adapter:
              image:
                registry: <user_registry_url>
                repository: <registry_prefix/object_namespace>/<env_namespace>/cm/prometheus-oci-adapter
                tag: <tag_id from siebel_images.yaml>
                imagePullPolicy: Always
        • The siebel_metric_exporter section as follows:
          values:
              siebel_metric_exporter: 
               image:
                imagePullPolicy: Always
                registry: <user_registry_url>
                repository: <registry_prefix/object_namespace>/<env_namespace>/cm/siebel
                tag: <target_version>-full    # Example: tag: 26.6-full
      3. Commit the changes to the Git repository:
        git add .
        git commit -m "Updating the image tags"
        git push
    5. Update the ownership of the Prometheus local storage directory on the worker node as follows:
      chown -R 1000:1000 <prometheus_local_storage_path>

      In the above command, <prometheus_local_storage_path> is the local storage path used by the Prometheus persistent volume in the target environment.

    6. Resume flux Helm release for Siebel observability:
      flux resume helmrelease kube-state-metrics -n <env_namespace>
      flux resume helmrelease node-exporter -n <env_namespace>
      flux resume helmrelease prometheus -n <env_namespace>
      flux resume helmrelease prometheus-adapter -n <env_namespace>
      flux resume helmrelease prometheus-alertmanager -n <env_namespace> #this can be given only if send_alerts = true in payload.
      flux resume helmrelease oracle-db-monitoring -n <env_namespace> # Run this command only if enable_oracle_db_monitoring is set to true in the payload.
      flux reconcile source git siebel-repo -n <env_namespace> 
      flux reconcile source git <env_namespace> -n <env_namespace>
      flux reconcile -n <env_namepsace> kustomization apps

      In the example, <env_namespace> is the name of the flux repository.

    7. Verify and confirm the Siebel observability updates, ensure that the value of the field SUSPENDED is False and READY is True for kube-state-metrics, node-exporter, prometheus, prometheus-adapter, prometheus-alertmanager, and oracle-db-monitoring:
      flux get kustomization apps -n <env_namespace>
      flux get helmrelease -n <env_namespace>
    8. Ensure that APP VERSION points to the latest version and is incremented from previous version for kube-state-metrics, node-exporter, prometheus, prometheus-adapter, prometheus-alertmanager, and oracle-db-monitoring:
      helm list -n <env_namespace>
  19. Update Siebel logging Helm chart and Helm release.

    You must update Siebel logging Helm chart to the latest version. To update the Siebel logging Helm chart:

    1. Suspend flux Helm release for Siebel logging as follows:
      1. Verify the deployment state of Siebel logging Helm charts (oracle-opensearch, oracle-opensearch-dashboards, and siebel-logging):
        helm list -n <env_namespace>
      2. Suspend flux Helm release to rollout Siebel logging changes in Helm repositories:
        flux suspend helmrelease oracle-opensearch -n <env_namespace>
        flux suspend helmrelease oracle-opensearch-dashboards -n <env_namespace>
        flux suspend helmrelease siebel-logging  -n <env_namespace>
    2. Update the Helm chart repository:
      Note: If you have made custom ConfigMap changes for any logging-related chart, back up the changes before replacing the Helm chart content. After you copy the updated charts, restore the custom changes as required.
      1. Copy the Siebel logging Helm charts from the SCM charts directory:
        cd /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/
        rm -Rf siebel-logging/ oracle-opensearch/ oracle-opensearch-dashboards/
        cp -R /home/opc/siebel-cloud-manager/charts/siebel-logging/ /home/opc/siebel-cloud-manager/charts/oracle-opensearch/ /home/opc/siebel-cloud-manager/charts/oracle-opensearch-dashboards/ /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/
      2. Increment the chart version, to roll out the changes, in the Chart.yaml file in the following directories:
        /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/siebel-logging/
        /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/oracle-opensearch/
        /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/oracle-opensearch-dashboards/
      3. Commit the changes to the Git repository:
        cd /home/opc/siebel/<ENV_ID>/<env_namespace>-helmcharts/
        git add .
        git commit -m " siebel-logging latest helmchart changes"
        git push
      4. Verify that the working tree is clean:
        git status
        Note: Flux reconciliation does not happen at this time as flux is in suspended mode.
    3. Update the Helm release:
      1. Go to the siebel-logging directory:
        cd <git_url>/root/<Cloud manager repository name>/-/blob/master/ flux-crm/apps/base/siebel-logging/
      2. Update the value of the busybox parameter in oracle-opensearch.yaml in SCM Git repository as follows:
        values:
          image:
             busybox:
                   registry: <user_registry_url> 
                   repository: <registry_prefix/object_namespace>/<env_namespace>/cm/base-builder
                   tag: <tag_id from siebel_images.yaml>
                   imagePullPolicy: Always
             opensearch:
                   registry: <user_registry_url>
                   repository: <registry_prefix/object_namespace>/<env_namespace>/cm/oracle-opensearch
                   tag: <tag_id from siebel_images.yaml>
                   imagePullPolicy: Always
      3. Update the logging and logCollectorImage sections in siebel-logging.yaml in SCM Git repository as follows:
        values:
        	  logging:
        	    image:
        	      imagePullPolicy: Always
        	      registry: <user_registry_url>
        	      repository: <registry_prefix/object_namespace>/<env_namespace>/cm/log-aggregator
        	      tag: <tag_id from siebel_images.yaml>
        	    logCollectorImage:
        	      registry: <user_registry_url>
        	      repository: <registry_prefix/object_namespace>/<env_namespace>/cm/fluentd-collector
        	      tag: <tag_id from siebel_images.yaml>
      4. Commit the changes to the Git repository:
        git add .
        git commit -m "Updating the image tags parameters"
        git push
    4. Resume flux Helm release for Siebel logging as follows:
      1. Go to the environment directory and source the Kubernetes profile:
        cd /home/opc/siebel/<ENV_ID>/ 
        source k8sprofile
      2. Confirm that the OpenSearch pods and PVCs are available before updating the OpenSearch controller:
        oc -n <env_namespace> get pods | grep opensearch
        oc -n <env_namespace> get pvc | grep opensearch
      3. Suspend the oracle-opensearch Helm release to prevent reconciliation retries during the StatefulSet update:
        oc -n <env_namespace> patch helmrelease oracle-opensearch --type=merge -p '{"spec":{"suspend":true}}'
      4. Save the current OpenSearch StatefulSet manifest and Helm release history for rollback purposes:
        oc -n <env_namespace> get sts opensearch-cluster-master -o yaml > /tmp/opensearch-sts-before.yaml
        oc -n <env_namespace> get pvc | grep opensearch
        helm history oracle-opensearch -n <env_namespace> --max 20
      5. Delete the OpenSearch StatefulSet controller and orphan the existing pods:
        oc -n <env_namespace> delete sts opensearch-cluster-master --cascade=orphan
        Note: You must not delete the OpenSearch pods, PVCs, or PVs.
      6. Resume and force reconcile oracle-opensearch in Flux to apply the updated chart:
        oc -n <env_namespace> patch helmrelease oracle-opensearch --type=merge -p '{"spec":{"suspend":false}}'
        flux reconcile helmrelease oracle-opensearch -n <env_namespace> --with-source --reset –force
      7. Verify that the OpenSearch StatefulSet is recreated or adopted successfully:
        oc -n <env_namespace> get sts opensearch-cluster-master
        oc -n <env_namespace> get pods | grep opensearch
        oc -n <env_namespace> get helmrelease oracle-opensearch
        helm history oracle-opensearch -n <env_namespace>
      8. After oracle-opensearch shows Ready=True, reconcile OpenSearch Dashboards as follows
        flux reconcile helmrelease oracle-opensearch-dashboards -n <env_namespace> --with-source --reset --force
      9. Reconcile the Git source and application kustomization:
        flux reconcile source git siebel-repo -n <env_namespace>
        flux reconcile -n <env_namespace> kustomization apps

        In the example, <env_namespace> is the name of the flux repository.

    5. Verify and confirm the Siebel logging updates, ensure that the value of the field SUSPENDED is False and READY is True for oracle-opensearch, oracle-opensearch-dashboard, and siebel-logging:
      flux get kustomization apps -n <env_namespace>
      flux get helmrelease -n <env_namespace>
    6. Ensure that APP VERSION points to the latest version and is incremented from previous version for oracle-opensearch, oracle-opensearch-dashboard, and siebel-logging:
      helm list -n <env_namespace>
  20. Check the status of the flux components after upgrade:
    flux get all -n <env_namespace>
  21. Watch out for the successful completion of postinstalldb Kubernetes job.

    For more information, see Reviewing the PostInstallDBSetup Execution Status.

    • The new image updates will trigger postinstalldb update through flux-crm sync up.
    • Wait for the Kubernetes job completion.
    • Manually verify the postinstalldb job reports and exit code from the logs.
    • In case of errors, take corrective actions and rerun postinstalldb Kubernetes job by updating the version in chart.yaml file as required for an incremental run.

    For more information, see Making Incremental Changes.

    sudo podman exec -it cloudmanager bash source /home/opc/siebel/<env_id>/k8sprofile kubectl -n <env_namespace> get pods
  22. Configuration instructions specific to a release.
    • For any configuration instructions specific to a release, refer to Siebel Upgrade Guide and Siebel Release Notes.
    • Migrate the persistent volume content. Refer to the "Migrating Persistent Volume Content" section in the Deploying Siebel CRM Containers Guide.
  23. Upgrading the repository.

    During the upgrade process if any new features require repository upgrade, then upgrade the repository. Refer to Using Siebel Tools Guide.

  24. Troubleshooting.
    • In any of the above steps during the Siebel new image rollout and flux sync-up, verify the Helm Release deployment status.
    • If HelmRelease is in failed state, rollback is required and increment the version in Chart.yaml for the helm upgrade.

    To verify the helm release status:

    kubectl get helmrelease -n <env_namespace> 
    Note: In the command response, the value in the READY column should be "True" for all the helm releases

    To verify the deployment status of helm charts:

    helm ls -n <env_namespace>
    Note: In the command response, the value in the STATUS column should be "deployed" for all the helm charts.
  25. Roll back the Helm Charts

    In case of any failures noticed in the above two commands, find out the stable helmchart revision and do a rollback of helm charts by running the following commands:

    1. To find out the previous stable REVISION deployed:
      helm history siebel -n <env_namespace>
    2. Rollback to the previous stable REVISION identified by the previous command, that is, helm history:
      helm rollback siebel -n <env_namespace> 1

      For example:

      W0505 10:56:23.450209 3296 warnings.go:70] would violate PodSecurity "restricted:latest": allowPrivilegeEscalation != false (containers "persist-folders", "sai" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (containers "persist-folders", "sai" must set securityContext.capabilities.drop=["ALL"]), runAsNonRoot != true (pod or containers "persist-folders", "sai" must set securityContext.runAsNonRoot=true), seccompProfile (pod or containers "persist-folders", "sai" must set securityContext.seccompProfile.type to "RuntimeDefault" or "Localhost")
      W0505 10:56:23.511704 3296 warnings.go:70] would violate PodSecurity "restricted:latest": allowPrivilegeEscalation != false (containers "persist-fix", "ses" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities
      (containers "persist-fix", "ses" must set securityContext.capabilities.drop=["ALL"]), runAsNonRoot != true (pod or containers "persist-fix", "ses" must set securityContext.runAsNonRoot=true), seccompProfile (pod or containers "persist-fix", "ses" must set securityContext.seccompProfile.type to "RuntimeDefault" or "Localhost")
      Rollback was a success! Happy Helming!
      
  26. Verify the application URLs once the environment comes up.