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/jjb/voltha-scale.yaml b/jjb/voltha-scale.yaml
index 1f3ac62..8ff06fb 100644
--- a/jjb/voltha-scale.yaml
+++ b/jjb/voltha-scale.yaml
@@ -124,7 +124,7 @@
           provisionSubscribers: true
           withEapol: false
           withDhcp: true
-          withIgmp: false
+          withIgmp: true
           workflow: tt
           inMemoryEtcdStorage: false
           extraHelmFlags: >
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
