diff --git a/jjb/pipeline/voltha-openonu-go-tests.groovy b/jjb/pipeline/voltha-openonu-go-tests.groovy
deleted file mode 100755
index d810638..0000000
--- a/jjb/pipeline/voltha-openonu-go-tests.groovy
+++ /dev/null
@@ -1,519 +0,0 @@
-// 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.
-
-// voltha-2.x e2e tests
-// uses kind-voltha to deploy voltha-2.X
-// uses bbsim to simulate OLT/ONUs
-
-pipeline {
-
-  /* no label, executor is determined by JJB */
-  agent {
-    label "${params.buildNode}"
-  }
-  options {
-    timeout(time: 90, unit: 'MINUTES')
-  }
-  environment {
-    KUBECONFIG="$HOME/.kube/kind-config-voltha-minimal"
-    VOLTCONFIG="$HOME/.volt/config-minimal"
-    PATH="$WORKSPACE/kind-voltha/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
-    NAME="minimal"
-    FANCY=0
-    WITH_SIM_ADAPTERS="n"
-    WITH_RADIUS="y"
-    WITH_BBSIM="y"
-    DEPLOY_K8S="y"
-    VOLTHA_LOG_LEVEL="DEBUG"
-    CONFIG_SADIS="external"
-    BBSIM_CFG="configs/bbsim-sadis-att.yaml"
-    ROBOT_MISC_ARGS="-d $WORKSPACE/RobotLogs"
-    EXTRA_HELM_FLAGS=" --set global.image_registry=mirror.registry.opennetworking.org/ --set defaults.image_registry=mirror.registry.opennetworking.org/ "
-  }
-  stages {
-    stage('Clone kind-voltha') {
-      steps {
-        checkout([
-          $class: 'GitSCM',
-          userRemoteConfigs: [[
-            url: "https://gerrit.opencord.org/kind-voltha",
-            refspec: "${kindVolthaChange}"
-          ]],
-          branches: [[ name: "master", ]],
-          extensions: [
-            [$class: 'WipeWorkspace'],
-            [$class: 'RelativeTargetDirectory', relativeTargetDir: "kind-voltha"],
-            [$class: 'CloneOption', depth: 0, noTags: false, reference: '', shallow: false],
-          ],
-        ])
-        sh """
-        if [ '${kindVolthaChange}' != '' ] ; then
-          cd $WORKSPACE/kind-voltha
-          git fetch https://gerrit.opencord.org/kind-voltha ${kindVolthaChange} && git checkout FETCH_HEAD
-        fi
-        """
-      }
-    }
-    stage('Clone voltha-system-tests') {
-      steps {
-        checkout([
-          $class: 'GitSCM',
-          userRemoteConfigs: [[
-            url: "https://gerrit.opencord.org/voltha-system-tests",
-            refspec: "${volthaSystemTestsChange}"
-          ]],
-          branches: [[ name: "${branch}", ]],
-          extensions: [
-            [$class: 'WipeWorkspace'],
-            [$class: 'RelativeTargetDirectory', relativeTargetDir: "voltha-system-tests"],
-            [$class: 'CloneOption', depth: 0, noTags: false, reference: '', shallow: false],
-          ],
-        ])
-        sh """
-        if [ '${volthaSystemTestsChange}' != '' ] ; then
-          cd $WORKSPACE/voltha-system-tests
-          git fetch https://gerrit.opencord.org/voltha-system-tests ${volthaSystemTestsChange} && git checkout FETCH_HEAD
-        fi
-        """
-      }
-    }
-    // If the repo under test is not kind-voltha
-    // then download it and checkout the patch
-    stage('Download Patch') {
-      when {
-        expression {
-          return "${gerritProject}" != 'kind-voltha';
-        }
-      }
-      steps {
-        checkout([
-          $class: 'GitSCM',
-          userRemoteConfigs: [[
-            url: "https://gerrit.opencord.org/${gerritProject}",
-            refspec: "${gerritRefspec}"
-          ]],
-          branches: [[ name: "${branch}", ]],
-          extensions: [
-            [$class: 'WipeWorkspace'],
-            [$class: 'RelativeTargetDirectory', relativeTargetDir: "${gerritProject}"],
-            [$class: 'CloneOption', depth: 0, noTags: false, reference: '', shallow: false],
-          ],
-        ])
-        sh """
-          pushd $WORKSPACE/${gerritProject}
-          git fetch https://gerrit.opencord.org/${gerritProject} ${gerritRefspec} && git checkout FETCH_HEAD
-          echo "Currently on commit: \n"
-          git log -1 --oneline
-          popd
-          """
-      }
-    }
-    // If the repo under test is kind-voltha we don't need to download it again,
-    // as we already have it, simply checkout the patch
-    stage('Checkout kind-voltha patch') {
-      when {
-        expression {
-          return "${gerritProject}" == 'kind-voltha';
-        }
-      }
-      steps {
-        sh """
-        cd $WORKSPACE/kind-voltha
-        git fetch https://gerrit.opencord.org/kind-voltha ${gerritRefspec} && git checkout FETCH_HEAD
-        """
-      }
-    }
-    stage('Create K8s Cluster') {
-      steps {
-        sh """
-           cd $WORKSPACE/kind-voltha/
-
-           if [ "${branch}" != "master" ]; then
-             echo "on branch: ${branch}, sourcing kind-voltha/releases/${branch}"
-             source "$WORKSPACE/kind-voltha/releases/${branch}"
-           else
-             echo "on master, using default settings for kind-voltha"
-           fi
-
-           JUST_K8S=y ./voltha up
-           bash <( curl -sfL https://raw.githubusercontent.com/boz/kail/master/godownloader.sh) -b "$WORKSPACE/kind-voltha/bin"
-           """
-      }
-    }
-
-    stage('Build Images') {
-      steps {
-        sh """
-          make -C $WORKSPACE/voltha-openonu-adapter-go DOCKER_REGISTRY=mirror.registry.opennetworking.org/ DOCKER_REPOSITORY=voltha/ DOCKER_TAG=citest docker-build
-          """
-      }
-    }
-
-    stage('Push Images') {
-      steps {
-        sh '''
-           docker images | grep citest
-           for image in \$(docker images -f "reference=*/*/*citest" --format "{{.Repository}}"); do echo "Pushing \$image to nodes"; kind load docker-image \$image:citest --name voltha-\$NAME --nodes voltha-\$NAME-control-plane,voltha-\$NAME-worker,voltha-\$NAME-worker2; done
-           '''
-      }
-    }
-    stage('Deploy Voltha') {
-      steps {
-        sh """
-           export EXTRA_HELM_FLAGS+="--set log_agent.enabled=False ${extraHelmFlags} "
-
-           IMAGES="adapter_open_onu_go"
-
-           for I in \$IMAGES
-           do
-             EXTRA_HELM_FLAGS+="--set images.\$I.tag=citest,images.\$I.pullPolicy=Never "
-           done
-
-           cd $WORKSPACE/kind-voltha/
-           echo \$EXTRA_HELM_FLAGS
-
-           if [ "${branch}" != "master" ]; then
-             echo "on branch: ${branch}, sourcing kind-voltha/releases/${branch}"
-             source "$WORKSPACE/kind-voltha/releases/${branch}"
-           else
-             echo "on master, using default settings for kind-voltha"
-           fi
-
-           ./voltha up
-           """
-      }
-    }
-
-    stage('Run E2E Tests 1t8gem') {
-      environment {
-        ROBOT_LOGS_DIR="$WORKSPACE/RobotLogs/1t8gem"
-      }
-      steps {
-        sh '''
-          cd $WORKSPACE/kind-voltha/
-          WAIT_ON_DOWN=y DEPLOY_K8S=n ./voltha down
-
-          export EXTRA_HELM_FLAGS+="--set log_agent.enabled=False ${extraHelmFlags} "
-
-          IMAGES="adapter_open_onu_go"
-
-          for I in \$IMAGES
-          do
-            EXTRA_HELM_FLAGS+="--set images.\$I.tag=citest,images.\$I.pullPolicy=Never "
-          done
-          #1t8gem
-          mkdir -p $WORKSPACE/1t8gem
-          _TAG=kail-1t8gem kail -n voltha -n default > $WORKSPACE/1t8gem/onos-voltha-combined.log &
-
-          if [ "${branch}" != "master" ]; then
-            echo "on branch: ${branch}, sourcing kind-voltha/releases/${branch}"
-            source "$WORKSPACE/kind-voltha/releases/${branch}"
-          else
-            echo "on master, using default settings for kind-voltha"
-          fi
-
-          DEPLOY_K8S=n ./voltha up
-
-          mkdir -p $ROBOT_LOGS_DIR/1t8gem
-          export ROBOT_MISC_ARGS="-d $ROBOT_LOGS_DIR"
-          export TARGET_1T8GEM=1t8gem-openonu-go-adapter-test
-
-          if [ "${branch}" != "voltha-2.6" ]; then
-            export KVSTOREPREFIX=voltha_voltha
-          fi
-
-          make -C $WORKSPACE/voltha-system-tests \$TARGET_1T8GEM || true
-
-          # stop logging
-          P_IDS="$(ps e -ww -A | grep "_TAG=kail-1t8gem" | grep -v grep | awk '{print $1}')"
-          if [ -n "$P_IDS" ]; then
-            echo $P_IDS
-            for P_ID in $P_IDS; do
-              kill -9 $P_ID
-            done
-          fi
-
-          # get pods information
-          kubectl get pods -o wide --all-namespaces > $WORKSPACE/1t8gem/pods.txt || true
-        '''
-      }
-    }
-
-    stage('DT workflow') {
-      environment {
-        ROBOT_LOGS_DIR="$WORKSPACE/RobotLogs/DTWorkflow"
-      }
-      steps {
-        sh '''
-           cd $WORKSPACE/kind-voltha/
-           WAIT_ON_DOWN=y DEPLOY_K8S=n ./voltha down
-
-           export EXTRA_HELM_FLAGS+="--set log_agent.enabled=False ${extraHelmFlags} "
-
-           IMAGES="adapter_open_onu_go"
-
-           for I in \$IMAGES
-           do
-             EXTRA_HELM_FLAGS+="--set images.\$I.tag=citest,images.\$I.pullPolicy=Never "
-           done
-
-           # Workflow-specific flags
-           export WITH_RADIUS=no
-           export WITH_EAPOL=no
-           export WITH_DHCP=no
-           export WITH_IGMP=no
-           export CONFIG_SADIS="external"
-           export BBSIM_CFG="configs/bbsim-sadis-dt.yaml"
-
-           # start logging
-           mkdir -p $WORKSPACE/dt
-           _TAG=kail-dt kail -n voltha -n default > $WORKSPACE/dt/onos-voltha-combined.log &
-
-           if [ "${branch}" != "master" ]; then
-             echo "on branch: ${branch}, sourcing kind-voltha/releases/${branch}"
-             source "$WORKSPACE/kind-voltha/releases/${branch}"
-           else
-             echo "on master, using default settings for kind-voltha"
-           fi
-
-           DEPLOY_K8S=n ./voltha up
-
-           mkdir -p $ROBOT_LOGS_DIR
-           export ROBOT_MISC_ARGS="-d $ROBOT_LOGS_DIR -e PowerSwitch"
-
-           # By default, all tests tagged 'sanityDt' are run.  This covers basic functionality
-           # like running through the DT workflow for a single subscriber.
-           export TARGET=sanity-kind-dt
-
-           # If the Gerrit comment contains a line with "functional tests" then run the full
-           # functional test suite.  This covers tests tagged either 'sanityDt' or 'functionalDt'.
-           # Note: Gerrit comment text will be prefixed by "Patch set n:" and a blank line
-           REGEX="functional tests"
-           if [[ "$GERRIT_EVENT_COMMENT_TEXT" =~ \$REGEX ]]; then
-             TARGET=functional-single-kind-dt
-           fi
-
-           make -C $WORKSPACE/voltha-system-tests \$TARGET || true
-
-           # stop logging
-           P_IDS="$(ps e -ww -A | grep "_TAG=kail-dt" | grep -v grep | awk '{print $1}')"
-           if [ -n "$P_IDS" ]; then
-             echo $P_IDS
-             for P_ID in $P_IDS; do
-               kill -9 $P_ID
-             done
-           fi
-
-           # get pods information
-           kubectl get pods -o wide --all-namespaces > $WORKSPACE/dt/pods.txt || true
-           '''
-      }
-    }
-
-    stage('ATT workflow') {
-      environment {
-        ROBOT_LOGS_DIR="$WORKSPACE/RobotLogs/ATTWorkflow"
-      }
-      steps {
-        sh '''
-           cd $WORKSPACE/kind-voltha/
-           WAIT_ON_DOWN=y DEPLOY_K8S=n ./voltha down
-
-           export EXTRA_HELM_FLAGS+="--set log_agent.enabled=False ${extraHelmFlags} "
-
-           IMAGES="adapter_open_onu_go"
-
-           for I in \$IMAGES
-           do
-             EXTRA_HELM_FLAGS+="--set images.\$I.tag=citest,images.\$I.pullPolicy=Never "
-           done
-
-           # Workflow-specific flags
-           export WITH_RADIUS=yes
-           export WITH_EAPOL=yes
-           export WITH_BBSIM=yes
-           export DEPLOY_K8S=yes
-           export CONFIG_SADIS="external"
-           export BBSIM_CFG="configs/bbsim-sadis-att.yaml"
-
-           if [ "${gerritProject}" = "voltctl" ]; then
-             export VOLTCTL_VERSION=$(cat $WORKSPACE/voltctl/VERSION)
-             cp $WORKSPACE/voltctl/voltctl $WORKSPACE/kind-voltha/bin/voltctl
-             md5sum $WORKSPACE/kind-voltha/bin/voltctl
-           fi
-
-           # start logging
-           mkdir -p $WORKSPACE/att
-           _TAG=kail-att kail -n voltha -n default > $WORKSPACE/att/onos-voltha-combined.log &
-
-           if [ "${branch}" != "master" ]; then
-             echo "on branch: ${branch}, sourcing kind-voltha/releases/${branch}"
-             source "$WORKSPACE/kind-voltha/releases/${branch}"
-           else
-             echo "on master, using default settings for kind-voltha"
-           fi
-
-           DEPLOY_K8S=n ./voltha up
-
-           mkdir -p $ROBOT_LOGS_DIR
-           export ROBOT_MISC_ARGS="-d $ROBOT_LOGS_DIR -e PowerSwitch"
-
-           # By default, all tests tagged 'sanity' are run.  This covers basic functionality
-           # like running through the ATT workflow for a single subscriber.
-           export TARGET=sanity-single-kind
-
-           # If the Gerrit comment contains a line with "functional tests" then run the full
-           # functional test suite.  This covers tests tagged either 'sanity' or 'functional'.
-           # Note: Gerrit comment text will be prefixed by "Patch set n:" and a blank line
-           REGEX="functional tests"
-           if [[ "$GERRIT_EVENT_COMMENT_TEXT" =~ \$REGEX ]]; then
-             TARGET=functional-single-kind
-           fi
-
-           make -C $WORKSPACE/voltha-system-tests \$TARGET || true
-
-           # stop logging
-           P_IDS="$(ps e -ww -A | grep "_TAG=kail-att" | grep -v grep | awk '{print $1}')"
-           if [ -n "$P_IDS" ]; then
-             echo $P_IDS
-             for P_ID in $P_IDS; do
-               kill -9 $P_ID
-             done
-           fi
-
-           # get pods information
-           kubectl get pods -o wide --all-namespaces > $WORKSPACE/att/pods.txt || true
-           '''
-      }
-    }
-
-    stage('TT workflow') {
-      environment {
-        ROBOT_LOGS_DIR="$WORKSPACE/RobotLogs/TTWorkflow"
-      }
-      steps {
-        sh '''
-           cd $WORKSPACE/kind-voltha/
-           WAIT_ON_DOWN=y DEPLOY_K8S=n ./voltha down
-
-           export EXTRA_HELM_FLAGS+="--set log_agent.enabled=False ${extraHelmFlags} "
-
-           IMAGES="adapter_open_onu_go"
-
-           for I in \$IMAGES
-           do
-             EXTRA_HELM_FLAGS+="--set images.\$I.tag=citest,images.\$I.pullPolicy=Never "
-           done
-
-           # Workflow-specific flags
-           export WITH_RADIUS=no
-           export WITH_EAPOL=no
-           export WITH_DHCP=yes
-           export WITH_IGMP=yes
-           export CONFIG_SADIS="external"
-           export BBSIM_CFG="configs/bbsim-sadis-tt.yaml"
-
-           # start logging
-           mkdir -p $WORKSPACE/tt
-           _TAG=kail-tt kail -n voltha -n default > $WORKSPACE/tt/onos-voltha-combined.log &
-
-           if [ "${branch}" != "master" ]; then
-             echo "on branch: ${branch}, sourcing kind-voltha/releases/${branch}"
-             source "$WORKSPACE/kind-voltha/releases/${branch}"
-           else
-             echo "on master, using default settings for kind-voltha"
-           fi
-
-           DEPLOY_K8S=n ./voltha up
-
-           mkdir -p $ROBOT_LOGS_DIR
-           export ROBOT_MISC_ARGS="-d $ROBOT_LOGS_DIR -e PowerSwitch"
-
-           # By default, all tests tagged 'sanityTt' are run.  This covers basic functionality
-           # like running through the TT workflow for a single subscriber.
-           export TARGET=sanity-kind-tt
-
-           # If the Gerrit comment contains a line with "functional tests" then run the full
-           # functional test suite.  This covers tests tagged either 'sanityTt' or 'functionalTt'.
-           # Note: Gerrit comment text will be prefixed by "Patch set n:" and a blank line
-           REGEX="functional tests"
-           if [[ "$GERRIT_EVENT_COMMENT_TEXT" =~ \$REGEX ]]; then
-             TARGET=functional-single-kind-tt
-           fi
-
-           make -C $WORKSPACE/voltha-system-tests \$TARGET || true
-
-           # stop logging
-           P_IDS="$(ps e -ww -A | grep "_TAG=kail-tt" | grep -v grep | awk '{print $1}')"
-           if [ -n "$P_IDS" ]; then
-             echo $P_IDS
-             for P_ID in $P_IDS; do
-               kill -9 $P_ID
-             done
-           fi
-
-           # get pods information
-           kubectl get pods -o wide --all-namespaces > $WORKSPACE/tt/pods.txt || true
-           '''
-      }
-    }
-  }
-  post {
-    always {
-      sh '''
-         set +e
-         # get pods information
-         kubectl get pods -o wide --all-namespaces
-         kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\n'}"
-         helm ls
-
-         sync
-         pkill kail || true
-         md5sum $WORKSPACE/kind-voltha/bin/voltctl
-
-         ## Pull out errors from log files
-         extract_errors_go() {
-           echo
-           echo "Error summary for $1:"
-           grep $1 $WORKSPACE/onos-voltha-combined.log | grep '"level":"error"' | cut -d ' ' -f 2- | jq -r '.msg'
-           echo
-         }
-
-         extract_errors_python() {
-           echo
-           echo "Error summary for $1:"
-           grep $1 $WORKSPACE/onos-voltha-combined.log | grep 'ERROR' | cut -d ' ' -f 2-
-           echo
-         }
-
-         extract_errors_go voltha-rw-core > $WORKSPACE/error-report.log || true
-         extract_errors_go adapter-open-olt >> $WORKSPACE/error-report.log || true
-         extract_errors_python adapter-open-onu >> $WORKSPACE/error-report.log || true
-         extract_errors_python voltha-ofagent >> $WORKSPACE/error-report.log || true
-
-         gzip $WORKSPACE/onos-voltha-combined.log || true
-         '''
-         step([$class: 'RobotPublisher',
-            disableArchiveOutput: false,
-            logFileName: 'RobotLogs/*/log*.html',
-            otherFiles: '',
-            outputFileName: 'RobotLogs/*/output*.xml',
-            outputPath: '.',
-            passThreshold: 100,
-            reportFileName: 'RobotLogs/*/report*.html',
-            unstableThreshold: 0]);
-         archiveArtifacts artifacts: '**/*.log,**/*.gz,**/*.txt'
-    }
-  }
-}
diff --git a/jjb/pipeline/voltha/master/openonu-go-periodic-test-bbsim.groovy b/jjb/pipeline/voltha/master/openonu-go-periodic-test-bbsim.groovy
new file mode 100644
index 0000000..1010e80
--- /dev/null
+++ b/jjb/pipeline/voltha/master/openonu-go-periodic-test-bbsim.groovy
@@ -0,0 +1,231 @@
+// Copyright 2021-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.
+
+// voltha-2.x e2e tests for openonu-go
+// uses bbsim to simulate OLT/ONUs
+
+library identifier: 'cord-jenkins-libraries@master',
+    retriever: modernSCM([
+      $class: 'GitSCMSource',
+      remote: 'https://gerrit.opencord.org/ci-management.git'
+])
+
+def clusterName = "kind-ci"
+
+def execute_test(testName, workflow, testTarget, outputDir, testSpecificHelmFlags = "") {
+  def infraNamespace = "default"
+  def volthaNamespace = "voltha"
+  def robotLogsDir = "RobotLogs"
+  stage('Cleanup') {
+    timeout(15) {
+      script {
+        helmTeardown(["default", infraNamespace, volthaNamespace])
+      }
+      timeout(1) {
+        sh returnStdout: false, script: '''
+        # remove orphaned port-forward from different namespaces
+        ps aux | grep port-forw | grep -v grep | awk '{print $2}' | xargs --no-run-if-empty kill -9
+        '''
+      }
+      // stop logging
+      sh """
+        P_IDS="\$(ps e -ww -A | grep "_TAG=kail-${workflow}" | grep -v grep | awk '{print \$1}')"
+        if [ -n "\$P_IDS" ]; then
+          echo \$P_IDS
+          for P_ID in \$P_IDS; do
+            kill -9 \$P_ID
+          done
+        fi
+      """
+    }
+  }
+  stage('Deploy Voltha') {
+    timeout(20) {
+      script {
+
+        // if we're downloading a voltha-helm-charts patch, then install from a local copy of the charts
+        def localCharts = false
+        if (volthaHelmChartsChange != "") {
+          localCharts = true
+        }
+
+        // NOTE temporary workaround expose ONOS node ports
+        def localHelmFlags = extraHelmFlags + " --set onos-classic.onosSshPort=30115 " +
+        " --set onos-classic.onosApiPort=30120 " +
+        " --set onos-classic.onosOfPort=31653 " +
+        " --set onos-classic.individualOpenFlowNodePorts=true " + testSpecificHelmFlags
+        volthaDeploy([
+          infraNamespace: infraNamespace,
+          volthaNamespace: volthaNamespace,
+          workflow: workflow.toLowerCase(),
+          extraHelmFlags: localHelmFlags,
+          localCharts: localCharts,
+          bbsimReplica: olts.toInteger(),
+          dockerRegistry: "mirror.registry.opennetworking.org"
+          ])
+      }
+      // start logging
+      sh """
+      mkdir -p ${outputDir}
+      _TAG=kail-${workflow} kail -n infra -n voltha > ${outputDir}/onos-voltha-combined.log &
+      """
+      sh """
+      JENKINS_NODE_COOKIE="dontKillMe" bash -c "while true; do kubectl port-forward --address 0.0.0.0 -n ${volthaNamespace} svc/voltha-voltha-api 55555:55555; done"&
+      JENKINS_NODE_COOKIE="dontKillMe" bash -c "while true; do kubectl port-forward --address 0.0.0.0 -n ${infraNamespace} svc/voltha-infra-etcd 2379:2379; done"&
+      JENKINS_NODE_COOKIE="dontKillMe" bash -c "while true; do kubectl port-forward --address 0.0.0.0 -n ${infraNamespace} svc/voltha-infra-kafka 9092:9092; done"&
+      ps aux | grep port-forward
+      """
+      getPodsInfo("${outputDir}")
+    }
+  }
+  stage('Run test ' + testTarget + ' on ' + workflow + ' workFlow') {
+    sh """
+    mkdir -p $WORKSPACE/${robotLogsDir}/${testName}
+    export ROBOT_MISC_ARGS="-d $WORKSPACE/${robotLogsDir}/${testName} "
+    ROBOT_MISC_ARGS+="-v ONOS_SSH_PORT:30115 -v ONOS_REST_PORT:30120"
+    export KVSTOREPREFIX=voltha/voltha_voltha
+
+    make -C $WORKSPACE/voltha-system-tests ${testTarget} || true
+    """
+  }
+}
+
+pipeline {
+
+  /* no label, executor is determined by JJB */
+  agent {
+    label "${params.buildNode}"
+  }
+  options {
+    timeout(time: 130, unit: 'MINUTES')
+  }
+  environment {
+    KUBECONFIG="$HOME/.kube/kind-${clusterName}"
+    VOLTCONFIG="$HOME/.volt/config"
+    PATH="$PATH:$WORKSPACE/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
+    ROBOT_MISC_ARGS="-e PowerSwitch ${params.extraRobotArgs}"
+    DIAGS_PROFILE="VOLTHA_PROFILE"
+  }
+  stages {
+    stage('Download Code') {
+      steps {
+        getVolthaCode([
+          branch: "${branch}",
+          gerritProject: "${gerritProject}",
+          gerritRefspec: "${gerritRefspec}",
+          volthaSystemTestsChange: "${volthaSystemTestsChange}",
+          volthaHelmChartsChange: "${volthaHelmChartsChange}",
+        ])
+      }
+    }
+    stage('Create K8s Cluster') {
+      steps {
+        script {
+          def clusterExists = sh returnStdout: true, script: """
+          kind get clusters | grep ${clusterName} | wc -l
+          """
+          if (clusterExists.trim() == "0") {
+            createKubernetesCluster([nodes: 3, name: clusterName])
+          }
+        }
+      }
+    }
+
+    stage('Run E2E Tests 1t1gem') {
+      steps {
+        execute_test("1t1gem", "att", makeTarget, "$WORKSPACE/1t1gem")
+       }
+     }
+
+    stage('Run E2E Tests 1t4gem') {
+      steps {
+        execute_test("1t4gem", "att", make1t4gemTestTarget, "$WORKSPACE/1t4gem")
+       }
+     }
+
+    stage('Run E2E Tests 1t8gem') {
+      steps {
+        execute_test("1t8gem", "att", make1t8gemTestTarget, "$WORKSPACE/1t8gem")
+      }
+    }
+
+    stage('Run MIB Upload Tests') {
+      when { beforeAgent true; expression { return "${olts}" == "1" } }
+      steps {
+        script {
+          def mibUploadHelmFlags = "--set pon=2,onu=2,controlledActivation=only-onu "
+          execute_test("1t8gem", "att", "mib-upload-templating-openonu-go-adapter-test", "$WORKSPACE/mibupload", mibUploadHelmFlags)
+        }
+      }
+    }
+
+    stage('Reconcile DT workflow') {
+      steps {
+        script {
+          execute_test("ReconcileDT", "dt", makeReconcileDtTestTarget, "$WORKSPACE/ReconcileDT")
+        }
+      }
+    }
+
+    stage('Reconcile ATT workflow') {
+      steps {
+        script {
+          execute_test("ReconcileATT", "att", makeReconcileTestTarget, "$WORKSPACE/ReconcileATT")
+        }
+      }
+    }
+
+    stage('Reconcile TT workflow') {
+      steps {
+        script {
+          execute_test("ReconcileTT", "tt", makeReconcileTtTestTarget, "$WORKSPACE/ReconcileTT")
+        }
+      }
+    }
+  }
+  post {
+    aborted {
+      getPodsInfo("$WORKSPACE/failed")
+      sh """
+      kubectl logs -n voltha -l app.kubernetes.io/part-of=voltha > $WORKSPACE/failed/voltha.log
+      """
+      archiveArtifacts artifacts: '**/*.log,**/*.txt,**/*.html'
+    }
+    failure {
+      getPodsInfo("$WORKSPACE/failed")
+      sh """
+      kubectl logs -n voltha -l app.kubernetes.io/part-of=voltha > $WORKSPACE/failed/voltha.log
+      """
+      archiveArtifacts artifacts: '**/*.log,**/*.txt,**/*.html'
+    }
+    always {
+      step([$class: 'RobotPublisher',
+        disableArchiveOutput: false,
+        logFileName: "RobotLogs/*/log*.html",
+        otherFiles: '',
+        outputFileName: "RobotLogs/*/output*.xml",
+        outputPath: '.',
+        passThreshold: 100,
+        reportFileName: "RobotLogs/*/report*.html",
+        unstableThreshold: 0]);
+      archiveArtifacts artifacts: '**/*.log,**/*.gz,**/*.txt,**/*.html'
+      sh '''
+        sync
+        pkill kail || true
+        which voltctl
+        md5sum $(which voltctl)
+      '''
+    }
+  }
+}
diff --git a/jjb/pipeline/voltha-openonu-go-test-bbsim.groovy b/jjb/pipeline/voltha/voltha-2.7/voltha-openonu-go-test-bbsim.groovy
similarity index 100%
rename from jjb/pipeline/voltha-openonu-go-test-bbsim.groovy
rename to jjb/pipeline/voltha/voltha-2.7/voltha-openonu-go-test-bbsim.groovy
diff --git a/jjb/voltha-e2e.yaml b/jjb/voltha-e2e.yaml
index 6b89909..bb42b7b 100755
--- a/jjb/voltha-e2e.yaml
+++ b/jjb/voltha-e2e.yaml
@@ -21,7 +21,7 @@
     make-target-reconciletttest: reconcile-openonu-go-adapter-test-tt
 
     jobs:
-      - 'voltha-periodic-test':
+      - 'voltha-periodic-test-kind-voltha-based':
           name: 'periodic-voltha-test-bbsim'
           pipeline-script: 'voltha-nightly-tests-bbsim.groovy'
           build-node: 'qct-pod4-node2'
@@ -37,7 +37,7 @@
           pons: 2
           time-trigger: "H H/23 * * *"
 
-      - 'voltha-periodic-test':
+      - 'voltha-periodic-test-kind-voltha-based':
           name: 'periodic-voltha-multiple-olts-test-bbsim'
           pipeline-script: 'voltha-nightly-tests-bbsim.groovy'
           build-node: 'qct-pod4-node2'
@@ -53,7 +53,7 @@
           pons: 2
           time-trigger: "H H/23 * * *"
 
-      - 'voltha-periodic-test':
+      - 'voltha-periodic-test-kind-voltha-based':
           name: 'periodic-voltha-multiple-olts-test-bbsim-2.7'
           pipeline-script: 'voltha-nightly-tests-bbsim.groovy'
           build-node: 'qct-pod4-node2'
@@ -71,21 +71,19 @@
 
       - 'voltha-periodic-test':
           name: 'periodic-voltha-openonu-go-test-bbsim'
-          pipeline-script: 'voltha-openonu-go-test-bbsim.groovy'
-          build-node: 'ubuntu18.04-basebuild-8c-15g'
-          make-target: openonu-go-adapter-test
-          make-target-1t4gemtest: 1t4gem-openonu-go-adapter-test
-          make-target-1t8gemtest: 1t8gem-openonu-go-adapter-test
-          make-target-reconciletest: reconcile-openonu-go-adapter-test
-          make-target-reconciledttest: reconcile-openonu-go-adapter-test-dt
-          make-target-reconciletttest: reconcile-openonu-go-adapter-test-tt
-          withAlarms: false
           code-branch: 'master'
           time-trigger: "H H/12 * * *"
 
       - 'voltha-periodic-test':
+          name: 'patchset-voltha-openonu-go-test-bbsim'
+          trigger-comment: "voltha test openonu"
+          code-branch: '$GERRIT_BRANCH'
+          gerrit-project: '$GERRIT_PROJECT'
+          gerritRefspec: '$GERRIT_REFSPEC'
+
+      - 'voltha-periodic-test-kind-voltha-based':
           name: 'periodic-voltha-openonu-go-test-bbsim-2.7'
-          pipeline-script: 'voltha-openonu-go-test-bbsim.groovy'
+          pipeline-script: 'voltha/voltha-2.7/voltha-openonu-go-test-bbsim.groovy'
           build-node: 'ubuntu18.04-basebuild-8c-15g'
           make-target: openonu-go-adapter-test
           make-target-1t4gemtest: 1t4gem-openonu-go-adapter-test
@@ -99,24 +97,35 @@
 
       - 'voltha-periodic-test':
           name: 'periodic-voltha-multiple-olts-openonu-go-test-bbsim'
-          pipeline-script: 'voltha-openonu-go-test-bbsim.groovy'
-          build-node: 'ubuntu18.04-basebuild-8c-15g'
-          make-target: openonu-go-adapter-multi-olt-test
+          code-branch: 'master'
+          olts: 2
+          onus: 2
+          pons: 2
           make-target-1t4gemtest: 1t4gem-openonu-go-adapter-multi-olt-test
           make-target-1t8gemtest: 1t8gem-openonu-go-adapter-multi-olt-test
           make-target-reconciletest: reconcile-openonu-go-adapter-multi-olt-test
           make-target-reconciledttest: reconcile-openonu-go-adapter-multi-olt-test-dt
           make-target-reconciletttest: reconcile-openonu-go-adapter-multi-olt-test-tt
-          withAlarms: false
-          code-branch: 'master'
-          olts: 2
-          onus: 2
-          pons: 2
           time-trigger: "H H/12 * * *"
 
       - 'voltha-periodic-test':
+          name: 'patchset-voltha-multiple-olts-openonu-go-test-bbsim'
+          trigger-comment: "voltha test openonu multiolt"
+          code-branch: '$GERRIT_BRANCH'
+          gerrit-project: '$GERRIT_PROJECT'
+          gerritRefspec: '$GERRIT_REFSPEC'
+          make-target-1t4gemtest: 1t4gem-openonu-go-adapter-multi-olt-test
+          make-target-1t8gemtest: 1t8gem-openonu-go-adapter-multi-olt-test
+          make-target-reconciletest: reconcile-openonu-go-adapter-multi-olt-test
+          make-target-reconciledttest: reconcile-openonu-go-adapter-multi-olt-test-dt
+          make-target-reconciletttest: reconcile-openonu-go-adapter-multi-olt-test-tt
+          olts: 2
+          onus: 2
+          pons: 2
+
+      - 'voltha-periodic-test-kind-voltha-based':
           name: 'periodic-voltha-multiple-olts-openonu-go-test-bbsim-2.7'
-          pipeline-script: 'voltha-openonu-go-test-bbsim.groovy'
+          pipeline-script: 'voltha/voltha-2.7/voltha-openonu-go-test-bbsim.groovy'
           build-node: 'ubuntu18.04-basebuild-8c-15g'
           make-target: openonu-go-adapter-multi-olt-test
           make-target-1t4gemtest: 1t4gem-openonu-go-adapter-multi-olt-test
@@ -131,7 +140,7 @@
           pons: 2
           time-trigger: "H H/23 * * *"
 
-      - 'voltha-periodic-test':
+      - 'voltha-periodic-test-kind-voltha-based':
           name: 'periodic-voltha-test-DMI'
           pipeline-script: 'voltha-DMI-bbsim-tests.groovy'
           build-node: 'qct-pod4-node2'
@@ -140,7 +149,7 @@
           code-branch: 'master'
           time-trigger: "H H/23 * * *"
 
-      - 'voltha-periodic-test':
+      - 'voltha-periodic-test-kind-voltha-based':
           name: 'periodic-voltha-test-DMI-2.7'
           pipeline-script: 'voltha-DMI-bbsim-tests.groovy'
           build-node: 'qct-pod4-node2'
@@ -149,7 +158,7 @@
           code-branch: 'voltha-2.7'
           time-trigger: "H H/23 * * *"
 
-      - 'voltha-periodic-test':
+      - 'voltha-periodic-test-kind-voltha-based':
           name: 'periodic-voltha-test-bbsim-2.7'
           pipeline-script: 'voltha-nightly-tests-bbsim.groovy'
           build-node: 'qct-pod4-node2'
@@ -163,7 +172,7 @@
           pons: 2
           time-trigger: "H H * * *"
 
-      - 'voltha-periodic-test':
+      - 'voltha-periodic-test-kind-voltha-based':
           name: 'periodic-voltha-etcd-test'
           pipeline-script: 'voltha-system-test-bbsim.groovy'
           build-node: 'ubuntu18.04-basebuild-4c-8g'
@@ -173,7 +182,7 @@
           pons: 2
           time-trigger: "H H/12 * * *"
 
-      - 'voltha-periodic-test':
+      - 'voltha-periodic-test-kind-voltha-based':
           name: 'periodic-voltha-etcd-test-2.7'
           pipeline-script: 'voltha-system-test-bbsim.groovy'
           build-node: 'ubuntu18.04-basebuild-4c-8g'
@@ -184,7 +193,7 @@
           time-trigger: "H H/12 * * *"
 
 
-      - 'voltha-periodic-test':
+      - 'voltha-periodic-test-kind-voltha-based':
           name: 'periodic-voltha-sanity-test-multi-runs'
           pipeline-script: 'voltha-go-multi-tests.groovy'
           build-node: 'qct-pod4-node2'
@@ -195,7 +204,7 @@
           test-runs: 5
           time-trigger: "H H/23 * * *"
 
-      - 'voltha-periodic-test':
+      - 'voltha-periodic-test-kind-voltha-based':
           name: 'periodic-voltha-sanity-test-multi-runs-2.7'
           pipeline-script: 'voltha-go-multi-tests.groovy'
           build-node: 'qct-pod4-node2'
@@ -206,7 +215,7 @@
           test-runs: 5
           time-trigger: "H H/23 * * *"
 
-      - 'voltha-periodic-test':
+      - 'voltha-periodic-test-kind-voltha-based':
           name: 'nightly-voltha-DTflow-sanity-test'
           build-node: 'ubuntu18.04-basebuild-4c-8g'
           code-branch: 'master'
@@ -285,14 +294,182 @@
           default-test-args: '-i sanityORDeleteOLT -i PowerSwitch -X'
 
 - job-template:
+  # as of now this template is only used by the openonu-go periodic test,
+  # in order to use for multiple pipelines we should change it so that
+  # we can specify a list of make targets and iterate over that
     id: 'voltha-periodic-test'
     name: '{name}'
+    pipeline-script: 'voltha/master/openonu-go-periodic-test-bbsim.groovy'
+    build-node: 'ubuntu18.04-basebuild-8c-15g'
+    test-runs: 1
+    robot-args: ''
+    gerrit-project: ''
+    gerritRefspec: ''
+    work-flow: ''
+    volthaSystemTestsChange: ''
+    volthaHelmChartsChange: ''
+    extraHelmFlags: ''
+    sandbox: true
+    olts: 1
+    make-target: openonu-go-adapter-test
+    make-target-1t4gemtest: 1t4gem-openonu-go-adapter-test
+    make-target-1t8gemtest: 1t8gem-openonu-go-adapter-test
+    make-target-reconciletest: reconcile-openonu-go-adapter-test
+    make-target-reconciledttest: reconcile-openonu-go-adapter-test-dt
+    make-target-reconciletttest: reconcile-openonu-go-adapter-test-tt
+    trigger-comment: vv7CBoQQYYonvaN8xcru
+    time-trigger: 0 0 29 2 *
+
+    description: |
+      <!-- Managed by Jenkins Job Builder -->
+      Created by {id} job-template from ci-management/jjb/voltha-e2e.yaml  <br /><br />
+      E2E Validation for Voltha 2.X
+
+    properties:
+      - cord-infra-properties:
+          build-days-to-keep: '{big-build-days-to-keep}'
+          artifact-num-to-keep: '{big-artifact-num-to-keep}'
+
+    wrappers:
+      - lf-infra-wrappers:
+          build-timeout: '{build-timeout}'
+          jenkins-ssh-credential: '{jenkins-ssh-credential}'
+
+    parameters:
+      - string:
+          name: buildNode
+          default: '{build-node}'
+          description: 'Name of the Jenkins node to run the job on'
+
+      - string:
+          name: extraHelmFlags
+          default: '--set onu={onus},pon={pons},{extraHelmFlags}'
+          description: 'Helm flags to pass to ./voltha up'
+
+      # TODO is there a better way to manage the test targets?
+      # maybe we can use a comma separated list?
+      - string:
+          name: makeTarget
+          default: '{make-target}'
+          description: 'Makefile target to invoke during test'
+
+      - string:
+          name: makeFailtestTarget
+          default: '{make-target-failtest}'
+          description: 'Makefile target to invoke during failure/based test'
+
+      - string:
+          name: makeMultiOltTarget
+          default: '{make-target-multipleolt}'
+          description: 'Makefile target to invoke during multiple olt test'
+
+      - string:
+          name: makeErrortestTarget
+          default: '{make-target-errortest}'
+          description: 'Makefile target to invoke during error test'
+
+      - string:
+          name: makeAlarmtestTarget
+          default: '{make-target-alarmtest}'
+          description: 'Makefile target to invoke during alarm test'
+
+      - string:
+          name: make1t4gemTestTarget
+          default: '{make-target-1t4gemtest}'
+          description: 'Makefile target to invoke during 1t4gem test'
+
+      - string:
+          name: make1t8gemTestTarget
+          default: '{make-target-1t8gemtest}'
+          description: 'Makefile target to invoke during 1t8gem test'
+
+      - string:
+          name: makeReconcileTestTarget
+          default: '{make-target-reconciletest}'
+          description: 'Makefile target to invoke during reconcile test'
+
+      - string:
+          name: makeReconcileDtTestTarget
+          default: '{make-target-reconciledttest}'
+          description: 'Makefile target to invoke during reconcile dt test'
+
+      - string:
+          name: makeReconcileTtTestTarget
+          default: '{make-target-reconciletttest}'
+          description: 'Makefile target to invoke during reconcile tt test'
+
+      - string:
+          name: branch
+          default: '{code-branch}'
+          description: 'Repo manifest branch for code checkout'
+
+      - string:
+          name: gerritProject
+          default: '{gerrit-project}'
+          description: 'Name of the Gerrit project'
+
+      - string:
+          name: gerritRefspec
+          default: ''
+          description: 'PatchSet REFSPEC in Gerrit, example value: "refs/changes/79/18779/13"'
+
+      - string:
+          name: extraRobotArgs
+          default: '{robot-args}'
+          description: 'Arguments to pass to robot'
+
+      - string:
+          name: volthaSystemTestsChange
+          default: '{volthaSystemTestsChange}'
+          description: 'Download a change for gerrit in the voltha-system-tests repo, example value: "refs/changes/79/18779/13"'
+
+      - string:
+          name: volthaHelmChartsChange
+          default: '{volthaHelmChartsChange}'
+          description: 'Download a change for gerrit in the voltha-helm-charts repo, example value: "refs/changes/79/18779/13"'
+
+      - string:
+          name: olts
+          default: '{olts}'
+          description: 'How many BBSim instances to run'
+
+    project-type: pipeline
+    concurrent: true
+
+    dsl: !include-raw-escape: pipeline/{pipeline-script}
+
+    triggers:
+      # patchset jobs will set this to "0 0 29 2 *" (feb 29th, it's once every 4 years)
+      - timed: |
+                 TZ=America/Los_Angeles
+                 {time-trigger}
+      # periodic jobs will set this to vv7CBoQQYYonvaN8xcru (hopefully no-one will comment with that)
+      - gerrit:
+          server-name: '{gerrit-server-name}'
+          silent-start: false
+          successful-message: "PASSED openonu-go test"
+          failure-message: "FAILED openonu-go test"
+          unstable-message: "UNSTABLE openonu-go test"
+          trigger-on:
+            - comment-added-contains-event:
+                comment-contains-value: '.*{trigger-comment}.*'
+          projects:
+            - project-compare-type: REG_EXP
+              project-pattern: '^(voltha-go|voltha-openolt-adapter|voltha-openonu-adapter-go|ofagent-go|voltha-onos|bbsim)$'
+              branches:
+                - branch-compare-type: REG_EXP
+                  branch-pattern: '{all-branches-regexp}'
+
+- job-template:
+    id: 'voltha-periodic-test-kind-voltha-based'
+    name: '{name}'
     pipeline-script: 'voltha-go-tests.groovy'
     test-runs: 1
     robot-args: ''
     gerrit-project: ''
     work-flow: ''
     volthaSystemTestsChange: ''
+    volthaHelmChartsChange: ''
     kindVolthaChange: ''
     extraHelmFlags: ''
     sandbox: true
