Skip to main content
Skip table of contents

Upgrade Guide CX4.9.4 to CX4.9.5

Before upgrading, ensure that the system is idle, i.e; all agents are logged out from the AgentDesk.

  1. Clone the CX repository on the target server

    CODE
    # Create CX-4.9.5 directory from root
    mkdir CX-4.9.5
    # Navigate to CX-4.9.5
    cd CX-4.9.5
    # Clone the 4.9.5 branch of cim-solution repository
    git clone -b CX-4.9.5 https://efcx:RecRpsuH34yqp56YRFUb@gitlab.expertflow.com/cim/cim-solution.git $HOME/CX-4.9.5
    # Navigate to root(previous) directory
    cd ..
  2. Update helm repo

    CODE
    helm repo update expertflow
  3. Change the directory to the current deployment of CX

    CODE
    change directory to following path in current deployment
    cd CX-4.9.4/kubernetes
  4. Update the Agent-Desk helm chart

    CODE
    #Update Agent Desk helm chart
    Edit/update the values file helm-values/cx-agent-desk-custom-values.yaml with
    
    unified-agent Tag: 4.9.5
    
    helm upgrade --install --namespace expertflow   --set global.efCxReleaseName="ef-cx"  cx-agent-desk  --debug --values helm-values/cx-agent-desk-custom-values.yaml expertflow/agent-desk --version 4.9.5
  5. Update the Channel helm chart

    CODE
    # Update Channel helm chart
    Edit/update the values file helm-values/cx-channels-custom-values.yaml with following 
    
    #Add the following environment variables for linkedinconnector under extraEnvVars 
    
          - name: LINKEDIN_CIM_FILE_ENGINE_URL
            value: "http://{{ .Values.global.efCxReleaseName }}-file-engine-svc.{{ .Release.Namespace }}.svc:8080"
          - name: FILE_ENGINE_BASE_FQDN
            value: "https://{{ .Values.global.ingressRouter }}"
          - name: AUTO_SCHEDULER_STARTUP
            value: "true"
    
    #update the following environment variables for linkedinconnector under extraEnvVars 
          - name: linkedin.scheduler.fixed-rate
            value: "150"
            
    
    linkedinconnector Tag : 4.9.5
    
    helm upgrade --install --namespace expertflow  --set global.efCxReleaseName="ef-cx"   --debug   cx-channels --values  helm-values/cx-channels-custom-values.yaml  expertflow/channels --version 4.9.5
  6. Update the Core helm chart

    CODE
    #Update Core Component helm chart
    Edit/update the values file helm-values/ef-cx-custom-values.yaml with
    
    replace the apisix route with following changes in unified-admin
    
          # Route 1: UNSECURED GET (API) - Highest priority for the specific unsecured API call.
          # Previously nameSuffix was get-form-by-id-unsecured but shortened due to APISIX issue. 401.
          - nameSuffix: "get-form-unsecured"
            enabled: true
            priority: 150
            paths: ["/unified-admin/forms/*"]
            methods: ["GET"]
            exprs:
              - subject:
                  scope: Path
                op: RegexMatch
                value: "^/unified-admin/forms/[a-fA-F0-9]{24}$"
            backendServicePort: 3000
            plugins:
              enableAuth: false
              enableRewrite: true
              rewriteStripPrefix: false
              rewriteRegexUriFrom: "^/unified-admin/forms/([a-fA-F0-9]{24})$"
              rewriteRegexUriTo: "/forms/$1"
    
          # Route 2: SECURED APIs - High priority to secure all required backend API endpoints.
          - nameSuffix: "backend-apis-secured"
            enabled: true
            priority: 25
            paths:
              - "/unified-admin/users"
              - "/unified-admin/users/*"
              - "/unified-admin/health"
              - "/unified-admin/health/*"
              - "/unified-admin/team"
              - "/unified-admin/team/*"
              - "/unified-admin/forms"
              - "/unified-admin/forms/*"
              - "/unified-admin/metrics"
              - "/unified-admin/metrics/*"
              - "/unified-admin/reasons"
              - "/unified-admin/reasons/*"
              - "/unified-admin/pull-mode-list"
              - "/unified-admin/pull-mode-list/*"
            backendServicePort: 3000
            plugins:
              enableAuth: false
              enableRewrite: true
              rewriteStripPrefix: false
              rewriteRegexUriFrom: "^/unified-admin/(.*)"
              rewriteRegexUriTo: "/$1"
          # Route 3: UNSECURED SPA Handler - Handles the initial page load for the app.
          - nameSuffix: "frontend-spa-routes"
            enabled: true
            priority: 0
            paths:
              - "/unified-admin"
              - "/unified-admin/*"
            backendServicePort: 3000
            plugins:
              enableAuth: false
              enableRewrite: true
              rewriteStripPrefix: false
              rewriteRegexUriFrom: "^/unified-admin/?(.*)"
              rewriteRegexUriTo: "/$1"
              enableCors: true
              customPlugins:
                - name: client-control
                  enable: true
                  config:
                    max_body_size: 6291456
          # Route 4: GLOBAL CATCH-ALL - Based on the original working config.
          # This handles the FQDN root and ALL static assets (.js, .css, etc.) without a rewrite.
          - nameSuffix: "global-catchall"
            enabled: true
            priority: -10
            paths: ["/*"]
            backendServicePort: 3000
            plugins:
              enableAuth: false
              enableRewrite: false
          - nameSuffix: "default-404-handler"
            enabled: false
            priority: -200 # Very low priority
            paths: ["/*"] # Catches all paths not matched by higher priority routes
            # No backend is needed as the mocking plugin will generate the response
            backendServicePort: 80 # Dummy, but APISIX schema might require it.
            backendServiceName: "dummy-service" # Dummy
            plugins:
              enableAuth: false # Typically, 404 pages don't require auth
              enableRewrite: false
              enableCors: false # Or configure as needed for your 404 page
              customPlugins:
                - name: "mocking"
                  enable: false
                  config:
                    response_status: 404
                    response_headers:
                      Content-Type: "text/html; charset=utf-8"
                      X-Custom-Error-Page: "true"
                    response_example: |
                      <!DOCTYPE html>
                      <html lang="en">
                      <head>
                          <meta charset="UTF-8">
                          <meta name="viewport" content="width=device-width, initial-scale=1.0">
                          <title>Page Not Found</title>
                          <style>
                              body { font-family: Arial, sans-serif; text-align: center; padding: 50px; color: #333; }
                              h1 { font-size: 48px; color: #555; }
                              p { font-size: 18px; }
                              a { color: #007bff; text-decoration: none; }
                          </style>
                      </head>
                      <body>
                          <h1>404 - Page Not Found</h1>
                          <p>Sorry, the page you are looking for does not exist or has been moved.</p>
                          <p><a href="/">Return to Homepage</a></p>
                          <hr>
                          <p><small>Request ID: $request_id</small></p>
                          </body>
                      </html>
    
    
    
    agent-manager Tag: 4.9.5
    bot-framework Tag: 4.9.5
    cim-backend Tag: 4.9.5
    conversation-manager Tag: 4.9.5
    conversation-monitor Tag: 4.9.5
    file-engine Tag: 4.9.5
    media-routing-engine Tag: 4.9.5
    team-announcement tag: 4.9.5
    web-channel-manager tag: 4.9.5
    customer-channel-manager tag : 4.9.5
    customer-widget Tag: 4.9.5
    realtime-reports-manager Tag: 4.9.5
    
    
    helm upgrade --install --namespace expertflow --create-namespace   ef-cx  --debug --values helm-values/ef-cx-custom-values.yaml expertflow/cx --version 4.9.5
  7. Update the Campaigns helm chart

    CODE
    #Update Campaigns helm chart
    Edit/update the values file helm-values/cx-campaigns-custom-values.yaml with
    
    conversation-studio Tag: 4.9.5
    
    helm upgrade --install --namespace expertflow   --set global.efCxReleaseName="ef-cx"  cx-campaigns --debug --values helm-values/cx-campaigns-custom-values.yaml expertflow/campaigns --version 4.9.5
  8. Update the survey helm chart

    CODE
    #Update Surveys helm chart
    Edit/update the values file helm-values/cx-surveys-custom-values.yaml with
    
    survey-backend Tag : 4.9.5
    survey-nodes Tag : 4.9.5
    
    helm upgrade --install --namespace expertflow  --set global.efCxReleaseName="ef-cx"   cx-surveys  --debug --values helm-values/cx-surveys-custom-values.yaml expertflow/surveys --version 4.9.5
  9. Update the Expertflow ETL helm chart

    CODE
    #Edit/update the values file  helm-values/cx-transflux-custom-values.yaml with
    
    cx-data-platform Tag: 4.9.5
    
    helm upgrade --install --namespace expertflow   --set global.efCxReleaseName="ef-cx"  cx-transflux --debug --values helm-values/cx-transflux-custom-values.yaml  expertflow/transflux --version 4.9.5
  10. Update the Reporting helm chart

    CODE
    #Edit/update the values file  helm-values/cx-reporting-scheduler-custom-values.yaml with
    
    Reporting connector Tag: 4.9.5
    
    helm upgrade --install --namespace expertflow --set global.efCxReleaseName="ef-cx"   cx-reporting --debug --values helm-values/cx-reporting-scheduler-custom-values.yaml  expertflow/reporting --version 4.9.5
JavaScript errors detected

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

If this problem persists, please contact our support.