diff --git a/jjb/pipeline/voltha/master/physical-build.groovy b/jjb/pipeline/voltha/master/physical-build.groovy
index d9f75b3..2107f21 100644
--- a/jjb/pipeline/voltha/master/physical-build.groovy
+++ b/jjb/pipeline/voltha/master/physical-build.groovy
@@ -127,8 +127,13 @@
             // adding user specified helm flags at the end so they'll have priority over everything else
             localHelmFlags = localHelmFlags + " ${extraHelmFlags}"
 
+            def numberOfAdaptersToWait = 2
+
             if(openoltAdapterChart != "onf/voltha-adapter-openolt") {
               localHelmFlags = localHelmFlags + " --set voltha-adapter-openolt.enabled=false"
+              // We skip waiting for adapters in the volthaDeploy step because it's already waiting for
+              // both of them after the deployment of the custom olt adapter. See line 156.
+              numberOfAdaptersToWait = 0
             }
 
             volthaDeploy([
@@ -141,12 +146,16 @@
               kafkaReplica: params.NumOfKafka,
               etcdReplica: params.NumOfEtcd,
               bbsimReplica: bbsimReplicas.toInteger(),
+              adaptersToWait: numberOfAdaptersToWait,
               ])
 
-              if(openoltAdapterChart != "onf/voltha-adapter-openolt"){
-                extraHelmFlags = extraHelmFlags + " --set global.log_level=${logLevel}"
-                deploy_custom_oltAdapterChart(volthaNamespace, oltAdapterReleaseName, openoltAdapterChart, extraHelmFlags)
-              }
+            if(openoltAdapterChart != "onf/voltha-adapter-openolt"){
+              extraHelmFlags = extraHelmFlags + " --set global.log_level=${logLevel}"
+              deploy_custom_oltAdapterChart(volthaNamespace, oltAdapterReleaseName, openoltAdapterChart, extraHelmFlags)
+              waitForAdapters([
+                adaptersToWait: 2
+              ])
+            }
           }
           sh """
           JENKINS_NODE_COOKIE="dontKillMe" _TAG="voltha-api" bash -c "while true; do kubectl port-forward --address 0.0.0.0 -n ${volthaNamespace} svc/voltha-voltha-api 55555:55555; done"&
diff --git a/jjb/pipeline/voltha/voltha-2.8/physical-build.groovy b/jjb/pipeline/voltha/voltha-2.8/physical-build.groovy
index 41a4df2..ed43acc 100644
--- a/jjb/pipeline/voltha/voltha-2.8/physical-build.groovy
+++ b/jjb/pipeline/voltha/voltha-2.8/physical-build.groovy
@@ -127,8 +127,13 @@
             // adding user specified helm flags at the end so they'll have priority over everything else
             localHelmFlags = localHelmFlags + " ${extraHelmFlags}"
 
+            def numberOfAdaptersToWait = 2
+
             if(openoltAdapterChart != "onf/voltha-adapter-openolt") {
               localHelmFlags = localHelmFlags + " --set voltha-adapter-openolt.enabled=false"
+              // We skip waiting for adapters in the volthaDeploy step because it's already waiting for
+              // both of them after the deployment of the custom olt adapter. See line 156.
+              numberOfAdaptersToWait = 0
             }
 
             volthaDeploy([
@@ -141,12 +146,16 @@
               kafkaReplica: params.NumOfKafka,
               etcdReplica: params.NumOfEtcd,
               bbsimReplica: bbsimReplicas.toInteger(),
+              adaptersToWait: numberOfAdaptersToWait,
               ])
 
-              if(openoltAdapterChart != "onf/voltha-adapter-openolt"){
-                extraHelmFlags = extraHelmFlags + " --set global.log_level=${logLevel}"
-                deploy_custom_oltAdapterChart(volthaNamespace, oltAdapterReleaseName, openoltAdapterChart, extraHelmFlags)
-              }
+            if(openoltAdapterChart != "onf/voltha-adapter-openolt"){
+              extraHelmFlags = extraHelmFlags + " --set global.log_level=${logLevel}"
+              deploy_custom_oltAdapterChart(volthaNamespace, oltAdapterReleaseName, openoltAdapterChart, extraHelmFlags)
+              waitForAdapters([
+                adaptersToWait: 2
+              ])
+            }
           }
           sh """
           JENKINS_NODE_COOKIE="dontKillMe" _TAG="voltha-api" bash -c "while true; do kubectl port-forward --address 0.0.0.0 -n ${volthaNamespace} svc/voltha-voltha-api 55555:55555; done"&
diff --git a/vars/volthaStackDeploy.groovy b/vars/volthaStackDeploy.groovy
index a49cd35..0f96796 100644
--- a/vars/volthaStackDeploy.groovy
+++ b/vars/volthaStackDeploy.groovy
@@ -11,6 +11,7 @@
       extraHelmFlags: "",
       localCharts: false,
       onosReplica: 1,
+      adaptersToWait: 2,
     ]
 
     if (!config) {
@@ -84,65 +85,7 @@
         done
     """
 
-    println "Wait for adapters to be registered"
-
-    // guarantee that at least two adapters are registered with VOLTHA before proceeding
-    // this is potentially prone to issues if we'll run test with multiple adapter pairs (eg: adtran + open)
-    // until then it is safe to assume we'll be ready once we have two adapters in the system
-    sh """
-      set +x
-      _TAG="voltha-voltha-api" bash -c "while true; do kubectl port-forward --address 0.0.0.0 -n ${cfg.volthaNamespace} svc/voltha-voltha-api 55555:55555; done"&
-    """
-    sh """
-        set +x
-        adapters=\$(voltctl adapter list -q | wc -l)
-        while [[ \$adapters -lt 2 ]]; do
-          sleep 5
-          adapters=\$(voltctl adapter list -q | wc -l)
-        done
-    """
-
-    // NOTE that we need to wait for LastCommunication to be equal or shorter that 5s
-    // as that means the core can talk to the adapters
-    // if voltctl can't read LastCommunication we skip this check
-    def done = false;
-
-    while (!done) {
-      sleep 1
-      def adapters = ""
-      try {
-        adapters = sh (
-          script: 'voltctl adapter list --format "{{gosince .LastCommunication}}"',
-          returnStdout: true,
-        ).trim()
-      } catch (err) {
-        // in some older versions of voltctl the command results in
-        // ERROR: Unexpected error while attempting to format results as table : template: output:1: function "gosince" not defined
-        // if that's the case we won't be able to check the timestamp so it's useless to wait
-        println("voltctl can't parse LastCommunication, skip waiting")
-        done = true
-        break
-      }
-
-      def waitingOn = adapters.split( '\n' ).find{since ->
-        since = since.replaceAll('s','') //remove seconds from the string
-
-        // it has to be a single digit
-        if (since.length() > 1) {
-            return true
-        }
-        if ((since as Integer) > 5) {
-            return true
-        }
-        return false
-      }
-      done = (waitingOn == null || waitingOn.length() == 0)
-    }
-
-    sh """
-      set +x
-      ps aux | grep port-forw | grep -v grep | awk '{print \$2}' | xargs --no-run-if-empty kill -9 || true
-    """
+    waitForAdapters(cfg)
 
     // also make sure that the ONOS config is loaded
     // NOTE that this is only required for VOLTHA-2.8
diff --git a/vars/waitForAdapters.groovy b/vars/waitForAdapters.groovy
index ab5f22b..661e089 100644
--- a/vars/waitForAdapters.groovy
+++ b/vars/waitForAdapters.groovy
@@ -11,6 +11,12 @@
 
     def cfg = defaultConfig + config
 
+    if (cfg.adaptersToWait == 0){
+       //no need to wait
+       println "No need to wait for adapters to be registered"
+       return
+    }
+
     println "Wait for adapters to be registered"
 
     // guarantee that at least the specified number of adapters are registered with VOLTHA before proceeding
