Skip to main content
Skip table of contents

Upgrade guide CX-4.5.1 to CX-4.5.2

Before upgrading, ensure that the system is idle, i.e; all agents are logged out from the AgentDesk.
Make sure the system is idle for 30 minutes, to sync the reporting data.

  1. Clone the CX repository on the target server

    CODE
    # Create CX-4.5.2 directory from root
    mkdir CX-4.5.2
    # Navigate to CX-4.5.2
    cd CX-4.5.2
    # Clone the CX-4.5.2 branch of cim-solution repository
    git clone -b CX-4.5.2 https://efcx:RecRpsuH34yqp56YRFUb@gitlab.expertflow.com/cim/cim-solution.git
    # Navigate to root(previous) directory
    cd ..
  2. Stop all core components.

    CODE
    # Navigate to the following folder of the existing release i.e. CX-4.5.1
    cd cim-solution/kubernetes
    kubectl delete -f cim/Deployments
    kubectl delete -f cim/StatefulSet/ef-amq-statefulset.yaml
    
    
    # Stop reporting connector
    kubectl delete -f pre-deployment/reportingConnector/ef-reporting-connector-cron.yaml -n expertflow
    # delete configmap for reporting connector 
    kubectl -n expertflow delete configmap ef-reporting-connector-conf
    
    # Stop team-announcement cron job
    kubectl delete -f pre-deployment/team-announcement/ef-team-announcement-cronjob.yaml -n expertflow
  3. Enable TLS and Auth using the following guide TLS Enablement for Stateful Components

  4. Update the AMQ deployment.

    CODE
    1) Open cim/StatefulSet/ef-amq-statefulset.yaml file.
    2) Update AMQ Tag 
      gitimages.expertflow.com/general/activemq-k8s:5.17.1-alpine-zulu-K8s-4.5.2-4.5.2                                                
    3) Add following new environment variables
               - name: REDIS_CLIENT_CERT
                 value: "/redis/tls.crt"
               - name: REDIS_CLIENT_KEY
                 value: "/redis/tls.key"
               - name: REDIS_CA_CERT
                 value : "/redis/ca.crt"
               - name: TRUST_STORE_PASSWORD
                 value: "Expertflow123"
               - name: KEY_STORE_PASSWORD
                 value: "Expertflow123"
    4) Update following exiting environment variables
               - name: REDIS_SSL_ENABLED
                 value: "true"
               - name: REDIS_MAX_ACTIVE
                 value: "200"
               - name: REDIS_MAX_IDLE
                 value: "200"
               - name: REDIS_MIN_IDLE
                 value: "100" 
    5) Add following Volumes "redis-crt"
    spec:
      replicas: 1
      serviceName: ef-amq-svc
      selector:
        matchLabels:
          app: ef-amq
      template:
        metadata:
          labels:
            app: ef-amq
            ef: expertflow         
        spec:
          volumes:
          # Add following lines
          - name: redis-crt
            secret:
              secretName: redis-crt                         
    6) Add following VolumeMounts "redis-crt"
    
             env:
               - name: ACTIVEMQ_OPTS_MEMORY
                 value: "-Xms512M -Xmx4G"
               - name: MAX_CONNECTIONS
                 value: "5000"
             volumeMounts:
              - name: activemq-data
                mountPath: "/opt/activemq/data"
    # Add following lines            
              - name: redis-crt
                mountPath: "/redis"
    7) Apply ActiveMQ deployment 
      kubectl apply -f cim/StatefulSet/ef-amq-statefulset.yaml
                
  5. Update the ConfigMaps

    CODE
    # Update ef-connection-env-configmap.yaml
      1) kubectl delete -f cim/ConfigMaps/ef-connection-env-configmap.yaml
      2) Open cim/ConfigMaps/ef-connection-env-configmap.yaml
      3) Add following new environment variables
        MONGODB_CLIENT_CERT: /mongo/client-pem
    	MONGODB_CA_CERT: /mongo/mongodb-ca-cert
    	TRUST_STORE_PASSWORD: "Expertflow123"
    	KEY_STORE_PASSWORD: "Expertflow123"
    	REDIS_CLIENT_CERT: /redis/tls.crt
    	REDIS_CLIENT_KEY: /redis/tls.key
    	REDIS_CA_CERT: /redis/ca.crt
      4) Update following existing environment variables
        From MONGODB_ENABLE_SSL: "false" to MONGODB_ENABLE_SSL: "true"
        From REDIS_SSL_ENABLED: "false" to REDIS_SSL_ENABLED: "true"
        From MONGO_HOST: mongodb://mongo-mongodb.ef-external.svc.cluster.local to MONGO_HOST: mongo-mongodb.ef-external.svc.cluster.local
        From MONGODB_PASSWORD: da17deWHI0 to MONGODB_PASSWORD: Expertflow123
    # Update  ef-realtime-reporting-configmap.yaml
      1) kubectl delete -f cim/ConfigMaps/ef-realtime-reporting-configmap.yaml
      2) Open cim/ConfigMaps/ef-realtime-reporting-configmap.yaml
      3) Update following existing environment variables
         DATASOURCE_USERNAME: elonmusk
         DATASOURCE_PASSWORD: 68i3nj7t
    
    
    # Update ef-license-manager-configmap.yaml
      1) kubectl delete -f cim/ConfigMaps/ef-license-manager-configmap.yaml
      2) Open cim/ConfigMaps/ef-license-manager-configmap.yaml
      3) Update following existing environment variables
        From jdbc:postgresql://ef-postgresql.ef-external.svc.cluster.local:5432/licenseManager 
        to jdbc:postgresql://ef-postgresql.ef-external.svc.cluster.local:5432/licenseManager?sslmode=verify-ca&sslrootcert=/postgresql/ca.crt
    
    # Update ef-scheduled-activities-configmap.yaml
      1) kubectl delete -f cim/ConfigMaps/ef-scheduled-activities-configmap.yaml
      2) Open cim/ConfigMaps/ef-scheduled-activities-configmap.yaml
      3) Delete following environment variables
        COUNT_OF_WEBHOOK_NOTIFICATION_RETRY_ATTEMPTS
        WEBHOOK_NOTIFICATION_RETRY_TIMEOUT_IN_SECONDS 
      4) Add following new environment variables
        THIRD_PARTY_COMPONENTS_NEXT_RETRY_TIMEOUT_DURATION_IN_SECONDS : "600"
        THIRD_PARTY_COMPONENTS_RETRY_COUNT_ATTEMPTS_LIMIT : "5"  
        
    # Update ef-unified-agent-configmap.yaml
      1) kubectl delete -f cim/ConfigMaps/ef-unified-agent-configmap.yaml
      2) Open cim/ConfigMaps/ef-unified-agent-configmap.yaml
      3) Add following new environment variable 
        SIP_MONITORING_DN: "*44"
      4) Copy Agent desk translation files 
      5) From CX-4.5.2/cim-solution/kubernetes/pre-deployment/app-translations/unified-agent/i18n 
         To pre-deployment/app-translations/unified-agent
      6) Delete and Create the ConfigMap
        kubectl delete cm ef-app-translations-cm -n expertflow
        kubectl -n expertflow create configmap ef-app-translations-cm --from-file=pre-deployment/app-translations/unified-agent/i18n/  
      7) Copy Canned messages 
        From CX-4.5.2/cim-solution/kubernetes/pre-deployment/app-translations/unified-agent/canned-messages/canned-messages.json  
        To pre-deployment/app-translations/unified-agent/canned-messages
      8) Delete and Create the ConfigMap
        kubectl delete cm ef-canned-messages-cm -n expertflow
        kubectl -n expertflow create configmap ef-canned-messages-cm --from-file=pre-deployment/app-translations/unified-agent/canned-messages  
         
        
  6. Update following core deployments.

    CODE
    
    #sample for adding volume
    spec:
      replicas: 1
      selector:
        matchLabels:
          ef.service: ef-ccm
      strategy: {}
      template:
        metadata:
          labels:
            ef.service: ef-ccm
            ef: expertflow
        spec:
        #add the volume here
          volumes:
            - name: mongo-mongodb-ca
              secret:
                secretName: mongo-mongodb-ca
            - name: redis-crt
              secret:
                secretName: redis-crt
    
    #sample for adding volume mount
              image: gitimages.expertflow.com/cim/customer-channel-manager:4.5.1_f-CIM-14005
              name: ef-ccm
              volumeMounts:
                - name: mongo-mongodb-ca
                  mountPath: /mongo
                - name: redis-crt
                  mountPath: /redis
    
    
    
    
    
    # Add following new environment variables, Volumes and VolumeMounts in below mentioned core components deployment file
                - name: MONGODB_CLIENT_CERT
                  valueFrom:
                    configMapKeyRef:
                      key: MONGODB_CLIENT_CERT
                      name: ef-connection-env-cm
                - name: MONGODB_CA_CERT
                  valueFrom:
                    configMapKeyRef:
                      key: MONGODB_CA_CERT
                      name: ef-connection-env-cm
                - name: TRUST_STORE_PASSWORD
                  valueFrom:
                    configMapKeyRef:
                      key: TRUST_STORE_PASSWORD
                      name: ef-connection-env-cm
                - name: KEY_STORE_PASSWORD
                  valueFrom:
                    configMapKeyRef:
                      key: KEY_STORE_PASSWORD
                      name: ef-connection-env-cm
                - name: REDIS_CA_CERT
                  valueFrom:
                    configMapKeyRef:
                      key: REDIS_CA_CERT
                      name: ef-connection-env-cm
                - name: REDIS_CLIENT_CERT
                  valueFrom:
                    configMapKeyRef:
                      key: REDIS_CLIENT_CERT
                      name: ef-connection-env-cm
                - name: REDIS_CLIENT_KEY
                  valueFrom:
                    configMapKeyRef:
                      key: REDIS_CLIENT_KEY
                      name: ef-connection-env-cm                    
       volumes:
            - name: mongo-mongodb-ca
              secret:
                secretName: mongo-mongodb-ca
            - name: redis-crt
              secret:
                secretName: redis-crt
       volumeMounts:
                - name: mongo-mongodb-ca
                  mountPath: /mongo
                - name: redis-crt
                  mountPath: /redis
    # core components list to add above variables, volumes and volumeMounts
      Customer Channel Manager
      Conversation Manager (update only volumes and volumeMounts)
      Conversation-controller (only add redis volumeMount)
      Routing Engine
      Bot Framework
      State Events Logger
      Campaign Scheduler
      Realtime Reports Manager
      Historical Reports Manager
      Agent manager
      Cim backend
      Team announcement
      Unified admin   
      
    # Update ef-licence-manager-deployment.yaml
      1) Open cim/Deployments/ef-licence-manager-deployment.yaml
      2) Update tag: gitimages.expertflow.com/license-mangement/license-manager:4.5.2
      3) Update Volumes
          volumes:
            - name: ef-postgresql-crt
              secret:
                secretName: ef-postgresql-crt
      4) Update VolumeMounts 
          volumeMounts:
            - name: ef-postgresql-crt
              mountPath: /postgresql            
                            
    # Update channel-manager tag
      1) Open cim/Deployments/ef-ccm-deployment.yaml file.
      2) Update tag gitimages.expertflow.com/cim/customer-channel-manager:4.5.2    
    # Update Conversation Manager Deployment
      1) Open cim/Deployments/ef-conversation-manager-deployment.yaml 
      2) Update following tags in conversation-manager deployment
        gitimages.expertflow.com/cim/conversation-controller:4.5.2
        gitimages.expertflow.com/cim/conversation-manager:4.5.2
        
    # Update routing-engine tag
      1) Open cim/Deployments/ef-routing-engine-deployment.yaml file.
      2) Update tag gitimages.expertflow.com/cim/media-routing-engine:4.5.2   
      
    # Update Bot-framework tag
      1) Open cim/Deployments/ef-bot-framework-deployment.yaml file.
      2) Update tag gitimages.expertflow.com/cim/bot-framework:4.5.2
      
    # Update StateEvents-Logger tag
      1) Open cim/Deployments/ef-state-events-logger-deployment.yaml file.
      2) Update tag gitimages.expertflow.com/cim/state-events-logger:4.5.2
      
    # Update Realtime Reports tag
      1) Open cim/Deployments/ef-realtime-reports-deployment.yaml file.
      2) Update tag gitimages.expertflow.com/cim/realtime-reports-manager:4.5.2
      
    # Update Campaign Scheduler tag
      1) Open cim/Deployments/ef-scheduled-activities-deployment.yaml file.
      2) Update tag gitimages.expertflow.com/campaign-manager/campaign-scheduler:4.5.2
      3) Delete following environment variables
         - name: COUNT_OF_WEBHOOK_NOTIFICATION_RETRY_ATTEMPTS
           valueFrom:
             configMapKeyRef:
               key: COUNT_OF_WEBHOOK_NOTIFICATION_RETRY_ATTEMPTS
               name: ef-scheduled-activities-cm
         - name: WEBHOOK_NOTIFICATION_RETRY_TIMEOUT_IN_SECONDS
           valueFrom:
             configMapKeyRef:
               key: WEBHOOK_NOTIFICATION_RETRY_TIMEOUT_IN_SECONDS
               name: ef-scheduled-activities-cm
      4) Add following new variables
         - name: THIRD_PARTY_COMPONENTS_RETRY_COUNT_ATTEMPTS_LIMIT
           valueFrom:
             configMapKeyRef:
               key: THIRD_PARTY_COMPONENTS_RETRY_COUNT_ATTEMPTS_LIMIT
               name: ef-scheduled-activities-cm
         - name: THIRD_PARTY_COMPONENTS_NEXT_RETRY_TIMEOUT_DURATION_IN_SECONDS
           valueFrom:
             configMapKeyRef:
                key: THIRD_PARTY_COMPONENTS_NEXT_RETRY_TIMEOUT_DURATION_IN_SECONDS
                name: ef-scheduled-activities-cm          
    
      
    # Update Historical Reports Manager tag
      1) Open cim/Deployments/ef-historical-reports-deployment.yaml file.
      2) Update tag gitimages.expertflow.com/cim/historical-reports-manager:4.5.2
      
    # Update Cim Customer tag
      1) Open cim/Deployments/ef-cim-customer-deployment.yaml file.
      2) Update tag gitimages.expertflow.com/cim/cim-backend:4.5.2   
      
    # Update Customer Widget tag
      1) Open cim/Deployments/ef-customer-widget-deployment.yaml file.
      2) Update tag gitimages.expertflow.com/efpublic/customer-widget:4.5.2  
        
    # Update Unified Admin tag
      1) Open cim/Deployments/ef-unified-admin-deployment.yaml file.
      2) Update tag gitimages.expertflow.com/cim/unified-admin:4.5.2
      
    # Update Unified Agent tag
      1) Open cim/Deployments/ef-unified-agent-deployment.yaml file.
      2) Update tag gitimages.expertflow.com/cim/unified-agent:4.5.2  
      
    # Update Team Announcement tag
      1) Open cim/Deployments/ef-team-announcement-deployment.yaml file.
      2) Update tag gitimages.expertflow.com/cim/team-announcement:4.5.2 
          
    # Update agent-manager tag
      1) Open cim/Deployments/ef-agent-manager-deployment.yaml file.
      2) Update tag gitimages.expertflow.com/cim/agent-manager:4.5.2
      
    # Update 360Connector tag
      1) Open cim/Deployments/ef-360-connector-deployment.yaml file.
      2) Update tag gitimages.expertflow.com/cim/360-connector:4.5.2 
      
    # Update Facebook-Connector tag
      1) Open cim/Deployments/ef-facebook-connector-deployment.yaml file.
      2) Update tag gitimages.expertflow.com/cim/facebook-connector:4.5.2 
      
    # Update Instagram-Connector tag
      1) Open cim/Deployments/ef-instagram-connector-deployment.yaml file.
      2) Update tag gitimages.expertflow.com/cim/instagram-connector:4.5.2   
      
    # Update SMPP-Connector tag
      1) Open cim/Deployments/ef-smpp-connector-deployment.yaml file.
      2) Update tag gitimages.expertflow.com/cti/hc_smpp_connector:4.5.2   
       
    # Update Telegram-Connector tag
      1) Open cim/Deployments/ef-telegram-connector-deployment.yaml file.
      2) Update tag gitimages.expertflow.com/cim/telegram-connector:4.5.2
      
    # Update Twilio-Connector tag
      1) Open cim/Deployments/ef-twilio-connector-deployment.yaml file.
      2) Update tag gitimages.expertflow.com/cim/twilio-connector:4.5.2 
      
    # Update Twitter-Connector tag
      1) Open cim/Deployments/ef-twitter-connector-deployment.yaml file.
      2) Update tag gitimages.expertflow.com/cim/twitter-connector:4.5.2
        
    # Update Viber-Connector tag
      1) Open cim/Deployments/ef-viber-connector-deployment.yaml file.
      2) Update tag gitimages.expertflow.com/cim/viber-connector:4.5.2  
      
    # Update Web Channel Manager tag
      1) Open cim/Deployments/ef-web-channel-manager-deployment.yaml file.
      2) Update tag gitimages.expertflow.com/cim/web-channel-manager:4.5.2 
      
    # Update File-Engine tag
      1) Open cim/Deployments/ef-file-engine-deployment.yaml file.
      2) Update tag gitimages.expertflow.com/chat-solution/file-engine:4.5.2
        
  7. Update Controller training

    CODE
    # Update the controller training
      1) Delete controller configmaps
          kubectl -n expertflow delete configmap ef-conversation-controller-actions-cm 
          kubectl -n expertflow delete configmap ef-conversation-controller-actions-utils-cm 
      2) Copy actions and utils folder  
          Copy CX-4.5.2/cim-solution/kubernetes/pre-deployment/conversation-Controller/actions into current release
          cim-solution/kubernetes/pre-deployment/conversation-Controller
          Copy CX-4.5.2/cim-solution/kubernetes/pre-deployment/conversation-Controller/utils into current release
          cim-solution/kubernetes/pre-deployment/conversation-Controller
      3) Create configMaps
          kubectl -n expertflow create configmap ef-conversation-controller-actions-cm --from-file=pre-deployment/conversation-Controller/actions
          kubectl -n expertflow create configmap ef-conversation-controller-actions-utils-cm --from-file=pre-deployment/conversation-Controller/utils    
         
  8. Add new component Conversation Monitor

    CODE
    Copy the ConfigMap, Deployment, Service and Ingress for new component from CX-4.5.2 to your current release
    # Add ConfigMap
      Copy from CX-4.5.2/cim-solution/kubernetes/cim/ConfigMaps/ef-conversation-monitor-configmap.yaml
      to cim-solution/kubernetes/cim/ConfigMaps
    # Add Service
      Copy from CX-4.5.2/cim-solution/kubernetes/cim/Services/ef-conversation-monitor-service.yaml
      to cim-solution/kubernetes/cim/Services
    # Add Deployment
      Copy from CX-4.5.2/cim-solution/kubernetes/cim/Deployments/ef-conversation-monitor-deployment.yaml
      to cim-solution/kubernetes/cim/Deployments
      1) Open cim/Deployments/ef-conversation-monitor-deployment.yaml file.
      2) Update tag gitimages.expertflow.com/cim/conversation-monitor:4.5.2
    # Add Ingress, copy nginx or traefik as per your deployment
      For RKE2 Copy from CX-4.5.2/cim-solution/kubernetes/cim/Ingresses/nginx/ef-conversation-monitor-Ingress.yaml
      to cim-solution/kubernetes/cim/Ingresses/nginx
      For K3s Copy from CX-4.5.2/cim-solution/kubernetes/cim/Ingresses/traefik/ef-conversation-monitor-Ingress.yaml
      to cim-solution/kubernetes/cim/Ingresses/traefik
      
  9. Update Reporting connector

    CODE
    # Update reporting-connector.conf
      1) Open pre-deployment/reportingConnector/reporting-connector.conf
      2) Add following new environment variables 
        mongodb_username=root
        mongodb_password=Expertflow123  
        mongodb_truststore_path=./mongo_truststore.p12
        mongodb_truststore_password=Expertflow123
        mongodb_keystore_path=./mongo_keystore.p12
        mongodb_keystore_password=Expertflow123
        admin_panel_db_name=adminPanel    
      3) Update following existing environment variables
        mysql_dbms_additional_params=noDatetimeStringSync=true&useSSL=true&requireSSL=true&trustServerCertificate=true&clientCertificateKeyStoreUrl=file:///root/config/certs/mykeystore.jks&clientCertificateKeyStorePassword=changeit
        upper_limit=100
        
      4) Create reporting connector configMap
        kubectl -n expertflow create configmap ef-reporting-connector-conf --from-file=pre-deployment/reportingConnector/reporting-connector.conf   
    # Update ef-reporting-connector-cron.yaml
      1) Open pre-deployment/reportingConnector/ef-reporting-connector-cron.yaml   
      2) Update Tag: gitimages.expertflow.com/cim/reporting-connector:4.5.2
      3) Add following environment variables
                    - name: MONGODB_ENABLE_SSL
                      valueFrom:
                        configMapKeyRef:
                          key: MONGODB_ENABLE_SSL
                          name: ef-connection-env-cm
                    - name: MONGODB_CLIENT_CERT
                      valueFrom:
                        configMapKeyRef:
                          key: MONGODB_CLIENT_CERT
                          name: ef-connection-env-cm
                    - name: MONGODB_CA_CERT
                      valueFrom:
                        configMapKeyRef:
                          key: MONGODB_CA_CERT
                          name: ef-connection-env-cm
                    - name: TRUST_STORE_PASSWORD
                      valueFrom:
                        configMapKeyRef:
                          key: TRUST_STORE_PASSWORD
                          name: ef-connection-env-cm
                    - name: KEY_STORE_PASSWORD
                      valueFrom:
                        configMapKeyRef:
                          key: KEY_STORE_PASSWORD
                          name: ef-connection-env-cm
      4) Add following Volumes
                  volumes:
                 - name: mongo-mongodb-ca
                   secret:
                     secretName: mongo-mongodb-ca
      5) Add following VolumeMounts
                      volumeMounts:
                    - name: mongo-mongodb-ca
                      mountPath: /mongo                                            
        
  10. Run the MySQL/MSSQL update script on top of the current historical database

    CODE
    # Run the script as per your configured DB
    # MySQL Script
    CX-4.5.2/cim-solution/kubernetes/pre-deployment/reportingConnector/dbScripts/dbupdate/historical_reports_db_update_script_MYSQL.sql.sql
    Or
    # MSSQL
    CX-4.5.2/cim-solution/kubernetes/pre-deployment/reportingConnector/dbScripts/dbupdate/historical_reports_db_update_script_MSSQL.sql.sql
  11. Start all core components.

    CODE
    # Apply all ConfigMaps
    kubectl apply -f cim/ConfigMaps
    # Apply all deployments
    kubectl apply -f cim/Deployments
    
    # Apply service for conversation-monitor
    kubectl apply -f cim/Services/ef-conversation-monitor-service.yaml
    # Apply Ingress for conversation-monitor
      For RKE2
      kubectl apply -f cim/Ingresses/nginx/ef-conversation-monitor-Ingress.yaml
      For K3s
      kubectl apply -f cim/Ingresses/traefik/ef-conversation-monitor-Ingress.yaml
    
    # Apply reporting-connector cron job
    kubectl apply -f pre-deployment/reportingConnector/ef-reporting-connector-cron.yaml -n expertflow
    
    # Apply team-announcement cron job
    kubectl apply -f pre-deployment/team-announcement/ef-team-announcement-cronjob.yaml -n expertflow
  12. Upgrade KeyCloak permissions

  13. Upgrade Grafana

  14. Upgrade guide for reports

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.