diff --git a/Jenkinsfile-rcordlite-topdown-build b/Jenkinsfile-rcordlite-topdown-build
index cfe7253..113ae91 100644
--- a/Jenkinsfile-rcordlite-topdown-build
+++ b/Jenkinsfile-rcordlite-topdown-build
@@ -49,7 +49,7 @@
                             """
                             return kubectl_deleted.toInteger() == 0
                         }
-                    }
+                    }/*
                     timeout(5) {
                         waitUntil {
                             kubectl_deleted = sh returnStdout: true, script: """
@@ -58,7 +58,7 @@
                             """
                             return kubectl_deleted.toInteger() == 0
                         }
-                    }
+                    }*/
                 }
             }
             dir ("helm-charts") {
@@ -78,7 +78,7 @@
                             return kafka_instances_running.toInteger() == 2
                         }
                     }
-                }
+                }/*
                 stage('Install Logging Infrastructure') {
                     timeout(10) {
                         sh returnStdout: true, script: """
@@ -98,7 +98,7 @@
                         scripts/wait_for_pods.sh
                         """
                     }
-                }
+                }*/
                 stage('Install voltha') {
                     timeout(10) {
                         sh returnStdout: true, script: """
@@ -150,7 +150,7 @@
                             export KUBECONFIG=$WORKSPACE/${configBaseDir}/${configKubernetesDir}/${configFileName}.conf &&
                             kubectl get pods | grep -i xos | grep -i running | grep 1/1 | wc -l
                             """
-                            return xos_core_completed.toInteger() == 7
+                            return xos_core_completed.toInteger() == 6
                         }
                     }
                 }
diff --git a/Jenkinsfile-rcordlite-zerotouch-build b/Jenkinsfile-rcordlite-zerotouch-build
index ed11298..2683b74 100644
--- a/Jenkinsfile-rcordlite-zerotouch-build
+++ b/Jenkinsfile-rcordlite-zerotouch-build
@@ -49,7 +49,7 @@
                             """
                             return kubectl_deleted.toInteger() == 0
                         }
-                    }
+                    }/*
                     timeout(5) {
                         waitUntil {
                             kubectl_deleted = sh returnStdout: true, script: """
@@ -58,7 +58,7 @@
                             """
                             return kubectl_deleted.toInteger() == 0
                         }
-                    }
+                    }*/
                 }
             }
             dir ("helm-charts") {
@@ -78,7 +78,7 @@
                             return kafka_instances_running.toInteger() == 2
                         }
                     }
-                }
+                }/*
                 stage('Install Logging Infrastructure') {
                     timeout(10) {
                         sh returnStdout: true, script: """
@@ -98,7 +98,7 @@
                         scripts/wait_for_pods.sh
                         """
                     }
-                }
+                }*/
                 stage('Install voltha') {
                     timeout(10) {
                         sh returnStdout: true, script: """
@@ -150,7 +150,7 @@
                             export KUBECONFIG=$WORKSPACE/${configBaseDir}/${configKubernetesDir}/${configFileName}.conf &&
                             kubectl get pods | grep -i xos | grep -i running | grep 1/1 | wc -l
                             """
-                            return xos_core_completed.toInteger() == 7
+                            return xos_core_completed.toInteger() == 6
                         }
                     }
                 }
