Merge "Use the ONF registry as the docker hub's mirror site"
diff --git a/jjb/cord-test/nightly-build-pipeline.yaml b/jjb/cord-test/nightly-build-pipeline.yaml
index c81b093..d270b13 100644
--- a/jjb/cord-test/nightly-build-pipeline.yaml
+++ b/jjb/cord-test/nightly-build-pipeline.yaml
@@ -152,7 +152,7 @@
                   Created from job-template {id} from ci-management/jjb/cord-test/nightly-build-pipeline.yaml<br />
                   Created by Suchitra Vemuri, suchitra@opennetworking.org <br />
                   Copyright (c) 2017 Open Networking Foundation (ONF)
-    disabled: false
+    disabled: '{disable-job}'
 
     <<: *test-pipe-job-boiler-plate
 
@@ -259,6 +259,8 @@
 - job-template:
     name: 'build_{profile}_{config-pod}_{branch}_test'
     id: build_pod_test
+
+    disabled: '{disable-job}'
     description: |
                   Post Tests on {config-pod} triggered by build_{config-pod}_{branch}, using {Jenkinsfile}<br /><br />
                   Created from job-template {id} from ci-management/jjb/cord-test/nightly-build-pipeline.yaml <br />
diff --git a/jjb/cord-test/voltha.yaml b/jjb/cord-test/voltha.yaml
index 7a66696..e228560 100644
--- a/jjb/cord-test/voltha.yaml
+++ b/jjb/cord-test/voltha.yaml
@@ -28,7 +28,7 @@
           config-pod: 'flex-ocp-cord'
           release: 'master'
           branch: 'master'
-          num-of-openonu: '2'
+          num-of-openonu: '1'
           num-of-onos: '3'
           num-of-atomix: '3'
           test-repo: 'voltha-system-tests'
@@ -69,7 +69,7 @@
           config-pod: 'flex-ocp-cord'
           release: 'master'
           branch: 'master'
-          num-of-openonu: '2'
+          num-of-openonu: '1'
           num-of-onos: '3'
           num-of-atomix: '3'
           test-repo: 'voltha-system-tests'
@@ -92,36 +92,9 @@
       - 'build_voltha_pod_release_timer':
           build-node: 'qa-testvm-pod'
           config-pod: 'flex-ocp-cord'
-          'disable-job': true
-          release: '2.4'
-          branch: 'voltha-2.4'
-          num-of-openonu: '2'
-          num-of-onos: '3'
-          num-of-atomix: '3'
-          test-repo: 'voltha-system-tests'
-          Jenkinsfile: 'Jenkinsfile-voltha-build'
-          configurePod: true
-          profile: '1T4GEM'
-          time: '1'
-
-      # flex pod1 test job - released versions: uses tech profile on voltha branch
-      - 'build_voltha_pod_test':
-          build-node: 'qa-testvm-pod'
-          config-pod: 'flex-ocp-cord'
-          'disable-job': true
-          release: '2.4'
-          branch: 'voltha-2.4'
-          power-switch: True
-          test-repo: 'voltha-system-tests'
-          profile: '1T4GEM'
-
-      # flex OCP pod with olt/onu - Released versions Default tech profile and timer based job
-      - 'build_voltha_pod_release_timer':
-          build-node: 'qa-testvm-pod'
-          config-pod: 'flex-ocp-cord'
-          release: '2.5'
-          branch: 'voltha-2.5'
-          num-of-openonu: '2'
+          release: '2.6'
+          branch: 'voltha-2.6'
+          num-of-openonu: '1'
           num-of-onos: '3'
           num-of-atomix: '3'
           test-repo: 'voltha-system-tests'
@@ -135,20 +108,20 @@
           build-node: 'qa-testvm-pod'
           config-pod: 'flex-ocp-cord'
           'disable-job': false
-          release: '2.5'
-          branch: 'voltha-2.5'
+          release: '2.6'
+          branch: 'voltha-2.6'
           power-switch: True
           test-repo: 'voltha-system-tests'
           profile: '1T4GEM'
 
+
      # flex OCP pod with olt/onu - Released versions Default tech profile and timer based job
       - 'build_voltha_pod_release_timer':
           build-node: 'qa-testvm-pod'
           config-pod: 'flex-ocp-cord'
-          'disable-job': true
-          release: '2.4'
-          branch: 'voltha-2.4'
-          num-of-openonu: '2'
+          release: '2.6'
+          branch: 'voltha-2.6'
+          num-of-openonu: '1'
           num-of-onos: '3'
           num-of-atomix: '3'
           name-extension: '_TT'
@@ -163,39 +136,8 @@
       - 'build_voltha_pod_test':
           build-node: 'qa-testvm-pod'
           config-pod: 'flex-ocp-cord'
-          'disable-job': true
-          release: '2.4'
-          branch: 'voltha-2.4'
-          name-extension: '_TT'
-          work-flow: 'TT'
-          power-switch: True
-          pipeline-script: 'voltha-tt-physical-functional-tests.groovy'
-          test-repo: 'voltha-system-tests'
-          profile: 'TP'
-
-     # flex OCP pod with olt/onu - Released versions Default tech profile and timer based job
-      - 'build_voltha_pod_release_timer':
-          build-node: 'qa-testvm-pod'
-          config-pod: 'flex-ocp-cord'
-          release: '2.5'
-          branch: 'voltha-2.5'
-          num-of-openonu: '2'
-          num-of-onos: '3'
-          num-of-atomix: '3'
-          name-extension: '_TT'
-          work-flow: 'TT'
-          test-repo: 'voltha-system-tests'
-          Jenkinsfile: 'Jenkinsfile-voltha-build'
-          configurePod: true
-          profile: 'TP'
-          time: '22'
-
-      # flex pod1 test job - released versions: uses tech profile on voltha branch
-      - 'build_voltha_pod_test':
-          build-node: 'qa-testvm-pod'
-          config-pod: 'flex-ocp-cord'
-          release: '2.5'
-          branch: 'voltha-2.5'
+          release: '2.6'
+          branch: 'voltha-2.6'
           name-extension: '_TT'
           work-flow: 'TT'
           power-switch: True
@@ -209,7 +151,7 @@
           config-pod: 'flex-ocp-cord'
           release: 'master'
           branch: 'master'
-          num-of-openonu: '2'
+          num-of-openonu: '1'
           num-of-onos: '3'
           num-of-atomix: '3'
           name-extension: '_TT'
@@ -237,30 +179,58 @@
      # Flex pod with xgs-pon olt/onu - master 1T4GEM tech profile and openonu go and timer based job
       - 'build_voltha_pod_release_timer':
           build-node: 'qa-testvm-pod'
-          config-pod: 'flex-ocp-cord-openonugo'
-          release: 'master'
-          branch: 'master'
+          config-pod: 'flex-ocp-cord-openonupy'
+          release: '2.6'
+          branch: 'voltha-2.6'
           num-of-onos: '3'
           num-of-atomix: '3'
-          name-extension: '_openonugo'
+          name-extension: '_openonupy'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-build'
           configurePod: true
           profile: '1T4GEM'
-          in-band-management: true
           time: '18'
 
 
       # Flex POD test job - master versions, uses 1T4GEM tech profile and openonu go on voltha branch
       - 'build_voltha_pod_test':
           build-node: 'qa-testvm-pod'
-          config-pod: 'flex-ocp-cord-openonugo'
-          name-extension: '_openonugo'
-          release: 'master'
-          branch: 'master'
+          config-pod: 'flex-ocp-cord-openonupy'
+          name-extension: '_openonupy'
+          release: '2.6'
+          branch: 'voltha-2.6'
           test-repo: 'voltha-system-tests'
           profile: '1T4GEM'
-          in-band-management: true
+          power-switch: True
+
+     # Flex pod with xgs-pon olt/onu - master TT workflow openonu go and timer based job
+      - 'build_voltha_pod_release_timer':
+          build-node: 'qa-testvm-pod'
+          config-pod: 'flex-ocp-cord-openonupy'
+          release: '2.6'
+          branch: 'voltha-2.6'
+          num-of-onos: '3'
+          num-of-atomix: '3'
+          name-extension: '_TT_openonupy'
+          work-flow: 'TT'
+          test-repo: 'voltha-system-tests'
+          Jenkinsfile: 'Jenkinsfile-voltha-build'
+          configurePod: true
+          profile: 'TP'
+          time: '14'
+
+
+      # Flex POD test job - master versions, TT workflow and openonu go on voltha branch
+      - 'build_voltha_pod_test':
+          build-node: 'qa-testvm-pod'
+          config-pod: 'flex-ocp-cord-openonupy'
+          name-extension: '_TT_openonupy'
+          release: '2.6'
+          branch: 'voltha-2.6'
+          test-repo: 'voltha-system-tests'
+          work-flow: 'TT'
+          pipeline-script: 'voltha-tt-physical-functional-tests.groovy'
+          profile: 'TP'
           power-switch: True
 
       # Menlo pod with olt/onu - Default tech profile and timer based job
@@ -299,7 +269,7 @@
           config-pod: 'onf-demo-pod'
           release: 'master'
           branch: 'master'
-          num-of-openonu: '2'
+          num-of-openonu: '1'
           num-of-onos: '3'
           num-of-atomix: '3'
           test-repo: 'voltha-system-tests'
@@ -326,7 +296,7 @@
           config-pod: 'onf-demo-pod'
           release: 'master'
           branch: 'master'
-          num-of-openonu: '2'
+          num-of-openonu: '1'
           num-of-onos: '3'
           num-of-atomix: '3'
           name-extension: '_DT'
@@ -353,49 +323,15 @@
           power-switch: True
 
 
-      # Menlo pod with olt/onu - voltha-2.4  branch,  Default tech profile and timer based job
-      - 'build_voltha_pod_release_timer':
-          build-node: 'menlo-demo-pod'
-          config-pod: 'onf-demo-pod'
-          'disable-job': true
-          release: '2.4'
-          branch: 'voltha-2.4'
-          name-extension: '_DT'
-          work-flow: 'DT'
-          num-of-openonu: '2'
-          num-of-onos: '3'
-          num-of-atomix: '3'
-          test-repo: 'voltha-system-tests'
-          Jenkinsfile: 'Jenkinsfile-voltha-build'
-          configurePod: true
-          profile: '1T8GEM'
-          VolthaEtcdPort: '9999'
-          in-band-management: true
-          time: '7'
-
-      # Menlo pod test job - uses tech profile on voltha branch
-      - 'build_voltha_pod_test':
-          build-node: 'menlo-demo-pod'
-          config-pod: 'onf-demo-pod'
-          'disable-job': true
-          release: '2.4'
-          branch: 'voltha-2.4'
-          name-extension: '_DT'
-          work-flow: 'DT'
-          test-repo: 'voltha-system-tests'
-          profile: '1T8GEM'
-          pipeline-script: 'voltha-dt-physical-functional-tests.groovy'
-          power-switch: True
-
       # Menlo pod with olt/onu - voltha-2.5  branch,  Default tech profile and timer based job
       - 'build_voltha_pod_release_timer':
           build-node: 'menlo-demo-pod'
           config-pod: 'onf-demo-pod'
-          release: '2.5'
-          branch: 'voltha-2.5'
+          release: '2.6'
+          branch: 'voltha-2.6'
           name-extension: '_DT'
           work-flow: 'DT'
-          num-of-openonu: '2'
+          num-of-openonu: '1'
           num-of-onos: '3'
           num-of-atomix: '3'
           test-repo: 'voltha-system-tests'
@@ -410,8 +346,8 @@
       - 'build_voltha_pod_test':
           build-node: 'menlo-demo-pod'
           config-pod: 'onf-demo-pod'
-          release: '2.5'
-          branch: 'voltha-2.5'
+          release: '2.6'
+          branch: 'voltha-2.6'
           name-extension: '_DT'
           work-flow: 'DT'
           test-repo: 'voltha-system-tests'
@@ -429,7 +365,7 @@
           Jenkinsfile: 'Jenkinsfile-voltha-build'
           configurePod: true
           profile: '1T4GEM'
-          num-of-openonu: '2'
+          num-of-openonu: '1'
           num-of-onos: '3'
           num-of-atomix: '3'
           in-band-management: true
@@ -447,7 +383,7 @@
           config-pod: 'onf-demo-pod'
           release: 'master'
           branch: 'master'
-          num-of-openonu: '2'
+          num-of-openonu: '1'
           num-of-onos: '3'
           num-of-atomix: '3'
           test-repo: 'voltha-system-tests'
@@ -465,11 +401,40 @@
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-test'
 
+
+     # Soak pod with xgs-pon olt/onu - master 1T4GEM tech profile and openonu go and timer based job
+      - 'build_voltha_pod_release_timer':
+          build-node: 'menlo-soak-pod'
+          config-pod: 'onf-soak-pod-openonugo'
+          'disable-job': true
+          release: 'master'
+          branch: 'master'
+          name-extension: '_openonugo'
+          test-repo: 'voltha-system-tests'
+          Jenkinsfile: 'Jenkinsfile-voltha-build'
+          configurePod: true
+          profile: '1T4GEM'
+          time: '1'
+
+
+      # Soak POD test job - master versions, uses 1T4GEM tech profile and openonu go on voltha branch
+      - 'build_voltha_pod_test':
+          build-node: 'menlo-soak-pod'
+          config-pod: 'onf-soak-pod-openonugo'
+          'disable-job': true
+          name-extension: '_openonugo'
+          release: 'master'
+          branch: 'master'
+          test-repo: 'voltha-system-tests'
+          profile: '1T4GEM'
+
+      # Menlo pod with olt/onu - Default tech profile and timer based job
       # ONF Menlo Soak POD build job - voltha-master branch
       # FIXME once the soak-pod is back use 'build_voltha_pod_release_timer'
       - 'build_pod_manual':
           build-node: 'menlo-soak-pod'
           config-pod: 'onf-soak-pod'
+          'disable-job': true
           release: 'master'
           branch: 'master'
           profile: '1T8GEM'
@@ -484,6 +449,7 @@
       - 'build_pod_test':
           build-node: 'menlo-soak-pod'
           config-pod: 'onf-soak-pod'
+          'disable-job': true
           profile: 'Default'
           branch: 'master'
           test-repo: 'voltha-system-tests'
@@ -494,6 +460,7 @@
       - 'build_voltha_pod_soak_test':
           build-node: 'menlo-soak-pod'
           config-pod: 'onf-soak-pod'
+          'disable-job': true
           profile: '1T8GEM'
           branch: 'master'
           release: 'master'
@@ -509,6 +476,7 @@
       - 'build_voltha_pod_soak_test':
           build-node: 'menlo-soak-pod'
           config-pod: 'onf-soak-pod'
+          'disable-job': true
           profile: '1T8GEM'
           branch: 'master'
           release: 'master'
@@ -524,6 +492,7 @@
       - 'build_voltha_pod_soak_test':
           build-node: 'menlo-soak-pod'
           config-pod: 'onf-soak-pod'
+          'disable-job': true
           profile: '1T8GEM'
           branch: 'master'
           release: 'master'
@@ -559,8 +528,8 @@
       - 'build_voltha_pod_release_timer':
           build-node: 'infosys-test-pod'
           config-pod: 'infosys-pod'
-          release: '2.5'
-          branch: 'voltha-2.5'
+          release: '2.6'
+          branch: 'voltha-2.6'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-build'
           configurePod: true
@@ -571,8 +540,8 @@
       - 'build_voltha_pod_test':
           build-node: 'infosys-test-pod'
           config-pod: 'infosys-pod'
-          release: '2.5'
-          branch: 'voltha-2.5'
+          release: '2.6'
+          branch: 'voltha-2.6'
           test-repo: 'voltha-system-tests'
           profile: 'Default'
 
@@ -583,7 +552,7 @@
           config-pod: 'infosys-pod'
           release: 'master'
           branch: 'master'
-          num-of-openonu: '2'
+          num-of-openonu: '1'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-build'
           profile: 'Default'
@@ -604,7 +573,7 @@
           branch: 'master'
           name-extension: '_DT'
           work-flow: 'DT'
-          num-of-openonu: '2'
+          num-of-openonu: '1'
           num-of-onos: '3'
           num-of-atomix: '3'
           test-repo: 'voltha-system-tests'
@@ -631,9 +600,9 @@
       - 'build_voltha_pod_release_timer':
           build-node: 'dt-berlin-community-pod'
           config-pod: 'dt-berlin-pod'
-          release: '2.5'
-          branch: 'voltha-2.5'
-          num-of-openonu: '2'
+          release: '2.6'
+          branch: 'voltha-2.6'
+          num-of-openonu: '1'
           num-of-onos: '3'
           num-of-atomix: '3'
           test-repo: 'voltha-system-tests'
@@ -647,36 +616,8 @@
       - 'build_voltha_pod_test':
           build-node: 'dt-berlin-community-pod'
           config-pod: 'dt-berlin-pod'
-          release: '2.5'
-          branch: 'voltha-2.5'
-          test-repo: 'voltha-system-tests'
-          profile: 'Default'
-          power-switch: True
-
-     # Berlin pod with olt/onu - voltha-2.4 Default tech profile and timer based job
-      - 'build_voltha_pod_release_timer':
-          build-node: 'dt-berlin-community-pod'
-          config-pod: 'dt-berlin-pod'
-          'disable-job': true
-          release: '2.4'
-          branch: 'voltha-2.4'
-          num-of-openonu: '2'
-          num-of-onos: '3'
-          num-of-atomix: '3'
-          test-repo: 'voltha-system-tests'
-          Jenkinsfile: 'Jenkinsfile-voltha-build'
-          configurePod: true
-          profile: 'Default'
-          time: '21'
-
-
-      # Berlin POD test job - master versions: uses tech profile on voltha branch
-      - 'build_voltha_pod_test':
-          build-node: 'dt-berlin-community-pod'
-          config-pod: 'dt-berlin-pod'
-          'disable-job': true
-          release: '2.4'
-          branch: 'voltha-2.4'
+          release: '2.6'
+          branch: 'voltha-2.6'
           test-repo: 'voltha-system-tests'
           profile: 'Default'
           power-switch: True
@@ -687,7 +628,7 @@
           config-pod: 'dt-berlin-pod-gpon'
           release: 'master'
           branch: 'master'
-          num-of-openonu: '2'
+          num-of-openonu: '1'
           num-of-onos: '3'
           num-of-atomix: '3'
           name-extension: '_DT'
@@ -716,9 +657,9 @@
       - 'build_voltha_pod_release_timer':
           build-node: 'dt-berlin-community-pod'
           config-pod: 'dt-berlin-pod-gpon'
-          release: '2.5'
-          branch: 'voltha-2.5'
-          num-of-openonu: '2'
+          release: '2.6'
+          branch: 'voltha-2.6'
+          num-of-openonu: '1'
           num-of-onos: '3'
           num-of-atomix: '3'
           name-extension: '_DT'
@@ -736,8 +677,8 @@
           config-pod: 'dt-berlin-pod-gpon'
           name-extension: '_DT'
           work-flow: 'DT'
-          release: '2.5'
-          branch: 'voltha-2.5'
+          release: '2.6'
+          branch: 'voltha-2.6'
           test-repo: 'voltha-system-tests'
           profile: '1T8GEM'
           power-switch: True
@@ -747,6 +688,7 @@
       - 'build_voltha_pod_release_timer':
           build-node: 'dt-berlin-community-pod'
           config-pod: 'dt-berlin-pod-openonugo'
+          'disable-job': true
           release: 'master'
           branch: 'master'
           num-of-onos: '3'
@@ -764,6 +706,7 @@
       - 'build_voltha_pod_test':
           build-node: 'dt-berlin-community-pod'
           config-pod: 'dt-berlin-pod-openonugo'
+          'disable-job': true
           name-extension: '_DT_openonugo'
           work-flow: 'DT'
           release: 'master'
@@ -773,46 +716,13 @@
           power-switch: True
           pipeline-script: 'voltha-dt-physical-functional-tests.groovy'
 
-     # Berlin pod with gpon olt/onu - voltha-2.4 1T8GEM tech profile and timer based job
-      - 'build_voltha_pod_release_timer':
-          build-node: 'dt-berlin-community-pod'
-          config-pod: 'dt-berlin-pod-gpon'
-          'disable-job': true
-          release: '2.4'
-          branch: 'voltha-2.4'
-          num-of-openonu: '2'
-          num-of-onos: '3'
-          num-of-atomix: '3'
-          name-extension: '_DT'
-          work-flow: 'DT'
-          test-repo: 'voltha-system-tests'
-          Jenkinsfile: 'Jenkinsfile-voltha-build'
-          configurePod: true
-          profile: '1T8GEM'
-          time: '1'
-
-
-      # Berlin POD test job - voltha-2.4 versions: uses 1T8GEM tech profile on voltha branch
-      - 'build_voltha_pod_test':
-          build-node: 'dt-berlin-community-pod'
-          config-pod: 'dt-berlin-pod-gpon'
-          'disable-job': true
-          name-extension: '_DT'
-          work-flow: 'DT'
-          release: '2.4'
-          branch: 'voltha-2.4'
-          test-repo: 'voltha-system-tests'
-          profile: '1T8GEM'
-          power-switch: True
-          pipeline-script: 'voltha-dt-physical-functional-tests.groovy'
-
       # Berlin pod with olt/onu - manual test job, voltha master build job
       - 'build_pod_manual':
           build-node: 'dt-berlin-community-pod'
           config-pod: 'dt-berlin-pod-gpon'
           release: 'master'
           branch: 'master'
-          num-of-openonu: '2'
+          num-of-openonu: '1'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-build'
           profile: 'Default'
diff --git a/jjb/defaults.yaml b/jjb/defaults.yaml
index 77b33a3..d887d32 100644
--- a/jjb/defaults.yaml
+++ b/jjb/defaults.yaml
@@ -98,7 +98,7 @@
 
     # matching repos that should be version tagged by the version-tag job
     # (basically the same as imagebuilder projects + helm charts + tools
-    version-tag-projects-regexp: '^(?!aether)(xos.*|.*helm-charts|automation-tools|cord-tester|chameleon|rcord|mcord|ecord|acordion|addressmanager|epc-service|exampleservice|fabric.*|globalxos|hippie-oss|hss_db|hypercache|internetemulator|kubernetes-service|monitoring|olt-service|onos-service|openstack|progran|sdn-controller|simpleexampleservice|templateservice|vEE|vEG|vBBU|venb|vHSS|vMME|vnaas|vPGWC|vPGWU|vrouter|vsg|vsg-hw|vSGW|vSM|vspgwc|vspgwu|vtn-service|vtr|.*-workflow-driver|ves-agent|voltha-bbsim|openolt|sadis-server|kafka-topic-exporter|pyvoltha||plyxproto|voltha-protos|alpine-grpc-base|cordctl|voltha-go|voltha-onos|device-management|cord-workflow.*|voltha-system-tests|openairinterface|omec-.*|bbsim|omci-sim|ponsim|pppoel2relay|voltha-api-server|aaa|config|dhcpl2relay|igmp|igmpproxy|kafka-onos|mcast|olt|sadis|vtn|voltha-.*-adapter.*|voltha-lib-go|voltha-python-base|voltha-docker-tools|mn-stratum-siab|ofagent.*|bng|voltctl|openolt-scale-tester|nem-ondemand-proxy|multifabric|openolt-test|omci-lib-go|kind-voltha|voltha-docs|mac-learning|goloxi|device-management-interface)$'
+    version-tag-projects-regexp: '^(?!aether)(xos.*|.*helm-charts|automation-tools|cord-tester|chameleon|rcord|mcord|ecord|acordion|addressmanager|epc-service|exampleservice|fabric.*|globalxos|hippie-oss|hss_db|hypercache|internetemulator|kubernetes-service|monitoring|olt-service|onos-service|openstack|progran|sdn-controller|simpleexampleservice|templateservice|vEE|vEG|vBBU|venb|vHSS|vMME|vnaas|vPGWC|vPGWU|vrouter|vsg|vsg-hw|vSGW|vSM|vspgwc|vspgwu|vtn-service|vtr|.*-workflow-driver|ves-agent|voltha-bbsim|openolt|sadis-server|kafka-topic-exporter|pyvoltha||plyxproto|voltha-protos|alpine-grpc-base|cordctl|voltha-go|voltha-onos|device-management|cord-workflow.*|voltha-system-tests|openairinterface|omec-.*|bbsim|omci-sim|ponsim|pppoe.*|voltha-api-server|aaa|config|dhcpl2relay|igmp|igmpproxy|kafka-onos|mcast|olt|sadis|vtn|voltha-.*-adapter.*|voltha-lib-go|voltha-python-base|voltha-docker-tools|mn-stratum-siab|ofagent.*|bng|voltctl|openolt-scale-tester|nem-ondemand-proxy|multifabric|openolt-test|omci-lib-go|kind-voltha|voltha-docs|mac-learning|goloxi|device-management-interface|bbsim-sadis-server)$'
 
     # List of all repos that contribute to the CORD guide
     cord-guide-projects-regexp: '^(att-workflow-driver|cord-tester|cordctl|exampleservice|fabric|fabric-crossconnect|hippie-oss|kubernetes-service|olt-service|onos-service|openolt|openstack|rcord|simpleexampleservice|vrouter|vtn-service|xos|xos-gui|xos-tosca)$'
diff --git a/jjb/omec-ci.yaml b/jjb/omec-ci.yaml
index 5c13e45..8f468b4 100644
--- a/jjb/omec-ci.yaml
+++ b/jjb/omec-ci.yaml
@@ -175,6 +175,9 @@
       - 'omec-reuse':
           pipeline-file: 'omec-reuse-scan.groovy'
           build-node: 'ubuntu16.04-basebuild-1c-2g'
+      - 'omec-cppcheck':
+          pipeline-file: 'omec-cppcheck.groovy'
+          build-node: 'ubuntu16.04-basebuild-1c-2g'
       - 'docker-publish-github':
           build-timeout: 60
           docker-repo: 'omecproject'
@@ -473,6 +476,65 @@
     project-type: pipeline
     dsl: !include-raw-escape: pipeline/{pipeline-file}
 
+# cppcheck
+- job-template:
+    id: 'omec-cppcheck'
+    name: 'omec_{project}-cppcheck'
+    project-type: pipeline
+
+    description: |
+      <!-- Managed by Jenkins Job Builder -->
+      Created by {id} job-template from ci-management/jjb/omec-ci.yaml<br />
+
+    properties:
+      - cord-infra-properties:
+          build-days-to-keep: '{build-days-to-keep}'
+          artifact-num-to-keep: '{artifact-num-to-keep}'
+      - github:
+          url: 'https://github.com/{github-organization}/{project}'
+
+    wrappers:
+      - lf-infra-wrappers:
+          build-timeout: '{build-timeout}'
+          jenkins-ssh-credential: '{jenkins-ssh-credential}'
+
+    parameters:
+      - string:
+          name: ghprbPullId
+          default: '$ghprbPullId'
+          description: 'Pull request number to fetch changes from. Leave blank to run manually.'
+
+      - string:
+          name: branch
+          default: '$ghprbTargetBranch'
+          description: 'Branch to run. Only used when manually run.'
+
+      - string:
+          name: buildNode
+          default: '{build-node}'
+          description: 'Name of the Jenkins executor node to run the job on'
+
+      - string:
+          name: project
+          default: '{project}'
+          description: 'Name of the project'
+
+      - string:
+          name: ghprbGhRepository
+          default: '{github-organization}/{project}'
+          description: 'Repository of the project.'
+
+    triggers:
+      - cord-infra-github-pr-trigger:
+          github_pr_org_list: '{obj:github_pr_org_list}'
+          github_pr_auth_id: '{github_pr_auth_id}'
+          status_context: 'CORD Jenkins - cppcheck Verification'
+
+    concurrent: false
+
+    project-type: pipeline
+    dsl: !include-raw-escape: pipeline/{pipeline-file}
+
 # tests
 - job-template:
     id: 'omec-tc1'
@@ -926,7 +988,12 @@
       - string:
           name: logSince
           default: '{log-since}'
-          description: 'Only upload logs newer than a relative duration e.g. 1h'
+          description: 'Only upload logs newer than a relative duration e.g. 1h. Leave empty if logSinceTime is specified'
+
+      - string:
+          name: logSinceTime
+          default: ''
+          description: 'Only upload logs newer than a date (RFC3339). Leave empty if logSince is specified'
 
     concurrent: false
 
diff --git a/jjb/pipeline/bbsim-scale.groovy b/jjb/pipeline/bbsim-scale.groovy
index 5af7063..a24d455 100644
--- a/jjb/pipeline/bbsim-scale.groovy
+++ b/jjb/pipeline/bbsim-scale.groovy
@@ -13,7 +13,7 @@
 
   environment {
       VOLTHA_LOG_LEVEL="DEBUG"
-      TYPE="minimal"
+      NAME="minimal"
       WITH_RADIUS="y"
       WITH_BBSIM="y"
       INSTALL_ONOS_APPS="y"
diff --git a/jjb/pipeline/device-management-mock-tests.groovy b/jjb/pipeline/device-management-mock-tests.groovy
index 6884144..ac575a5 100644
--- a/jjb/pipeline/device-management-mock-tests.groovy
+++ b/jjb/pipeline/device-management-mock-tests.groovy
@@ -29,7 +29,7 @@
     KUBECONFIG="$HOME/.kube/kind-config-voltha-minimal"
     VOLTCONFIG="$HOME/.volt/config-minimal"
     PATH="$WORKSPACE/voltha/kind-voltha/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
-    TYPE="minimal"
+    NAME="minimal"
     FANCY=0
     WITH_SIM_ADAPTERS="n"
     WITH_RADIUS="y"
@@ -111,7 +111,7 @@
       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-\$TYPE --nodes voltha-\$TYPE-worker,voltha-\$TYPE-worker2; done
+             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-worker,voltha-\$NAME-worker2; done
            '''
       }
     }
diff --git a/jjb/pipeline/device-management-physical-build-and-tests.groovy b/jjb/pipeline/device-management-physical-build-and-tests.groovy
index 6c183ff..6579cc4 100644
--- a/jjb/pipeline/device-management-physical-build-and-tests.groovy
+++ b/jjb/pipeline/device-management-physical-build-and-tests.groovy
@@ -35,7 +35,7 @@
     KUBECONFIG="$HOME/.kube/kind-config-voltha-minimal"
     VOLTCONFIG="$HOME/.volt/config-minimal"
     PATH="$WORKSPACE/voltha/kind-voltha/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
-    TYPE="minimal"
+    NAME="minimal"
     FANCY=0
     //VOL-2194 ONOS SSH and REST ports hardcoded to 30115/30120 in tests
     ONOS_SSH_PORT=30115
@@ -166,7 +166,7 @@
       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-\$TYPE --nodes voltha-\$TYPE-worker,voltha-\$TYPE-worker2; done
+             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-worker,voltha-\$NAME-worker2; done
            '''
       }
     }
diff --git a/jjb/pipeline/omec-cppcheck.groovy b/jjb/pipeline/omec-cppcheck.groovy
new file mode 100644
index 0000000..31d8c4d
--- /dev/null
+++ b/jjb/pipeline/omec-cppcheck.groovy
@@ -0,0 +1,86 @@
+// Copyright 2020-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.
+
+// omec-reuse-scan.groovy
+// checks an omec-project repo against reuse in a docker container
+
+pipeline {
+
+    agent {
+        docker {
+            image "registry.aetherproject.org/ci/cppcheck-verify:latest"
+            label "${params.buildNode}"
+            registryUrl "https://registry.aetherproject.org/"
+            registryCredentialsId "registry.aetherproject.org"
+        }
+    }
+
+    options {
+        timeout(15)
+    }
+
+    stages {
+        stage ("Clean Workspace") {
+            steps {
+                sh 'rm -rf *'
+            }
+        }
+
+        stage ("Checkout Pull Request") {
+            when {
+                expression {return params.ghprbPullId != ""}
+            }
+            steps {
+                checkout([
+                    $class: 'GitSCM',
+                    userRemoteConfigs: [[ url: "https://github.com/${params.ghprbGhRepository}", refspec: "pull/${params.ghprbPullId}/head" ]],
+                    extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: "${params.project}"]],
+                    ],
+                )
+            }
+        }
+
+        stage ("Checkout Repo (manual)") {
+            when {
+                expression {return params.ghprbPullId == ""}
+            }
+            steps {
+                checkout([
+                    $class: 'GitSCM',
+                    userRemoteConfigs: [[ url: "https://github.com/${params.ghprbGhRepository}" ]],
+                    extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: "${params.project}"]],
+                    ],
+                )
+            }
+        }
+
+        stage("Run cppcheck"){
+            steps {
+                script {
+                    sh  """
+                        cd ${params.project}
+                        if [ ! -z ${params.ghprbPullId} ]
+                        then
+                          git checkout FETCH_HEAD
+                        else
+                          git checkout ${params.branch}
+                        fi
+                        git show
+                        make cppcheck
+                        """
+                }
+            }
+        }
+    }
+}
diff --git a/jjb/pipeline/voltha-bbsim-tests.groovy b/jjb/pipeline/voltha-bbsim-tests.groovy
index b990a45..fec9c23 100644
--- a/jjb/pipeline/voltha-bbsim-tests.groovy
+++ b/jjb/pipeline/voltha-bbsim-tests.groovy
@@ -213,6 +213,10 @@
              echo "on master, using default settings for kind-voltha"
            fi
 
+           if [[ "${gerritProject}" == voltha-helm-charts ]]; then
+             export EXTRA_HELM_FLAGS+="--set defaults.image_tag=null "
+           fi
+
            # Workflow-specific flags
            export WITH_RADIUS=yes
            export WITH_BBSIM=yes
@@ -272,7 +276,10 @@
            fi
 
            printenv
-           kail -n voltha -n default > $WORKSPACE/onos-voltha-combined.log &
+
+           # start logging
+           mkdir -p $WORKSPACE/att
+           _TAG=kail-att kail -n voltha -n default > $WORKSPACE/att/onos-voltha-combined.log &
 
            cd $WORKSPACE/kind-voltha/
            ./voltha up
@@ -297,6 +304,20 @@
            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 > $WORKSPACE/att/pods.txt || true
+           kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\n'}" | sort | uniq | tee $WORKSPACE/att/pod-images.txt || true
+           kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.imageID}{'\\n'}" | sort | uniq | tee $WORKSPACE/att/pod-imagesId.txt || true
            '''
       }
     }
@@ -319,6 +340,14 @@
            export CONFIG_SADIS="external"
            export BBSIM_CFG="configs/bbsim-sadis-dt.yaml"
 
+           if [[ "${gerritProject}" == voltha-helm-charts ]]; then
+             export EXTRA_HELM_FLAGS+="--set defaults.image_tag=null "
+           fi
+
+           # start logging
+           mkdir -p $WORKSPACE/dt
+           _TAG=kail-dt kail -n voltha -n default > $WORKSPACE/dt/onos-voltha-combined.log &
+
            DEPLOY_K8S=n ./voltha up
 
            mkdir -p $ROBOT_LOGS_DIR
@@ -337,6 +366,20 @@
            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 > $WORKSPACE/dt/pods.txt || true
+           kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\n'}" | sort | uniq | tee $WORKSPACE/dt/pod-images.txt || true
+           kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.imageID}{'\\n'}" | sort | uniq | tee $WORKSPACE/dt/pod-imagesId.txt || true
            '''
       }
     }
@@ -359,6 +402,14 @@
            export CONFIG_SADIS="external"
            export BBSIM_CFG="configs/bbsim-sadis-tt.yaml"
 
+           if [[ "${gerritProject}" == voltha-helm-charts ]]; then
+             export EXTRA_HELM_FLAGS+="--set defaults.image_tag=null "
+           fi
+
+           # start logging
+           mkdir -p $WORKSPACE/tt
+           _TAG=kail-tt kail -n voltha -n default > $WORKSPACE/tt/onos-voltha-combined.log &
+
            DEPLOY_K8S=n ./voltha up
 
            mkdir -p $ROBOT_LOGS_DIR
@@ -377,6 +428,20 @@
            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 > $WORKSPACE/tt/pods.txt || true
+           kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\n'}" | sort | uniq | tee $WORKSPACE/tt/pod-images.txt || true
+           kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.imageID}{'\\n'}" | sort | uniq | tee $WORKSPACE/tt/pod-imagesId.txt || true
            '''
       }
     }
@@ -387,14 +452,8 @@
       sh '''
          set +e
          cp $WORKSPACE/kind-voltha/install-$NAME.log $WORKSPACE/
-         kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\n'}" | sort | uniq
-         kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.imageID}{'\\n'}" | sort | uniq
-         kubectl get nodes -o wide
-         kubectl get pods -o wide
-         kubectl get pods -n voltha -o wide
 
          sync
-         pkill kail || true
          md5sum $WORKSPACE/kind-voltha/bin/voltctl
 
          ## Pull out errors from log files
@@ -417,7 +476,9 @@
          extract_errors_python adapter-open-onu >> $WORKSPACE/error-report.log
          extract_errors_python voltha-ofagent >> $WORKSPACE/error-report.log
 
-         gzip $WORKSPACE/onos-voltha-combined.log
+         gzip $WORKSPACE/att/onos-voltha-combined.log
+         gzip $WORKSPACE/dt/onos-voltha-combined.log
+         gzip $WORKSPACE/tt/onos-voltha-combined.log
          '''
          step([$class: 'RobotPublisher',
             disableArchiveOutput: false,
@@ -428,7 +489,7 @@
             passThreshold: 100,
             reportFileName: 'RobotLogs/*/report*.html',
             unstableThreshold: 0]);
-         archiveArtifacts artifacts: '*.log,*.gz'
+         archiveArtifacts artifacts: '*.log,**/*.log,**/*.gz,*.gz'
     }
   }
 }
diff --git a/jjb/pipeline/voltha-dt-physical-build-and-tests.groovy b/jjb/pipeline/voltha-dt-physical-build-and-tests.groovy
index da7bb3f..8b74eb6 100644
--- a/jjb/pipeline/voltha-dt-physical-build-and-tests.groovy
+++ b/jjb/pipeline/voltha-dt-physical-build-and-tests.groovy
@@ -44,7 +44,7 @@
     KUBECONFIG="$HOME/.kube/kind-config-voltha-minimal"
     VOLTCONFIG="$HOME/.volt/config-minimal"
     PATH="$WORKSPACE/voltha/kind-voltha/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
-    TYPE="minimal"
+    NAME="minimal"
     FANCY=0
     //VOL-2194 ONOS SSH and REST ports hardcoded to 30115/30120 in tests
     ONOS_SSH_PORT=30115
@@ -154,7 +154,7 @@
           for image in \$(docker images -f "reference=*/*citest" --format "{{.Repository}}")
           do
             echo "Pushing \$image to nodes"
-            kind load docker-image \$image:citest --name voltha-\$TYPE --nodes voltha-\$TYPE-worker,voltha-\$TYPE-worker2
+            kind load docker-image \$image:citest --name voltha-\$NAME --nodes voltha-\$NAME-worker,voltha-\$NAME-worker2
             docker rmi \$image:citest \$image:latest || true
           done
         fi
diff --git a/jjb/pipeline/voltha-dt-physical-functional-tests.groovy b/jjb/pipeline/voltha-dt-physical-functional-tests.groovy
index c1f16c0..566d245 100644
--- a/jjb/pipeline/voltha-dt-physical-functional-tests.groovy
+++ b/jjb/pipeline/voltha-dt-physical-functional-tests.groovy
@@ -227,6 +227,26 @@
       }
     }
 
+    stage('Multiple OLT Tests') {
+      environment {
+        ROBOT_CONFIG_FILE="$WORKSPACE/${configBaseDir}/${configDeploymentDir}/${configFileName}-DT.yaml"
+        ROBOT_FILE="Voltha_DT_MultiOLT_Tests.robot"
+        ROBOT_LOGS_DIR="$WORKSPACE/RobotLogs/dt-workflow/MultipleOLTScenarios"
+      }
+      steps {
+        sh """
+        mkdir -p $ROBOT_LOGS_DIR
+        if ( ${powerSwitch} ); then
+             export ROBOT_MISC_ARGS="--removekeywords wuks -L TRACE -i functionalDt -i PowerSwitch -e bbsim -e notready -d $ROBOT_LOGS_DIR -v POD_NAME:${configFileName} -v KUBERNETES_CONFIGS_DIR:$WORKSPACE/${configBaseDir}/${configKubernetesDir} -v container_log_dir:$WORKSPACE"
+        else
+             export ROBOT_MISC_ARGS="--removekeywords wuks -L TRACE -i functionalDt -e PowerSwitch -e bbsim -e notready -d $ROBOT_LOGS_DIR -v POD_NAME:${configFileName} -v KUBERNETES_CONFIGS_DIR:$WORKSPACE/${configBaseDir}/${configKubernetesDir} -v container_log_dir:$WORKSPACE"
+        fi
+        make -C $WORKSPACE/voltha-system-tests voltha-dt-test || true
+        """
+      }
+    }
+
+
     stage('Error Scenario Tests') {
       environment {
         ROBOT_CONFIG_FILE="$WORKSPACE/${configBaseDir}/${configDeploymentDir}/${configFileName}-DT.yaml"
diff --git a/jjb/pipeline/voltha-go-multi-tests.groovy b/jjb/pipeline/voltha-go-multi-tests.groovy
index 60d0ab9..984d4cb 100644
--- a/jjb/pipeline/voltha-go-multi-tests.groovy
+++ b/jjb/pipeline/voltha-go-multi-tests.groovy
@@ -29,7 +29,7 @@
     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"
-    TYPE="minimal"
+    NAME="minimal"
     FANCY=0
     WITH_SIM_ADAPTERS="n"
     WITH_RADIUS="y"
diff --git a/jjb/pipeline/voltha-go-tests.groovy b/jjb/pipeline/voltha-go-tests.groovy
index bafca75..ab68755 100644
--- a/jjb/pipeline/voltha-go-tests.groovy
+++ b/jjb/pipeline/voltha-go-tests.groovy
@@ -29,7 +29,7 @@
     KUBECONFIG="$HOME/.kube/kind-config-voltha-minimal"
     VOLTCONFIG="$HOME/.volt/config-minimal"
     PATH="$HOME/kind-voltha/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
-    TYPE="minimal"
+    NAME="minimal"
     FANCY=0
     WITH_SIM_ADAPTERS="no"
     WITH_RADIUS="yes"
diff --git a/jjb/pipeline/voltha-nightly-tests-bbsim.groovy b/jjb/pipeline/voltha-nightly-tests-bbsim.groovy
index 606ebcc..2017c89 100644
--- a/jjb/pipeline/voltha-nightly-tests-bbsim.groovy
+++ b/jjb/pipeline/voltha-nightly-tests-bbsim.groovy
@@ -23,13 +23,13 @@
     label "${params.buildNode}"
   }
   options {
-      timeout(time: 90, unit: 'MINUTES')
+      timeout(time: 190, unit: 'MINUTES')
   }
   environment {
     KUBECONFIG="$HOME/.kube/kind-config-voltha-minimal"
     VOLTCONFIG="$HOME/.volt/config-minimal"
     PATH="$PATH:$WORKSPACE/kind-voltha/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
-    TYPE="minimal"
+    NAME="minimal"
     FANCY=0
     WITH_SIM_ADAPTERS="no"
     WITH_RADIUS="yes"
diff --git a/jjb/pipeline/voltha-openonu-go-tests.groovy b/jjb/pipeline/voltha-openonu-go-tests.groovy
index 2c5bfbb..e41a9a2 100755
--- a/jjb/pipeline/voltha-openonu-go-tests.groovy
+++ b/jjb/pipeline/voltha-openonu-go-tests.groovy
@@ -29,7 +29,7 @@
     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"
-    TYPE="minimal"
+    NAME="minimal"
     FANCY=0
     WITH_SIM_ADAPTERS="n"
     WITH_RADIUS="y"
@@ -155,7 +155,7 @@
       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-\$TYPE --nodes voltha-\$TYPE-worker,voltha-\$TYPE-worker2; done
+           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-worker,voltha-\$NAME-worker2; done
            '''
       }
     }
@@ -173,7 +173,7 @@
 
            cd $WORKSPACE/kind-voltha/
            echo \$EXTRA_HELM_FLAGS
-           kail -n voltha -n default > $WORKSPACE/onos-voltha-combined.log &
+
            ./voltha up
            '''
       }
@@ -185,15 +185,47 @@
       }
       steps {
         sh '''
-           mkdir -p $ROBOT_LOGS_DIR
-           export ROBOT_MISC_ARGS="-d $ROBOT_LOGS_DIR"
-           export TARGET_DEFAULT=openonu-go-adapter-test
+          # start logging
+          mkdir -p $WORKSPACE/1t1gem
+          _TAG=kail-1t1gem kail -n voltha -n default > $WORKSPACE/1t1gem/onos-voltha-combined.log &
 
-           make -C $WORKSPACE/voltha-system-tests \$TARGET_DEFAULT || true
+          mkdir -p $ROBOT_LOGS_DIR/1t1gem
+          export ROBOT_MISC_ARGS="-d $ROBOT_LOGS_DIR/1t1gem"
+          export TARGET_DEFAULT=openonu-go-adapter-test
 
-           export TARGET_1T8GEM=1t8gem-openonu-go-adapter-test
+          make -C $WORKSPACE/voltha-system-tests \$TARGET_DEFAULT || true
 
-           make -C $WORKSPACE/voltha-system-tests \$TARGET_1T8GEM || true
+          # stop logging
+          P_IDS="$(ps e -ww -A | grep "_TAG=kail-1t1gem" | 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/1t1gem/pods.txt || true
+
+          _TAG=kail-1t8gem kail -n voltha -n default > $WORKSPACE/1t8gem/onos-voltha-combined.log &
+
+          mkdir -p $ROBOT_LOGS_DIR/1t8gem
+          export ROBOT_MISC_ARGS="-d $ROBOT_LOGS_DIR/1t8gem"
+          export TARGET_1T8GEM=1t8gem-openonu-go-adapter-test
+
+          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
         '''
       }
     }
@@ -219,6 +251,10 @@
              EXTRA_HELM_FLAGS+="--set images.\$I.tag=citest,images.\$I.pullPolicy=Never "
            done
 
+           # start logging
+           mkdir -p $WORKSPACE/mib
+           _TAG=kail-mib kail -n voltha -n default > $WORKSPACE/mib/onos-voltha-combined.log &
+
            DEPLOY_K8S=n ./voltha up
 
            mkdir -p $ROBOT_LOGS_DIR
@@ -226,6 +262,18 @@
            export TARGET_DEFAULT=mib-upload-templating-openonu-go-adapter-test
 
            make -C $WORKSPACE/voltha-system-tests \$TARGET_DEFAULT || true
+
+           # stop logging
+           P_IDS="$(ps e -ww -A | grep "_TAG=kail-mib" | 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/mib/pods.txt || true
         '''
       }
     }
@@ -257,6 +305,10 @@
            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 &
+
            DEPLOY_K8S=n ./voltha up
 
            mkdir -p $ROBOT_LOGS_DIR
@@ -275,6 +327,18 @@
            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
            '''
       }
     }
@@ -311,6 +375,10 @@
              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 &
+
            DEPLOY_K8S=n ./voltha up
 
            mkdir -p $ROBOT_LOGS_DIR
@@ -329,6 +397,82 @@
            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 use_openonu_adapter_go=true,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 &
+
+           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
            '''
       }
     }
@@ -337,12 +481,8 @@
     always {
       sh '''
          set +e
-         cp $WORKSPACE/kind-voltha/install-minimal.log $WORKSPACE/
          kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\n'}" | sort | uniq
          kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.imageID}{'\\n'}" | sort | uniq
-         kubectl get nodes -o wide
-         kubectl get pods -o wide
-         kubectl get pods -n voltha -o wide
 
          sync
          pkill kail || true
@@ -391,7 +531,7 @@
             passThreshold: 100,
             reportFileName: 'RobotLogs/*/report*.html',
             unstableThreshold: 0]);
-         archiveArtifacts artifacts: '*.log,*.gz'
+         archiveArtifacts artifacts: '**/*.log,**/*.gz,**/*.txt'
     }
   }
 }
diff --git a/jjb/pipeline/voltha-physical-build-and-tests.groovy b/jjb/pipeline/voltha-physical-build-and-tests.groovy
index 5f1bfff..306a426 100644
--- a/jjb/pipeline/voltha-physical-build-and-tests.groovy
+++ b/jjb/pipeline/voltha-physical-build-and-tests.groovy
@@ -44,7 +44,7 @@
     KUBECONFIG="$HOME/.kube/kind-config-voltha-minimal"
     VOLTCONFIG="$HOME/.volt/config-minimal"
     PATH="$WORKSPACE/voltha/kind-voltha/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
-    TYPE="minimal"
+    NAME="minimal"
     FANCY=0
     //VOL-2194 ONOS SSH and REST ports hardcoded to 30115/30120 in tests
     ONOS_SSH_PORT=30115
@@ -154,7 +154,7 @@
           for image in \$(docker images -f "reference=*/*citest" --format "{{.Repository}}")
           do
             echo "Pushing \$image to nodes"
-            kind load docker-image \$image:citest --name voltha-\$TYPE --nodes voltha-\$TYPE-worker,voltha-\$TYPE-worker2
+            kind load docker-image \$image:citest --name voltha-\$NAME --nodes voltha-\$NAME-worker,voltha-\$NAME-worker2
             docker rmi \$image:citest \$image:latest || true
           done
         fi
diff --git a/jjb/pipeline/voltha-scale-multi-stack.groovy b/jjb/pipeline/voltha-scale-multi-stack.groovy
index 65ad3ec..6f053c7 100644
--- a/jjb/pipeline/voltha-scale-multi-stack.groovy
+++ b/jjb/pipeline/voltha-scale-multi-stack.groovy
@@ -40,11 +40,6 @@
     WITH_KAFKA="yes"
     WITH_ETCD="yes"
     VOLTHA_ETCD_PORT=9999
-
-    // VOLTHA namespaces are defined at runtime depending on the stack we're installing
-    // VOLTHA_NS="default"
-    // ADAPTER_NS="default"
-    // BBSIM_NS="default"
     INFRA_NS="infra"
 
     // configurable options
@@ -104,8 +99,6 @@
 
             test -e $WORKSPACE/kind-voltha/voltha && cd $WORKSPACE/kind-voltha && ./voltha down
 
-            ps aux | grep port-forw | grep -v grep | awk '{print \$2}' | xargs --no-run-if-empty kill -9
-
             cd $WORKSPACE
             rm -rf $WORKSPACE/*
           """
@@ -184,7 +177,7 @@
       steps {
         sh '''
         if [ ${withMonitoring} = true ] ; then
-          helm install nem-monitoring cord/nem-monitoring \
+          helm install -n $INFRA_NS nem-monitoring cord/nem-monitoring \
           -f $HOME/voltha-scale/grafana.yaml \
           --set prometheus.alertmanager.enabled=false,prometheus.pushgateway.enabled=false \
           --set kpi_exporter.enabled=false,dashboards.xos=false,dashboards.onos=false,dashboards.aaa=false,dashboards.voltha=false
@@ -195,6 +188,7 @@
     stage('Deploy VOLTHA infrastructure') {
       steps {
         sh returnStdout: false, script: '''
+
           cd $WORKSPACE/kind-voltha/
 
           export ETCD_CHART=$HOME/teone/helm-charts/etcd
@@ -239,27 +233,19 @@
       steps {
         script {
           sh returnStdout: false, script: """
+
+          # TODO this needs to be repeated per stack
+          # kubectl exec \$(kubectl get pods | grep -E "bbsim[0-9]" | awk 'NR==1{print \$1}') -- bbsimctl log ${logLevel.toLowerCase()} false
+
           #Setting link discovery
           sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 cfg set org.onosproject.provider.lldp.impl.LldpLinkProvider enabled ${withLLDP}
-
           sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 cfg set org.onosproject.net.flow.impl.FlowRuleManager allowExtraneousRules true
           sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 cfg set org.onosproject.net.flow.impl.FlowRuleManager importExtraneousRules true
-
-
           sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 cfg set org.onosproject.net.flowobjective.impl.InOrderFlowObjectiveManager accumulatorMaxBatchMillis 1000
-
           sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 cfg set org.onosproject.net.flowobjective.impl.InOrderFlowObjectiveManager accumulatorMaxIdleMillis 500
 
-          ONOSES=\$((\$NUM_OF_ONOS - 1))
-          for i in \$(seq 0 \$ONOSES); do
-            INSTANCE="onos-onos-classic-\$i"
-
-            #Setting LOG level to ${logLevel}
-            kubectl -n \$INFRA_NS exec \$INSTANCE -- bash /root/onos/${karafHome}/bin/client log:set ${logLevel} org.onosproject
-            kubectl -n \$INFRA_NS exec \$INSTANCE -- bash /root/onos/${karafHome}/bin/client log:set ${logLevel} org.opencord
-
-            kubectl -n \$INFRA_NS exec \$INSTANCE -- bash /root/onos/${karafHome}/bin/client log:set DEBUG org.opencord.dhcpl2relay
-          done
+          sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 cfg log:set ${logLevel} org.onosproject
+          sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 cfg log:set ${logLevel} org.opencord
 
           # Set Flows/Ports/Meters poll frequency
           sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 cfg set org.onosproject.provider.of.flow.impl.OpenFlowRuleProvider flowPollFrequency ${onosStatInterval}
@@ -276,7 +262,6 @@
           fi
 
           if [ ${withPcap} = true ] && [ ${volthaStacks} -eq 1 ] ; then
-            # FIXME ofagent pcap has to be replicated per stack
             # Start the tcp-dump in ofagent
             export OF_AGENT=\$(kubectl -n \$INFRA_NS get pods -l app=ofagent -o name)
             kubectl exec \$OF_AGENT -- apk update
@@ -313,7 +298,7 @@
           make vst_venv
         '''
         sh '''
-          if [ ${withProfiling} = true ] ; then
+          if [ ${withProfiling} = true ] && [ ${volthaStacks} -eq 1 ]; then
             mkdir -p $LOG_FOLDER/pprof
             cat << EOF > $WORKSPACE/pprof.sh
 timestamp() {
@@ -345,11 +330,10 @@
 
             _TAG="pprof"
             _TAG=$_TAG bash $WORKSPACE/pprof.sh &
+          else
+            echo "Profiling not supported for multiple VOLTHA stacks"
           fi
         '''
-        // bbsim-sadis server takes a while to cache the subscriber entries
-        // wait for that before starting the tests
-        sleep(60)
       }
     }
     stage('Run Test') {
@@ -379,7 +363,7 @@
           fi
         done
 
-        if [ ${withPcap} = true ] ; then
+        if [ ${withPcap} = true ] && [ ${volthaStacks} -eq 1 ]; then
           # stop ofAgent tcpdump
           P_ID="\$(ps e -ww -A | grep "_TAG=ofagent-tcpdump" | grep -v grep | awk '{print \$1}')"
           if [ -n "\$P_ID" ]; then
@@ -417,7 +401,7 @@
         fi
       '''
       sh '''
-        if [ ${withProfiling} = true ] ; then
+        if [ ${withProfiling} = true ] && [ ${volthaStacks} -eq 1 ]; then
           _TAG="pprof"
           P_IDS="$(ps e -ww -A | grep "_TAG=$_TAG" | grep -v grep | awk '{print $1}')"
           if [ -n "$P_IDS" ]; then
@@ -442,7 +426,7 @@
           [file: 'plots/plot-onos-flows-after.txt', displayTableFlag: false, exclusionValues: '', inclusionFlag: 'OFF', url: ''],
           [file: 'plots/plot-onos-dhcp.txt', displayTableFlag: false, exclusionValues: '', inclusionFlag: 'OFF', url: ''],
         ],
-        group: 'Voltha-Scale-Numbers', numBuilds: '20', style: 'line', title: "Scale Test (OLTs: ${olts}, PONs: ${pons}, ONUs: ${onus})", yaxis: 'Time (s)', useDescr: true
+        group: 'Voltha-Scale-Numbers', numBuilds: '20', style: 'line', title: "Scale Test (Stacks: ${params.volthaStacks}, OLTs: ${olts}, PONs: ${pons}, ONUs: ${onus})", yaxis: 'Time (s)', useDescr: true
       ])
       step([$class: 'RobotPublisher',
         disableArchiveOutput: false,
@@ -460,7 +444,7 @@
         helm ls --all-namespaces > $LOG_FOLDER/helm-list.txt || true
 
         # store information on the running pods
-        kubectl get pods -o wide > $LOG_FOLDER/pods.txt || true
+        kubectl get pods --all-namespaces -o wide > $LOG_FOLDER/pods.txt || true
         kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\n'}" | sort | uniq | tee $LOG_FOLDER/pod-images.txt || true
         kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.imageID}{'\\n'}" | sort | uniq | tee $LOG_FOLDER/pod-imagesId.txt || true
 
@@ -480,8 +464,8 @@
 
           for bbsim in "\${IDS[@]}"
           do
-            kubectl -n ${stack_ns} exec -t \$bbsim -- bbsimctl onu list > $LOG_FOLDER/\$bbsim-device-list.txt || true
-            kubectl -n ${stack_ns} exec -t \$bbsim -- bbsimctl service list > $LOG_FOLDER/\$bbsim-service-list.txt || true
+            kubectl -n ${stack_ns} exec -t \$bbsim -- bbsimctl onu list > $LOG_FOLDER/${stack_ns}/\$bbsim-device-list.txt || true
+            kubectl -n ${stack_ns} exec -t \$bbsim -- bbsimctl service list > $LOG_FOLDER/${stack_ns}/\$bbsim-service-list.txt || true
           done
           """
         }
@@ -532,20 +516,19 @@
         for (int i = 1; i <= params.volthaStacks.toInteger(); i++) {
           stack_ns="voltha"+i
           voltcfg="~/.volt/config-voltha"+i
-          println stack_ns
           try {
             sh """
-            voltctl -c $HOME/.volt/config-${stack_ns} -m 8MB device list -o json > $LOG_FOLDER/device-list.json || true
-            python -m json.tool $LOG_FOLDER/device-list.json > $LOG_FOLDER/voltha-devices-list.json || true
-            rm $LOG_FOLDER/device-list.json || true
-            voltctl -c $HOME/.volt/config-${stack_ns} -m 8MB device list > $LOG_FOLDER/voltha-devices-list.txt || true
+            voltctl -c $HOME/.volt/config-${stack_ns} -m 8MB device list -o json > $LOG_FOLDER/${stack_ns}/device-list.json || true
+            python -m json.tool $LOG_FOLDER/${stack_ns}/device-list.json > $LOG_FOLDER/${stack_ns}/voltha-devices-list.json || true
+            rm $LOG_FOLDER/${stack_ns}/device-list.json || true
+            voltctl -c $HOME/.volt/config-${stack_ns} -m 8MB device list > $LOG_FOLDER/${stack_ns}/voltha-devices-list.txt || true
 
             DEVICE_LIST=
-            printf '%s\n' \$(voltctl -c $HOME/.volt/config-${stack_ns} -m 8MB device list | grep olt | awk '{print \$1}') | xargs --no-run-if-empty -I# bash -c "voltctl -c $HOME/.volt/config-${stack_ns}-m 8MB device flows # > $LOG_FOLDER/voltha-device-flows-#.txt" || true
-            printf '%s\n' \$(voltctl -c $HOME/.volt/config-${stack_ns} -m 8MB device list | grep olt | awk '{print \$1}') | xargs --no-run-if-empty -I# bash -c "voltctl -c $HOME/.volt/config-${stack_ns} -m 8MB device port list --format 'table{{.PortNo}}\t{{.Label}}\t{{.Type}}\t{{.AdminState}}\t{{.OperStatus}}' # > $LOG_FOLDER/voltha-device-ports-#.txt" || true
+            printf '%s\n' \$(voltctl -c $HOME/.volt/config-${stack_ns} -m 8MB device list | grep olt | awk '{print \$1}') | xargs --no-run-if-empty -I# bash -c "voltctl -c $HOME/.volt/config-${stack_ns}-m 8MB device flows # > $LOG_FOLDER/${stack_ns}/voltha-device-flows-#.txt" || true
+            printf '%s\n' \$(voltctl -c $HOME/.volt/config-${stack_ns} -m 8MB device list | grep olt | awk '{print \$1}') | xargs --no-run-if-empty -I# bash -c "voltctl -c $HOME/.volt/config-${stack_ns} -m 8MB device port list --format 'table{{.PortNo}}\t{{.Label}}\t{{.Type}}\t{{.AdminState}}\t{{.OperStatus}}' # > $LOG_FOLDER/${stack_ns}/voltha-device-ports-#.txt" || true
 
-            printf '%s\n' \$(voltctl -c $HOME/.volt/config-${stack_ns} -m 8MB logicaldevice list -q) | xargs --no-run-if-empty -I# bash -c "voltctl -c $HOME/.volt/config-${stack_ns} -m 8MB logicaldevice flows # > $LOG_FOLDER/voltha-logicaldevice-flows-#.txt" || true
-            printf '%s\n' \$(voltctl -c $HOME/.volt/config-${stack_ns} -m 8MB logicaldevice list -q) | xargs --no-run-if-empty -I# bash -c "voltctl -c $HOME/.volt/config-${stack_ns} -m 8MB logicaldevice port list # > $LOG_FOLDER/voltha-logicaldevice-ports-#.txt" || true
+            printf '%s\n' \$(voltctl -c $HOME/.volt/config-${stack_ns} -m 8MB logicaldevice list -q) | xargs --no-run-if-empty -I# bash -c "voltctl -c $HOME/.volt/config-${stack_ns} -m 8MB logicaldevice flows # > $LOG_FOLDER/${stack_ns}/voltha-logicaldevice-flows-#.txt" || true
+            printf '%s\n' \$(voltctl -c $HOME/.volt/config-${stack_ns} -m 8MB logicaldevice list -q) | xargs --no-run-if-empty -I# bash -c "voltctl -c $HOME/.volt/config-${stack_ns} -m 8MB logicaldevice port list # > $LOG_FOLDER/${stack_ns}/voltha-logicaldevice-ports-#.txt" || true
             """
           } catch(e) {
             sh '''
@@ -563,7 +546,7 @@
         python tests/scale/sizing.py -o $WORKSPACE/plots || true
       fi
       '''
-      archiveArtifacts artifacts: 'kind-voltha/install-minimal.log,execution-time.txt,logs/*,logs/pprof/*,RobotLogs/**/*,plots/*,etcd-metrics/*'
+      archiveArtifacts artifacts: 'kind-voltha/install-*.log,execution-time-*.txt,logs/**/*,RobotLogs/**/*,plots/*,etcd-metrics/*'
     }
   }
 }
@@ -572,6 +555,10 @@
   for (int i = 1; i <= numberOfStacks.toInteger(); i++) {
     stage("Deploy VOLTHA stack " + i) {
       sh returnStdout: false, script: """
+
+      # unset voltha-api port so that the port is forwarded on a new one
+      unset VOLTHA_API_PORT
+
       cd $WORKSPACE/kind-voltha/
 
       export NAME=voltha${i}
diff --git a/jjb/pipeline/voltha-scale-test-etcd-kafka-bitnami.groovy b/jjb/pipeline/voltha-scale-test-etcd-kafka-bitnami.groovy
index acbc362..e605443 100644
--- a/jjb/pipeline/voltha-scale-test-etcd-kafka-bitnami.groovy
+++ b/jjb/pipeline/voltha-scale-test-etcd-kafka-bitnami.groovy
@@ -334,21 +334,18 @@
       steps {
         script {
           sh returnStdout: false, script: """
+          kubectl exec \$(kubectl get pods | grep -E "bbsim[0-9]" | awk 'NR==1{print \$1}') -- bbsimctl log ${logLevel.toLowerCase()} false
+
           #Setting link discovery
           sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 cfg set org.onosproject.provider.lldp.impl.LldpLinkProvider enabled ${withLLDP}
-
           sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 cfg set org.onosproject.net.flow.impl.FlowRuleManager allowExtraneousRules true
           sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 cfg set org.onosproject.net.flow.impl.FlowRuleManager importExtraneousRules true
-
-
           sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 cfg set org.onosproject.net.flowobjective.impl.InOrderFlowObjectiveManager accumulatorMaxBatchMillis 1000
-
           sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 cfg set org.onosproject.net.flowobjective.impl.InOrderFlowObjectiveManager accumulatorMaxIdleMillis 500
+
           sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 cfg log:set ${logLevel} org.onosproject
           sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 cfg log:set ${logLevel} org.opencord
 
-          kubectl exec \$(kubectl get pods | grep -E "bbsim[0-9]" | awk 'NR==1{print \$1}') -- bbsimctl log ${logLevel.toLowerCase()} false
-
           # Set Flows/Ports/Meters poll frequency
           sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 cfg set org.onosproject.provider.of.flow.impl.OpenFlowRuleProvider flowPollFrequency ${onosStatInterval}
           sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 cfg set org.onosproject.provider.of.device.impl.OpenFlowDeviceProvider portStatsPollFrequency ${onosStatInterval}
@@ -648,12 +645,13 @@
       // collect etcd metrics
       sh '''
         mkdir -p $WORKSPACE/etcd-metrics
-        curl -s -X GET -G http://10.90.0.101:31301/api/v1/query --data-urlencode 'query=etcd_debugging_mvcc_keys_total' | jq '.data' > $WORKSPACE/etcd-metrics/etcd-key-count.json || true
-        curl -s -X GET -G http://10.90.0.101:31301/api/v1/query --data-urlencode 'query=grpc_server_handled_total{grpc_service="etcdserverpb.KV"}' | jq '.data' > $WORKSPACE/etcd-metrics/etcd-rpc-count.json || true
-        curl -s -X GET -G http://10.90.0.101:31301/api/v1/query --data-urlencode 'query=etcd_debugging_mvcc_db_total_size_in_bytes' | jq '.data' > $WORKSPACE/etcd-metrics/etcd-db-size.json || true
-        curl -s -X GET -G http://10.90.0.101:31301/api/v1/query --data-urlencode 'query=etcd_disk_backend_commit_duration_seconds_sum' | jq '.data'  > $WORKSPACE/etcd-metrics/etcd-backend-write-time-sum.json || true
-        curl -s -X GET -G http://10.90.0.101:31301/api/v1/query --data-urlencode 'query=etcd_disk_backend_commit_duration_seconds_bucket' | jq '.data'  > $WORKSPACE/etcd-metrics/etcd-backend-write-time-bucket.json || true
-        curl -s -X GET -G http://10.90.0.101:31301/api/v1/query --data-urlencode 'query=etcd_disk_wal_fsync_duration_seconds_bucket' | jq '.data'  > $WORKSPACE/etcd-metrics/etcd-wal-fsync-time-bucket.json || true
+        curl -s -X GET -G http://10.90.0.201:31301/api/v1/query --data-urlencode 'query=etcd_debugging_mvcc_keys_total' | jq '.data' > $WORKSPACE/etcd-metrics/etcd-key-count.json || true
+        curl -s -X GET -G http://10.90.0.201:31301/api/v1/query --data-urlencode 'query=grpc_server_handled_total{grpc_service="etcdserverpb.KV"}' | jq '.data' > $WORKSPACE/etcd-metrics/etcd-rpc-count.json || true
+        curl -s -X GET -G http://10.90.0.201:31301/api/v1/query --data-urlencode 'query=etcd_debugging_mvcc_db_total_size_in_bytes' | jq '.data' > $WORKSPACE/etcd-metrics/etcd-db-size.json || true
+        curl -s -X GET -G http://10.90.0.201:31301/api/v1/query --data-urlencode 'query=etcd_disk_backend_commit_duration_seconds_sum' | jq '.data'  > $WORKSPACE/etcd-metrics/etcd-backend-write-time-sum.json || true
+        curl -s -X GET -G http://10.90.0.201:31301/api/v1/query --data-urlencode 'query=etcd_disk_backend_commit_duration_seconds_bucket' | jq '.data'  > $WORKSPACE/etcd-metrics/etcd-backend-write-time-bucket.json || true
+        curl -s -X GET -G http://10.90.0.201:31301/api/v1/query --data-urlencode 'query=etcd_disk_wal_fsync_duration_seconds_bucket' | jq '.data'  > $WORKSPACE/etcd-metrics/etcd-wal-fsync-time-bucket.json || true
+        curl -s -X GET -G http://10.90.0.201:31301/api/v1/query --data-urlencode 'query=etcd_network_peer_round_trip_time_seconds_bucket' | jq '.data'  > $WORKSPACE/etcd-metrics/etcd-network-peer-round-trip-time-seconds.json || true
       '''
       // get VOLTHA debug infos
       script {
diff --git a/jjb/pipeline/voltha-scale-test.groovy b/jjb/pipeline/voltha-scale-test.groovy
index 51f9b17..76fa65a 100644
--- a/jjb/pipeline/voltha-scale-test.groovy
+++ b/jjb/pipeline/voltha-scale-test.groovy
@@ -320,9 +320,6 @@
           _TAG=kail-$app kail -l app=$app --since 1h > $LOG_FOLDER/$app.log&
         done
         '''
-        // bbsim-sadis server takes a while to cache the subscriber entries
-        // wait for that before starting the tests
-        sleep(120)
       }
     }
     stage('Configuration') {
@@ -340,18 +337,8 @@
 
           sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 cfg set org.onosproject.net.flowobjective.impl.InOrderFlowObjectiveManager accumulatorMaxIdleMillis 500
 
-          ONOSES=\$((\$NUM_OF_ONOS - 1))
-          for i in \$(seq 0 \$ONOSES); do
-            INSTANCE="onos-onos-classic-\$i"
-
-            #Setting LOG level to ${logLevel}
-            kubectl exec \$INSTANCE -- bash /root/onos/${karafHome}/bin/client log:set ${logLevel} org.onosproject
-            kubectl exec \$INSTANCE -- bash /root/onos/${karafHome}/bin/client log:set ${logLevel} org.opencord
-
-            kubectl exec \$INSTANCE -- bash /root/onos/${karafHome}/bin/client log:set DEBUG org.opencord.olt
-
-            kubectl exec \$INSTANCE -- bash /root/onos/${karafHome}/bin/client log:set TRACE org.onosproject.net.meter.impl
-          done
+          sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 cfg log:set ${logLevel} org.onosproject
+          sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 cfg log:set ${logLevel} org.opencord
 
 
           kubectl exec \$(kubectl get pods | grep -E "bbsim[0-9]" | awk 'NR==1{print \$1}') -- bbsimctl log ${logLevel.toLowerCase()} false
@@ -662,6 +649,8 @@
         curl -s -X GET -G http://10.90.0.101:31301/api/v1/query --data-urlencode 'query=etcd_disk_backend_commit_duration_seconds_sum' | jq '.data'  > $WORKSPACE/etcd-metrics/etcd-backend-write-time-sum.json || true
         curl -s -X GET -G http://10.90.0.101:31301/api/v1/query --data-urlencode 'query=etcd_disk_backend_commit_duration_seconds_bucket' | jq '.data'  > $WORKSPACE/etcd-metrics/etcd-backend-write-time-bucket.json || true
         curl -s -X GET -G http://10.90.0.101:31301/api/v1/query --data-urlencode 'query=etcd_disk_wal_fsync_duration_seconds_bucket' | jq '.data'  > $WORKSPACE/etcd-metrics/etcd-wal-fsync-time-bucket.json || true
+        curl -s -X GET -G http://10.90.0.101:31301/api/v1/query --data-urlencode 'query=etcd_network_peer_round_trip_time_seconds_bucket' | jq '.data'  > $WORKSPACE/etcd-metrics/etcd-network-peer-round-trip-time-seconds.json || true
+
       '''
       // get VOLTHA debug infos
       script {
diff --git a/jjb/verify/bbsim-sadis-server.yaml b/jjb/verify/bbsim-sadis-server.yaml
new file mode 100644
index 0000000..5cdbc5c
--- /dev/null
+++ b/jjb/verify/bbsim-sadis-server.yaml
@@ -0,0 +1,34 @@
+---
+# verification jobs for 'bbsim-sadis-server' repo
+
+- project:
+    name: bbsim-sadis-server
+    project: '{name}'
+
+    jobs:
+      - 'verify-bbsim-sadis-server-jobs':
+          branch-regexp: '{all-branches-regexp}'
+      - 'publish-bbsim-sadis-server-jobs':
+          branch-regexp: '{all-branches-regexp}'
+
+- job-group:
+    name: 'verify-bbsim-sadis-server-jobs'
+    jobs:
+      - 'verify-licensed'
+      - 'tag-collision-reject':
+          dependency-jobs: 'verify_bbsim-sadis-server_licensed'
+      - 'make-unit-test':
+          build-node: 'ubuntu16.04-basebuild-1c-2g'
+          dest-gopath: "github.com/opencord"
+          unit-test-targets: 'lint sca test'
+          unit-test-keep-going: 'true'
+      - 'voltha-patch-test':
+          pipeline-script: 'voltha-bbsim-tests.groovy'
+
+- job-group:
+    name: 'publish-bbsim-sadis-server-jobs'
+    jobs:
+      - 'docker-publish':
+          maintainers: "teo@opennetworking.org"
+          docker-repo: 'voltha'
+          dependency-jobs: 'version-tag'
diff --git a/jjb/verify/pppoeagent.yaml b/jjb/verify/pppoeagent.yaml
new file mode 100644
index 0000000..9702b87
--- /dev/null
+++ b/jjb/verify/pppoeagent.yaml
@@ -0,0 +1,18 @@
+---
+# jobs for 'pppoeagent' repo
+
+- project:
+    name: pppoeagent
+    project: '{name}'
+
+    jobs:
+      - 'pppoeagent-jobs':
+          branch-regexp: '^(.*)$'
+
+- job-group:
+    name: 'pppoeagent-jobs'
+    jobs:
+      - 'verify-licensed'
+      - 'tag-collision-reject'
+      - 'maven-test'
+      - 'maven-publish'
diff --git a/jjb/voltha-e2e.yaml b/jjb/voltha-e2e.yaml
index 028f466..096085f 100644
--- a/jjb/voltha-e2e.yaml
+++ b/jjb/voltha-e2e.yaml
@@ -11,6 +11,7 @@
     make-target-failtest: bbsim-failurescenarios
     make-target-errortest: bbsim-errorscenarios
     make-target-alarmtest: bbsim-alarms-kind
+    make-target-multipleolt: bbsim-multiolt-kind
 
     jobs:
       - 'voltha-periodic-test':
@@ -21,6 +22,7 @@
           make-target-failtest: bbsim-failurescenarios
           make-target-errortest: bbsim-errorscenarios
           make-target-alarmtest: bbsim-alarms-kind
+          make-target-multipleolt: bbsim-multiolt-kind
           withAlarms: true
           code-branch: 'master'
           olts: 1
@@ -36,6 +38,7 @@
           make-target-failtest: bbsim-multiolt-failurescenarios
           make-target-errortest: bbsim-multiolt-errorscenarios
           make-target-alarmtest: bbsim-alarms-kind
+          make-target-multipleolt: bbsim-multiolt-kind
           withAlarms: false
           code-branch: 'master'
           olts: 2
@@ -50,6 +53,7 @@
           make-target-failtest: bbsim-failurescenarios
           make-target-errortest: bbsim-errorscenarios
           make-target-alarmtest: bbsim-alarms-kind
+          make-target-multipleolt: bbsim-multiolt-kind
           withAlarms: true
           make-target: functional-single-kind
           code-branch: 'master'
@@ -60,7 +64,7 @@
           time-trigger: "H H/12 * * *"
 
       - 'voltha-periodic-test':
-          name: 'periodic-voltha-test-bbsim-2.5'
+          name: 'periodic-voltha-test-bbsim-2.6'
           pipeline-script: 'voltha-nightly-tests-bbsim.groovy'
           build-node: 'qct-pod4-node2'
           make-target: functional-single-kind
@@ -68,7 +72,7 @@
           make-target-errortest: bbsim-errorscenarios
           make-target-alarmtest: bbsim-alarms-kind
           withAlarms: true
-          code-branch: 'voltha-2.5'
+          code-branch: 'voltha-2.6'
           onus: 2
           pons: 2
           time-trigger: "H H/12 * * *"
@@ -84,10 +88,10 @@
           time-trigger: "H H/12 * * *"
 
       - 'voltha-periodic-test':
-          name: 'periodic-voltha-etcd-test-2.5'
+          name: 'periodic-voltha-etcd-test-2.6'
           pipeline-script: 'voltha-system-test-bbsim.groovy'
           build-node: 'ubuntu16.04-basebuild-4c-8g'
-          code-branch: 'voltha-2.5'
+          code-branch: 'voltha-2.6'
           make-target: sanity-multi-kind
           onus: 2
           pons: 2
@@ -106,10 +110,10 @@
           time-trigger: "H H/12 * * *"
 
       - 'voltha-periodic-test':
-          name: 'periodic-voltha-sanity-test-multi-runs-2.5'
+          name: 'periodic-voltha-sanity-test-multi-runs-2.6'
           pipeline-script: 'voltha-go-multi-tests.groovy'
           build-node: 'qct-pod4-node2'
-          code-branch: 'voltha-2.5'
+          code-branch: 'voltha-2.6'
           make-target: sanity-kind
           onus: 1
           pons: 1
@@ -131,8 +135,8 @@
           name: 'verify_physical_voltha_patchset_auto'
           build-node: 'tucson-pod'
           config-pod: 'tucson-pod'
-          oltDebVersionMaster: 'openolt_asfvolt16-3.1.0-812c1126ece038da5c40d0830a09cb67ca36ea07.deb'
-          oltDebVersionVoltha23: 'openolt_asfvolt16-2.4.9-dev-d4aeca5a2094f7dc7c519913ab1558348c546dab.deb'
+          oltDebVersionMaster: 'openolt_asfvolt16-3.2.0-fc10f0d035181d3125ffc6e7a60bf5328fcf5bfa-40G-NNI.deb'
+          oltDebVersionVoltha23: 'openolt_asfvolt16-3.2.0-fc10f0d035181d3125ffc6e7a60bf5328fcf5bfa-40G-NNI.deb'
           profile: 'Default'
 
       # Per-patchset Pod builds on Tucson pod
@@ -140,8 +144,8 @@
           name: 'verify_physical_voltha_patchset_manual'
           build-node: 'tucson-pod'
           config-pod: 'tucson-pod'
-          oltDebVersionMaster: 'openolt_asfvolt16-3.1.0-812c1126ece038da5c40d0830a09cb67ca36ea07.deb'
-          oltDebVersionVoltha23: 'openolt_asfvolt16-2.4.9-dev-d4aeca5a2094f7dc7c519913ab1558348c546dab.deb'
+          oltDebVersionMaster: 'openolt_asfvolt16-3.2.0-fc10f0d035181d3125ffc6e7a60bf5328fcf5bfa-40G-NNI.deb'
+          oltDebVersionVoltha23: 'openolt_asfvolt16-3.2.0-fc10f0d035181d3125ffc6e7a60bf5328fcf5bfa-40G-NNI.deb'
           profile: 'Default'
           trigger-string: 'hardware test'
           default-test-args: '-i sanityORDeleteOLT -X'
@@ -152,8 +156,8 @@
           name: 'verify_physical_voltha_patchset_manual_DT'
           build-node: 'tucson-pod'
           config-pod: 'tucson-pod-DT'
-          oltDebVersionMaster: 'openolt_asfvolt16-2.4.9-dev-bal-3.4.7.5-fixed.deb'
-          oltDebVersionVoltha23: 'openolt_asfvolt16-2.4.9-dev-d4aeca5a2094f7dc7c519913ab1558348c546dab.deb'
+          oltDebVersionMaster: 'openolt_asfvolt16-3.2.0-fc10f0d035181d3125ffc6e7a60bf5328fcf5bfa-40G-NNI.deb'
+          oltDebVersionVoltha23: 'openolt_asfvolt16-3.2.0-fc10f0d035181d3125ffc6e7a60bf5328fcf5bfa-40G-NNI.deb'
           profile: 'Default'
           pipeline-script: 'voltha-dt-physical-build-and-tests.groovy'
           trigger-string: 'DT hardware test'
@@ -168,8 +172,8 @@
           build-node: 'tucson-pod'
           config-pod: 'tucson-pod'
           manualBranch: 'master'
-          oltDebVersionMaster: 'openolt_asfvolt16-3.1.0-812c1126ece038da5c40d0830a09cb67ca36ea07.deb'
-          oltDebVersionVoltha23: 'openolt_asfvolt16-2.4.9-dev-d4aeca5a2094f7dc7c519913ab1558348c546dab.deb'
+          oltDebVersionMaster: 'openolt_asfvolt16-3.2.0-fc10f0d035181d3125ffc6e7a60bf5328fcf5bfa-40G-NNI.deb'
+          oltDebVersionVoltha23: 'openolt_asfvolt16-3.2.0-fc10f0d035181d3125ffc6e7a60bf5328fcf5bfa-40G-NNI.deb'
           profile: 'Default'
 
 - job-template:
@@ -185,6 +189,7 @@
     extraHelmFlags: ''
     sandbox: true
     olts: 1
+    withAlarms: false
 
     description: |
       <!-- Managed by Jenkins Job Builder -->
@@ -214,7 +219,7 @@
 
       - bool:
           name: withAlarms
-          default: false
+          default: '{withAlarms}'
           description: "Run alarm based tests when true"
 
       - string:
@@ -228,6 +233,11 @@
           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'
diff --git a/jjb/voltha-scale.yaml b/jjb/voltha-scale.yaml
index 744ccf1..80ff492 100644
--- a/jjb/voltha-scale.yaml
+++ b/jjb/voltha-scale.yaml
@@ -9,9 +9,9 @@
     jobs:
       # name format is <job-template>-<olts>-<pon>-<onus>-<setup>
 
-      # OpenONU GO Scale
+      # OpenONU PY Scale
       - 'voltha-scale-measurements':
-          name: 'voltha-openonu-go-scale-measurements-master-2-16-32-dt-subscribers'
+          name: 'voltha-openonu-py-scale-measurements-master-2-16-32-dt-subscribers'
           'disable-job': false
           build-node: 'onf-pod1-head-node'
           time-trigger: "H H/4 * * *"
@@ -24,11 +24,11 @@
           withEapol: false
           withDhcp: false
           withIgmp: false
-          openonuAdapterReplicas: 1
-          extraHelmFlags: '--set use_openonu_adapter_go=true'
+          openonuAdapterReplicas: 8
+          extraHelmFlags: '--set use_openonu_adapter_go=false'
 
       - 'voltha-scale-measurements':
-          name: 'voltha-openonu-go-scale-measurements-master-2-16-32-att-subscribers'
+          name: 'voltha-openonu-py-scale-measurements-master-2-16-32-att-subscribers'
           'disable-job': false
           build-node: 'onf-pod1-head-node'
           time-trigger: "H H/4 * * *"
@@ -40,15 +40,15 @@
           withEapol: true
           withDhcp: true
           withIgmp: false
-          openonuAdapterReplicas: 1
-          extraHelmFlags: '--set use_openonu_adapter_go=true,authRetry=true,dhcpRetry=true'
+          openonuAdapterReplicas: 8
+          extraHelmFlags: '--set use_openonu_adapter_go=false,authRetry=true,dhcpRetry=true'
 
       - 'voltha-scale-measurements':
-          name: 'voltha-openonu-go-scale-measurements-master-1-16-32-tt-subscribers'
+          name: 'voltha-openonu-py-scale-measurements-master-2-16-32-tt-subscribers'
           'disable-job': false
           build-node: 'onf-pod1-head-node'
           time-trigger: "H H/4 * * *"
-          olts: 1
+          olts: 2
           pons: 16
           onus: 32
           withFlows: true
@@ -57,9 +57,8 @@
           withEapol: false
           withDhcp: true
           withIgmp: false
-          openonuAdapterReplicas: 1
-          openonuAdapterImg: voltha/voltha-openonu-adapter-go:master
-          extraHelmFlags: '--set use_openonu_adapter_go=true,dhcpRetry=true,defaults.incremental_evto_update=true'
+          openonuAdapterReplicas: 8
+          extraHelmFlags: '--set use_openonu_adapter_go=false,dhcpRetry=true,defaults.incremental_evto_update=true'
 
       # this job will be used to test custom images without disrupting tests on master
       - 'voltha-scale-measurements':
@@ -88,11 +87,10 @@
           pipeline-script: 'voltha-scale-multi-stack.groovy'
           'disable-job': false
           # trigger on Feb 29th (a.k.a only trigger it manually)
-          # time-trigger: "H 0 29 2 *"
-          time-trigger: "H H/4 * * *"
-          withMonitoring: false
+          time-trigger: "H 0 29 2 *"
+          withMonitoring: true
           logLevel: WARN
-          volthaStacks: 2
+          volthaStacks: 10
           olts: 2
           pons: 16
           onus: 32
@@ -102,10 +100,8 @@
           withEapol: false
           withDhcp: false
           withIgmp: false
-          extraHelmFlags: '--set authRetry=true,dhcpRetry=true'
-          volthaSystemTestsChange: refs/changes/27/21627/2
-          kindVolthaChange: refs/changes/85/21485/8
-          openoltAdapterImg: matteoscandolo/voltha-openolt-adapter:topic
+          extraHelmFlags: '--set use_openonu_adapter_go=true'
+          openonuAdapterReplicas: 1
 
 
       # jobs for 512 ONUs with a 8 openonu-adapters and clustered ONOS (1 OLT)
@@ -202,14 +198,78 @@
           withEapol: false
           withDhcp: true
           withIgmp: true
-          openonuAdapterReplicas: 8
+          openonuAdapterReplicas: 1
           onosReplicas: 3
           atomixReplicas: 3
           extraHelmFlags: '--set authRetry=true,dhcpRetry=true'
 
-      # voltha-2.5 Jobs
+      # multi-stack jobs
       - 'voltha-scale-measurements':
-          name: 'voltha-scale-measurements-voltha-2.5-1-16-32-att-subscribers'
+          name: 'voltha-scale-measurements-master-10-stacks-2-16-32-att-subscribers'
+          build-node: 'voltha-scale-2'
+          pipeline-script: 'voltha-scale-multi-stack.groovy'
+          'disable-job': false
+          time-trigger: "H H/4 * * *"
+          withMonitoring: false
+          logLevel: WARN
+          volthaStacks: 10
+          olts: 2
+          pons: 16
+          onus: 32
+          withFlows: true
+          provisionSubscribers: true
+          workflow: att
+          withEapol: true
+          withDhcp: true
+          withIgmp: false
+          extraHelmFlags: '--set use_openonu_adapter_go=true'
+          openonuAdapterReplicas: 1
+
+      - 'voltha-scale-measurements':
+          name: 'voltha-scale-measurements-master-10-stacks-2-16-32-dt-subscribers'
+          build-node: 'voltha-scale-2'
+          pipeline-script: 'voltha-scale-multi-stack.groovy'
+          'disable-job': false
+          time-trigger: "H H/4 * * *"
+          withMonitoring: false
+          logLevel: WARN
+          volthaStacks: 10
+          olts: 2
+          pons: 16
+          onus: 32
+          withFlows: true
+          provisionSubscribers: true
+          workflow: dt
+          withEapol: false
+          withDhcp: false
+          withIgmp: false
+          extraHelmFlags: '--set use_openonu_adapter_go=true'
+          openonuAdapterReplicas: 1
+
+      - 'voltha-scale-measurements':
+          name: 'voltha-scale-measurements-master-10-stacks-2-16-32-tt-subscribers'
+          build-node: 'voltha-scale-2'
+          pipeline-script: 'voltha-scale-multi-stack.groovy'
+          'disable-job': false
+          time-trigger: "H H/4 * * *"
+          withMonitoring: false
+          logLevel: WARN
+          volthaStacks: 10
+          olts: 2
+          pons: 16
+          onus: 32
+          withFlows: true
+          provisionSubscribers: true
+          workflow: tt
+          withEapol: false
+          withDhcp: true
+          withIgmp: true
+          extraHelmFlags: '--set use_openonu_adapter_go=true'
+          openonuAdapterReplicas: 1
+
+      # voltha-2.6 Jobs
+      - 'voltha-scale-measurements':
+          name: 'voltha-scale-measurements-voltha-2.6-1-16-32-att-subscribers'
           'disable-job': false
           build-node: 'onf-pod1-head-node'
           time-trigger: "H H/4 * * *"
@@ -222,7 +282,8 @@
           withDhcp: true
           withIgmp: false
           extraHelmFlags: '--set defaults.rw_core.timeout=30s '
-          release: voltha-2.5
+          openonuAdapterReplicas: 8
+          release: voltha-2.6
           bbsimImg: ''
           rwCoreImg: ''
           ofAgentImg: ''
@@ -231,7 +292,7 @@
           onosImg: ''
 
       - 'voltha-scale-measurements':
-          name: 'voltha-scale-measurements-voltha-2.5-2-16-32-dt-subscribers'
+          name: 'voltha-scale-measurements-voltha-2.6-2-16-32-dt-subscribers'
           'disable-job': false
           build-node: 'onf-pod1-head-node'
           time-trigger: "H H/4 * * *"
@@ -245,7 +306,8 @@
           withDhcp: false
           withIgmp: false
           extraHelmFlags: '--set defaults.rw_core.timeout=30s '
-          release: voltha-2.5
+          openonuAdapterReplicas: 8
+          release: voltha-2.6
           bbsimImg: ''
           rwCoreImg: ''
           ofAgentImg: ''
@@ -254,7 +316,7 @@
           onosImg: ''
 
       - 'voltha-scale-measurements':
-          name: 'voltha-scale-measurements-voltha-2.5-1-16-32-tt-subscribers'
+          name: 'voltha-scale-measurements-voltha-2.6-1-16-32-tt-subscribers'
           'disable-job': false
           build-node: 'onf-pod1-head-node'
           time-trigger: "H H/4 * * *"
@@ -268,7 +330,8 @@
           withDhcp: true
           withIgmp: true
           extraHelmFlags: '--set defaults.rw_core.timeout=30s '
-          release: voltha-2.5
+          openonuAdapterReplicas: 8
+          release: voltha-2.6
           bbsimImg: ''
           rwCoreImg: ''
           ofAgentImg: ''
@@ -340,7 +403,7 @@
           atomixReplicas: 3
           kafkaReplicas: 3
           etcdReplicas: 3
-          openonuAdapterReplicas: 8
+          openonuAdapterReplicas: 1
           topologies: 1-16-16, 1-16-32, 2-16-32
           time-trigger: H 0 * * *
 
@@ -631,7 +694,7 @@
     withProfiling: false
     withPcap: false
     withRadius: yes
-    openonuAdapterReplicas: 8
+    openonuAdapterReplicas: 1
     onosReplicas: 3
     atomixReplicas: 3
     kafkaReplicas: 3
diff --git a/jjb/voltha-test/voltha-nightly-jobs.yaml b/jjb/voltha-test/voltha-nightly-jobs.yaml
index 7963155..8a7031e 100644
--- a/jjb/voltha-test/voltha-nightly-jobs.yaml
+++ b/jjb/voltha-test/voltha-nightly-jobs.yaml
@@ -317,6 +317,7 @@
 - job-template:
     name: 'build_{config-pod}_{profile}_voltha{name-extension}_{release}_test'
     id: build_voltha_pod_soak_test
+    disabled: '{disable-job}'
     description: |
                   Post Tests on {config-pod} triggered by build_{config-pod}_{branch}, using {pipeline-script}<br /><br />
                   Created from job-template {id} from ci-management/jjb/voltha-test/voltha-nightly-jobs.yaml <br />