diff --git a/src/com/mirantis/mk/KaasUtils.groovy b/src/com/mirantis/mk/KaasUtils.groovy
index f18b0ef..ccfc69e 100644
--- a/src/com/mirantis/mk/KaasUtils.groovy
+++ b/src/com/mirantis/mk/KaasUtils.groovy
@@ -477,23 +477,37 @@
     }
 
     def jobResults = []
-    if (triggers.osDemoEnabled) {
-        jobs["kaas-core-openstack-patched-${component}"] = {
-            try {
-                common.infoMsg('Deploy: patched KaaS demo with Openstack provider')
-                os_job_info = build job: "kaas-testing-core-openstack-workflow-${component}", parameters: parameters, wait: true
-                def build_description = os_job_info.getDescription()
-                def build_result = os_job_info.getResult()
-                jobResults.add(build_result)
+    jobs["kaas-core-openstack-patched-${component}"] = {
+        try {
+            common.infoMsg('Deploy: patched KaaS demo with Openstack provider')
+            os_job_info = build job: "kaas-testing-core-openstack-workflow-${component}", parameters: parameters, wait: true
+            def build_description = os_job_info.getDescription()
+            def build_result = os_job_info.getResult()
+            jobResults.add(build_result)
 
-                if (build_description) {
-                    currentBuild.description += build_description
-                }
-            } finally {
-                common.infoMsg('Patched KaaS demo with Openstack provider finished')
+            if (build_description) {
+                currentBuild.description += build_description
             }
+        } finally {
+            common.infoMsg('Patched KaaS demo with Openstack provider finished')
         }
     }
+    jobs["kaas-core-vsphere-patched-${component}"] = {
+        try {
+            common.infoMsg('Deploy: patched KaaS demo with VSPHERE provider')
+            vsphere_job_info = build job: "kaas-testing-core-vsphere-workflow-${component}", parameters: parameters, wait: true
+            def build_description = vsphere_job_info.getDescription()
+            def build_result = vsphere_job_info.getResult()
+            jobResults.add(build_result)
+
+            if (build_description) {
+                currentBuild.description += build_description
+            }
+        } finally {
+            common.infoMsg('Patched KaaS demo with VSPHERE provider finished')
+        }
+    }
+
     if (triggers.awsOnDemandDemoEnabled) {
         common.infoMsg('AWS demo triggered, need to sync artifacts in the public-ci cdn..')
         switch (component) {
@@ -521,23 +535,6 @@
             }
         }
     }
-    if (triggers.vsphereDemoEnabled) {
-        jobs["kaas-core-vsphere-patched-${component}"] = {
-            try {
-                common.infoMsg('Deploy: patched KaaS demo with VSPHERE provider')
-                vsphere_job_info = build job: "kaas-testing-core-vsphere-workflow-${component}", parameters: parameters, wait: true
-                def build_description = vsphere_job_info.getDescription()
-                def build_result = vsphere_job_info.getResult()
-                jobResults.add(build_result)
-
-                if (build_description) {
-                    currentBuild.description += build_description
-                }
-            } finally {
-                common.infoMsg('Patched KaaS demo with VSPHERE provider finished')
-            }
-        }
-    }
 
     common.infoMsg('Trigger KaaS demo deployments according to defined provider set')
     if (jobs.size() == 0) {
