diff --git a/jjb/api-test.yaml b/jjb/api-test.yaml
index be15dad..f72b0ac 100644
--- a/jjb/api-test.yaml
+++ b/jjb/api-test.yaml
@@ -3,7 +3,7 @@
 
 - job-template:
     id: api-test
-    name: 'verify_{project}_api-test'
+    name: 'verify_{project}{name-extension}_api-test'
     description: |
       Created by {id} job-template from ci-management/jjb/api-test.yaml, using pipeline: {pipeline_script}
 
diff --git a/jjb/defaults.yaml b/jjb/defaults.yaml
index a663446..b6b6248 100644
--- a/jjb/defaults.yaml
+++ b/jjb/defaults.yaml
@@ -14,6 +14,9 @@
     # by default, don't depend on other jobs
     dependency-jobs: ''
 
+    # used to rename jobs if version/branch forking is required
+    name-extension: ''
+
     # How long to keep builds and artifacts
     build-days-to-keep: 60
     artifact-num-to-keep: 30
diff --git a/jjb/helm-api-test.yaml b/jjb/helm-api-test.yaml
deleted file mode 100644
index 29aa8f3..0000000
--- a/jjb/helm-api-test.yaml
+++ /dev/null
@@ -1,63 +0,0 @@
----
-# Run CORD API robot tests in helm
-
-- job-template:
-    id: helm-api-test
-    name: 'verify_{project}_helm-api-test'
-    description: |
-      Created by {id} job-template from ci-management/jjb/helm-api-test.yaml
-
-    triggers:
-      - cord-infra-gerrit-trigger-patchset:
-          gerrit-server-name: '{gerrit-server-name}'
-          project-regexp: '^{project}$'
-          branch-regexp: '{branch-regexp}'
-          file-include-regexp: '{all-files-regexp}'
-          dependency-jobs: '{dependency-jobs}'
-
-    properties:
-      - cord-infra-properties:
-          build-days-to-keep: '{build-days-to-keep}'
-          artifact-num-to-keep: '{artifact-num-to-keep}'
-
-    wrappers:
-      - lf-infra-wrappers:
-          build-timeout: '60'
-          jenkins-ssh-credential: '{jenkins-ssh-credential}'
-
-    parameters:
-      - string:
-         name: executorNode
-         default: 'ubuntu16.04-basebuild-4c-8g'
-         description: 'Name of the Jenkins node to run the job on'
-
-      - string:
-         name: manifestUrl
-         default: '{gerrit-server-url}/{cord-repo-manifest}'
-         description: 'URL to the repo manifest'
-
-      - string:
-         name: manifestBranch
-         default: '$GERRIT_BRANCH'
-         description: 'Name of the repo branch to use'
-
-      - string:
-         name: gerritProject
-         default: '$GERRIT_PROJECT'
-         description: 'Name of the Gerrit project'
-
-      - string:
-         name: gerritChangeNumber
-         default: '$GERRIT_CHANGE_NUMBER'
-         description: 'Changeset number in Gerrit'
-
-      - string:
-         name: gerritPatchsetNumber
-         default: '$GERRIT_PATCHSET_NUMBER'
-         description: 'PatchSet number in Gerrit'
-
-    project-type: pipeline
-    concurrent: true
-
-    dsl: !include-raw-escape: pipeline/helm-api-test.groovy
-
diff --git a/jjb/pipeline/all-xos-api-test-helm.groovy b/jjb/pipeline/all-xos-api-test-helm.groovy
index 863baec..dd70943 100644
--- a/jjb/pipeline/all-xos-api-test-helm.groovy
+++ b/jjb/pipeline/all-xos-api-test-helm.groovy
@@ -12,7 +12,9 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-PROFILE="null"
+// Run XOS api tests on HEAD of a branch (usually master), loading the
+// corresponding charts
+
 CORE_CONTAINER="null"
 
 pipeline {
@@ -206,7 +208,7 @@
              helm dep update xos-services/hippie-oss
              helm install \${helm_install_args} xos-services/hippie-oss -n hippie-oss
 
-           elif [[ "$GERRIT_PROJECT" =~ ^(xos|xos-tosca|cord-tester)\$ ]]; then
+           elif [[ "$GERRIT_PROJECT" =~ ^(xos|xos-tosca|cord-tester|helm-charts)\$ ]]; then
              echo "No additional charts to install for testing $GERRIT_PROJECT"
 
            else
diff --git a/jjb/pipeline/chart-api-test-helm.groovy b/jjb/pipeline/chart-api-test-helm.groovy
new file mode 100644
index 0000000..57889b3
--- /dev/null
+++ b/jjb/pipeline/chart-api-test-helm.groovy
@@ -0,0 +1,255 @@
+// Copyright 2017-present Open Networking Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// chart-api-test-helm.groovy
+// Checks functionality of the helm-chart, without overriding the version/tag used
+
+CORE_CONTAINER="null"
+
+pipeline {
+
+    /* no label, executor is determined by JJB */
+    agent {
+        label "${params.executorNode}"
+    }
+
+  stages {
+
+    stage('repo') {
+      steps {
+        checkout(changelog: false, \
+          poll: false,
+          scm: [$class: 'RepoScm', \
+            manifestRepositoryUrl: "${params.manifestUrl}", \
+            manifestBranch: "${params.manifestBranch}", \
+            currentBranch: true, \
+            destinationDir: 'cord', \
+            forceSync: true,
+            resetFirst: true, \
+            quiet: true, \
+            jobs: 4, \
+            showAllChanges: true] \
+          )
+      }
+    }
+
+    stage('patch') {
+      steps {
+        sh """
+           pushd cord
+           PROJECT_PATH=\$(xmllint --xpath "string(//project[@name=\\\"${gerritProject}\\\"]/@path)" .repo/manifest.xml)
+           repo download "\$PROJECT_PATH" "${gerritChangeNumber}/${gerritPatchsetNumber}"
+           popd
+           """
+      }
+    }
+
+
+    stage('minikube') {
+      steps {
+        /* see https://github.com/kubernetes/minikube/#linux-continuous-integration-without-vm-support */
+        sh '''
+           export MINIKUBE_WANTUPDATENOTIFICATION=false
+           export MINIKUBE_WANTREPORTERRORPROMPT=false
+           export CHANGE_MINIKUBE_NONE_USER=true
+           export MINIKUBE_HOME=$HOME
+           mkdir -p $HOME/.kube || true
+           touch $HOME/.kube/config
+           export KUBECONFIG=$HOME/.kube/config
+           sudo -E /usr/bin/minikube start --vm-driver=none
+           '''
+        script {
+          timeout(3) {
+            waitUntil {
+              sleep 5
+              def kc_ret = sh script: "kubectl get po", returnStatus: true
+              return (kc_ret == 0);
+            }
+          }
+        }
+      }
+    }
+
+    stage('helm') {
+      steps {
+        sh '''
+           helm init
+           sleep 60
+           helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com/
+           '''
+      }
+    }
+
+    stage('build') {
+      steps {
+        sh """
+           #!/usr/bin/env bash
+           set -eu -o pipefail
+
+           helm_install_args='-f examples/api-test-values.yaml'
+           basesleep=300
+           extrasleep=60
+
+           pushd cord/helm-charts
+
+           helm dep up xos-core
+           helm install \${helm_install_args} xos-core -n xos-core
+
+           # Pick which chart(s) to load depending on the project being tested
+           # In regex, please list repos in same order as requirements.yaml in the chart(s) loaded!
+
+           if [[ "$GERRIT_PROJECT" =~ ^(rcord|onos-service|fabric|olt-service|vsg-hw|vrouter)\$ ]]; then
+             helm dep update xos-profiles/rcord-lite
+             helm install \${helm_install_args} xos-profiles/rcord-lite -n rcord-lite
+             extrasleep=300
+
+           elif [[ "$GERRIT_PROJECT" =~ ^(vMME|vspgwc|vspgwu|vHSS|hss_db|internetemulator|sdn-controller|epc-service|mcord|progran)\$ ]]; then
+             helm dep update xos-profiles/base-openstack
+             helm dep update xos-profiles/mcord
+             helm install \${helm_install_args} xos-profiles/base-openstack -n base-openstack
+             helm install \${helm_install_args} xos-profiles/mcord -n mcord
+             extrasleep=900
+
+           elif [[ "$GERRIT_PROJECT" =~ ^(openstack|vtn-service|exampleservice|addressmanager)\$ ]]; then
+             # NOTE: onos-service is included in base-openstack, but tested w/rcord-lite chart
+
+             helm dep update xos-profiles/base-openstack
+             helm dep update xos-profiles/demo-exampleservice
+             helm install \${helm_install_args} xos-profiles/base-openstack -n base-openstack
+             helm install \${helm_install_args} xos-profiles/demo-exampleservice -n demo-exampleservice
+
+           elif [[ "$GERRIT_PROJECT" =~ ^(kubernetes-service|simpleexampleservice)\$ ]]; then
+             helm dep update xos-profiles/base-kubernetes
+             helm dep update xos-profiles/demo-simpleexampleservice
+             helm install \${helm_install_args} xos-profiles/base-kubernetes -n base-kubernetes
+             helm install \${helm_install_args} xos-profiles/demo-simpleexampleservice -n demo-simpleexampleservice
+
+           elif [[ "$GERRIT_PROJECT" =~ ^(hippie-oss)\$ ]]; then
+             helm dep update xos-services/hippie-oss
+             helm install \${helm_install_args} xos-services/hippie-oss -n hippie-oss
+
+           elif [[ "$GERRIT_PROJECT" =~ ^(xos|xos-tosca|cord-tester|helm-charts)\$ ]]; then
+             echo "No additional charts to install for testing $GERRIT_PROJECT"
+
+           else
+             echo "Couldn't find a chart to test project: $GERRIT_PROJECT!"
+             exit 1
+           fi
+
+           # sleep to wait for services to load
+           sleep "\$basesleep"
+           sleep "\$extrasleep"
+
+           echo "# Checking helm deployments"
+           kubectl get pods
+           helm list
+
+           for hchart in \$(helm list -q);
+           do
+             echo "## 'helm status' for chart: \${hchart} ##"
+             helm status "\${hchart}"
+           done
+
+           popd
+        """
+      }
+    }
+    stage('setup') {
+      steps {
+        sh """
+            CORE_CONTAINER=\$(docker ps | grep k8s_xos-core | awk '{print \$1}')
+
+            docker cp $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/targets/xosapitests.xtarget \$CORE_CONTAINER:/opt/xos/lib/xos-genx/xosgenx/targets/xosapitests.xtarget
+            docker cp $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/targets/xosserviceapitests.xtarget \$CORE_CONTAINER:/opt/xos/lib/xos-genx/xosgenx/targets/xosserviceapitests.xtarget
+            docker cp $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/targets/xoslibrary.xtarget \$CORE_CONTAINER:/opt/xos/lib/xos-genx/xosgenx/targets/xoslibrary.xtarget
+            docker exec -i \$CORE_CONTAINER /bin/bash -c "xosgenx --target /opt/xos/lib/xos-genx/xosgenx/targets/./xosapitests.xtarget /opt/xos/core/models/core.xproto" > $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/XOSCoreAPITests.robot
+
+            SERVICES=\$(docker exec -i \$CORE_CONTAINER /bin/bash -c "cd /opt/xos/dynamic_services/;find -name '*.xproto'" | awk -F[//] '{print \$2}')
+
+            export testname=_service_api.robot
+            export library=_library.robot
+
+            # do addtional tests if additional services are loaded
+            if ! [[ "$GERRIT_PROJECT" =~ ^(xos|xos-tosca|cord-tester)\$ ]]; then
+              for i in \$SERVICES; do bash -c "docker exec -i \$CORE_CONTAINER /bin/bash -c 'xosgenx --target /opt/xos/lib/xos-genx/xosgenx/targets/./xosserviceapitests.xtarget /opt/xos/dynamic_services/\$i/\$i.xproto /opt/xos/core/models/core.xproto'" > $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/\$i\$testname; done
+              for i in \$SERVICES; do bash -c "docker exec -i \$CORE_CONTAINER /bin/bash -c 'xosgenx --target /opt/xos/lib/xos-genx/xosgenx/targets/./xoslibrary.xtarget /opt/xos/dynamic_services/\$i/\$i.xproto /opt/xos/core/models/core.xproto'" > $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/\$i\$library; done
+            fi
+            """
+        }
+      }
+    stage('test') {
+       steps {
+          sh """
+              pushd cord/test/cord-tester/src/test/cord-api/Tests
+              CORE_CONTAINER=\$(docker ps | grep k8s_xos-core | awk '{print \$1}')
+              CHAM_CONTAINER=\$(docker ps | grep k8s_xos-chameleon | awk '{print \$1}')
+              XOS_CHAMELEON=\$(docker exec \$CHAM_CONTAINER ip a | grep -oE "([0-9]{1,3}\\.){3}[0-9]{1,3}\\b" | grep 172)
+              export testname=_service_api.robot
+              export library=_library.robot
+              SERVICES=\$(docker exec -i \$CORE_CONTAINER /bin/bash -c "cd /opt/xos/dynamic_services/;find -name '*.xproto'" | awk -F[//] '{print \$2}')
+              echo \$SERVICES
+              cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Properties/
+              sed -i \"s/^\\(SERVER_IP = \\).*/\\1\'\$XOS_CHAMELEON\'/\" RestApiProperties.py
+              sed -i \"s/^\\(SERVER_PORT = \\).*/\\1\'9101\'/\" RestApiProperties.py
+              sed -i \"s/^\\(XOS_USER = \\).*/\\1\'admin@opencord.org\'/\" RestApiProperties.py
+              sed -i \"s/^\\(XOS_PASSWD = \\).*/\\1\'letmein\'/\" RestApiProperties.py
+              sed -i \"s/^\\(PASSWD = \\).*/\\1\'letmein\'/\" RestApiProperties.py
+              cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests
+              pybot -d Log -T -e TenantWithContainer -e Port -e ControllerImages -e ControllerNetwork -e ControllerSlice -e ControllerUser XOSCoreAPITests.robot  || true
+              if ! [[ "$GERRIT_PROJECT" =~ ^(cord|platform-install|xos|xos-tosca|cord-tester)\$ ]]; then
+                  for i in \$SERVICES; do bash -c "pybot -d Log -T -e AddressManagerServiceInstance -v TESTLIBRARY:\$i\$library \$i\$testname"; sleep 2; done || true
+              fi
+              popd
+            """
+            }
+    }
+    stage('Publish') {
+        steps {
+            sh """
+            if [ -d RobotLogs ]; then rm -r RobotLogs; fi; mkdir RobotLogs
+            cp -r $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/Log/*ml ./RobotLogs
+            """
+            step([$class: 'RobotPublisher',
+                disableArchiveOutput: false,
+                logFileName: 'RobotLogs/log*.html',
+                otherFiles: '',
+                outputFileName: 'RobotLogs/output*.xml',
+                outputPath: '.',
+                passThreshold: 95,
+                reportFileName: 'RobotLogs/report*.html',
+                unstableThreshold: 0]);
+        }
+    }
+    }
+    post {
+        always {
+            sh '''
+              kubectl get pods --all-namespaces
+
+              echo "# removing helm deployments"
+              kubectl get pods
+              helm list
+
+              for hchart in \$(helm list -q);
+              do
+                echo "## Purging chart: \${hchart} ##"
+                helm delete --purge "\${hchart}"
+              done
+
+              minikube delete
+            '''
+            step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: "suchitra@opennetworking.org, you@opennetworking.org, kailash@opennetworking.org", sendToIndividuals: false])
+        }
+    }
+}
diff --git a/jjb/pipeline/helm-api-test.groovy b/jjb/pipeline/helm-api-test.groovy
deleted file mode 100644
index 164d4d2..0000000
--- a/jjb/pipeline/helm-api-test.groovy
+++ /dev/null
@@ -1,194 +0,0 @@
-/* helm-api-test pipeline */
-
-pipeline {
-
-  /* no label, executor is determined by JJB */
-  agent {
-    label "${params.executorNode}"
-  }
-
-  stages {
-
-    stage('repo') {
-      steps {
-        checkout(changelog: false, \
-          poll: false,
-          scm: [$class: 'RepoScm', \
-            manifestRepositoryUrl: "${params.manifestUrl}", \
-            manifestBranch: "${params.manifestBranch}", \
-            currentBranch: true, \
-            destinationDir: 'cord', \
-            forceSync: true,
-            resetFirst: true, \
-            quiet: true, \
-            jobs: 4, \
-            showAllChanges: true] \
-          )
-      }
-    }
-
-    stage('patch') {
-      steps {
-        sh """
-           #!/usr/bin/env bash
-           set -eu -o pipefail
-
-           VERSIONFILE="" # file path to file containing version number
-           NEW_VERSION="" # version number found in VERSIONFILE
-           releaseversion=0
-
-           function read_version {
-             if [ -f "VERSION" ]
-             then
-               NEW_VERSION=\$(head -n1 "VERSION")
-               VERSIONFILE="VERSION"
-             elif [ -f "package.json" ]
-             then
-               NEW_VERSION=\$(python -c 'import json,sys;obj=json.load(sys.stdin); print obj["version"]' < package.json)
-               VERSIONFILE="package.json"
-             else
-               echo "ERROR: No versioning file found!"
-               exit 1
-             fi
-           }
-
-           # check if the version is a released version
-           function check_if_releaseversion {
-             if [[ "\$NEW_VERSION" =~ ^([0-9]+)\\.([0-9]+)\\.([0-9]+)\$ ]]
-             then
-               echo "Version string '\$NEW_VERSION' in '\$VERSIONFILE' is a SemVer released version!"
-               releaseversion=1
-             else
-               echo "Version string '\$NEW_VERSION' in '\$VERSIONFILE' is not a SemVer released version, skipping."
-             fi
-           }
-
-           pushd cord
-           PROJECT_PATH=\$(xmllint --xpath "string(//project[@name=\\\"${gerritProject}\\\"]/@path)" .repo/manifest.xml)
-           repo download "\$PROJECT_PATH" "${gerritChangeNumber}/${gerritPatchsetNumber}"
-
-           pushd \$PROJECT_PATH
-           echo "Existing git tags:"
-           git tag -n
-
-           read_version
-           check_if_releaseversion
-
-           # perform checks if a released version
-           if [ "\$releaseversion" -eq "1" ]
-           then
-             git config --global user.email "apitest@opencord.org"
-             git config --global user.name "API Test"
-
-             git tag -a "\$NEW_VERSION" -m "Tagged for api test on Gerrit patchset: ${gerritChangeNumber}"
-
-             echo "Tags including new tag:"
-             git tag -n
-
-           fi
-           popd
-           popd
-           """
-      }
-    }
-
-    stage('prep') {
-      parallel {
-
-        stage('images') {
-          steps {
-            sh '''
-               pushd cord/automation-tools/developer
-               mkdir ib_logs
-               ./imagebuilder.py -l ib_logs -a ib_actions.yml -g ib_graph.dot -f ../../helm-charts/examples/api-test-images.yaml
-               popd
-               '''
-            archiveArtifacts artifacts: 'cord/automation-tools/developer/ib_actions.yml, cord/automation-tools/developer/ib_graph.dot, cord/automation-tools/developer/ib_logs/*', fingerprint: true
-          }
-        }
-
-        stage('minikube') {
-          steps {
-            /* see https://github.com/kubernetes/minikube/#linux-continuous-integration-without-vm-support */
-            sh '''
-               export MINIKUBE_WANTUPDATENOTIFICATION=false
-               export MINIKUBE_WANTREPORTERRORPROMPT=false
-               export CHANGE_MINIKUBE_NONE_USER=true
-               export MINIKUBE_HOME=$HOME
-               mkdir -p $HOME/.kube || true
-               touch $HOME/.kube/config
-               export KUBECONFIG=$HOME/.kube/config
-               sudo -E /usr/bin/minikube start --vm-driver=none
-               '''
-            script {
-              timeout(3) {
-                waitUntil {
-                  sleep 5
-                  def kc_ret = sh script: "kubectl get po", returnStatus: true
-                  return (kc_ret == 0);
-                }
-              }
-            }
-          }
-        }
-      }
-    }
-
-    stage('helm') {
-      steps {
-        sh '''
-           helm init
-           sleep 60
-           helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com/
-           '''
-      }
-    }
-
-    stage('xos') {
-      steps {
-        sh '''
-           pushd cord/helm-charts
-           helm dep up xos-core
-           helm install -f examples/image-tag-candidate.yaml -f examples/imagePullPolicy-IfNotPresent.yaml -f examples/api-test-values.yaml xos-core -n xos-core
-           sleep 60
-           helm status xos-core
-           popd
-           '''
-      }
-    }
-
-    stage('test'){
-      steps {
-        sh '''
-           helm test xos-core
-           mkdir -p ./RobotLogs;
-           cp /tmp/helm_test_xos_core_logs_*/* ./RobotLogs
-           '''
-
-        step([$class: 'RobotPublisher',
-             disableArchiveOutput: false,
-             logFileName: 'RobotLogs/log*.html',
-             otherFiles: '',
-             outputFileName: 'RobotLogs/output*.xml',
-             outputPath: '.',
-             passThreshold: 100,
-             reportFileName: 'RobotLogs/report*.html',
-             unstableThreshold: 0]);
-      }
-    }
-  }
-
-  post {
-    always {
-      sh '''
-         kubectl get pods --all-namespaces
-         helm list
-         kubectl logs xos-core-api-test
-         kubectl delete pod xos-core-api-test
-         helm delete --purge xos-core
-         minikube delete
-         '''
-      deleteDir()
-    }
-  }
-}
diff --git a/jjb/verify/exampleservice.yaml b/jjb/verify/exampleservice.yaml
index fae36e3..e9b1e63 100644
--- a/jjb/verify/exampleservice.yaml
+++ b/jjb/verify/exampleservice.yaml
@@ -27,12 +27,14 @@
 - job-group:
     name: 'verify-exampleservice-jobs-modern'
     jobs:
-      - 'helm-api-test':
+      - 'api-test':
           dependency-jobs: 'verify_exampleservice_sonarqube'
+          pipeline_script: 'all-xos-api-test-helm.groovy'
 
 - job-group:
     name: 'verify-exampleservice-jobs-legacy'
     jobs:
       - 'api-test':
+          name-extension: '-legacy'
           dependency-jobs: 'verify_exampleservice_sonarqube'
           pipeline_script: 'all-xos-api-test.groovy'
diff --git a/jjb/verify/helm-charts.yaml b/jjb/verify/helm-charts.yaml
index 90930a8..bcdcfb4 100644
--- a/jjb/verify/helm-charts.yaml
+++ b/jjb/verify/helm-charts.yaml
@@ -13,10 +13,11 @@
     name: 'verify-helm-charts-jobs'
     jobs:
       - 'verify-licensed'
-      - 'verify-sonarqube':
-          dependency-jobs: 'verify_helm-charts_licensed'
       - 'verify-helm-lint':
-          dependency-jobs: 'verify_helm-charts_sonarqube'
-      - 'helm-api-test':
+          dependency-jobs: 'verify_helm-charts_licensed'
+      - 'verify-sonarqube':
           dependency-jobs: 'verify_helm-charts_helm-lint'
+      - 'api-test':
+          dependency-jobs: 'verify_helm-charts_sonarqube'
+          pipeline_script: 'chart-api-test-helm.groovy'
 
diff --git a/jjb/verify/xos.yaml b/jjb/verify/xos.yaml
index 3bb889f..e25218d 100644
--- a/jjb/verify/xos.yaml
+++ b/jjb/verify/xos.yaml
@@ -17,10 +17,9 @@
           dependency-jobs: 'verify_xos_licensed'
       - 'verify-sonarqube':
           dependency-jobs: 'verify_xos_tag-collision'
-      - 'api-test':
-          dependency-jobs: 'verify_xos_sonarqube'
-          pipeline_script: 'all-xos-api-test-helm.groovy'
-      - 'helm-api-test':
-          dependency-jobs: 'verify_xos_sonarqube'
       - 'xos-unit-test':
-          dependency-jobs: 'verify_xos_helm-api-test'
+          dependency-jobs: 'verify_xos_sonarqube'
+      - 'api-test':
+          dependency-jobs: 'verify_xos_unit-test'
+          pipeline_script: 'all-xos-api-test-helm.groovy'
+
