diff --git a/mk-k8s-mcp-oc-deploy-pipeline.groovy b/mk-k8s-mcp-oc-deploy-pipeline.groovy
index 33b8c95..b275f17 100644
--- a/mk-k8s-mcp-oc-deploy-pipeline.groovy
+++ b/mk-k8s-mcp-oc-deploy-pipeline.groovy
@@ -84,7 +84,7 @@
     }
 
     stage("Run k8s conformance e2e tests") {
-        salt.runConformanceTest(saltMaster, K8S_API_SERVER, CONFORMANCE_IMAGE)
+        salt.runConformanceTests(saltMaster, K8S_API_SERVER, CONFORMANCE_IMAGE)
     }
 
     if (HEAT_STACK_DELETE == "1") {
diff --git a/mk-k8s-simple-deploy-pipeline.groovy b/mk-k8s-simple-deploy-pipeline.groovy
index a6f9938..c5fd05a 100644
--- a/mk-k8s-simple-deploy-pipeline.groovy
+++ b/mk-k8s-simple-deploy-pipeline.groovy
@@ -84,7 +84,7 @@
     //}
 
     stage("Run k8s conformance e2e tests") {
-        salt.runConformanceTest(saltMaster, K8S_API_SERVER, CONFORMANCE_IMAGE)
+        salt.runConformanceTests(saltMaster, K8S_API_SERVER, CONFORMANCE_IMAGE)
     }
 
     if (HEAT_STACK_DELETE == "1") {
diff --git a/mk-kubernetes-deploy-pipeline.groovy b/mk-kubernetes-deploy-pipeline.groovy
deleted file mode 100644
index fa77110..0000000
--- a/mk-kubernetes-deploy-pipeline.groovy
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- *
- * Launch heat stack with MCP lab
- *
- * Expected parameters:
- *   HEAT_TEMPLATE_URL          URL to git repo with Heat templates
- *   HEAT_TEMPLATE_CREDENTIALS  Credentials to the Heat templates repo
- *   HEAT_TEMPLATE_BRANCH       Heat templates repo branch
- *   OPENSTACK_API_URL          OpenStack API address
- *   OPENSTACK_API_CREDENTIALS  Credentials to the OpenStack API
- *   OPENSTACK_API_PROJECT      OpenStack project to connect to
- *   OPENSTACK_API_CLIENT       Versions of OpenStack python clients
- *   OPENSTACK_API_VERSION      Version of the OpenStack API (2/3)
- *   SALT_MASTER_CREDENTIALS    Credentials to the Salt API
- *   HEAT_STACK_NAME            Heat stack name
- *   HEAT_STACK_TEMPLATE        Heat stack HOT template
- *   HEAT_STACK_ENVIRONMENT     Heat stack environmental parameters
- *   HEAT_STACK_ZONE            Heat stack availability zone
- *   HEAT_STACK_PUBLIC_NET      Heat stack floating IP pool
- *   CONFORMANCE_IMAGE          Path to docker image with conformance e2e tests
- *   K8S_API_SERVER             Kubernetes API address
- */
-
-git = new com.mirantis.mk.git()
-openstack = new com.mirantis.mk.openstack()
-salt = new com.mirantis.mk.salt()
-
-node {
-
-    // connection objects
-    def openstackCloud
-    def saltMaster
-
-    // value defaults
-    def openstackVersion = OPENSTACK_API_CLIENT ? OPENSTACK_API_CLIENT : "liberty"
-    def openstackEnv = "${env.WORKSPACE}/venv"
-
-    stage ('Download Heat templates') {
-        git.checkoutGitRepository('template', HEAT_TEMPLATE_URL, HEAT_TEMPLATE_BRANCH, HEAT_TEMPLATE_CREDENTIALS)
-    }
-
-    stage('Install OpenStack env') {
-        openstack.setupOpenstackVirtualenv(openstackEnv, openstackVersion)
-    }
-
-    stage('Connect to OpenStack cloud') {
-        openstackCloud = openstack.createOpenstackEnv(OPENSTACK_API_URL, OPENSTACK_API_CREDENTIALS, OPENSTACK_API_PROJECT)
-        openstack.getKeystoneToken(openstackCloud, openstackEnv)
-    }
-
-    stage('Launch new Heat stack') {
-        envParams = [
-            'availability_zone': HEAT_STACK_ZONE,
-            'public_net': HEAT_STACK_PUBLIC_NET
-        ]
-        openstack.createHeatStack(openstackCloud, HEAT_STACK_NAME, HEAT_STACK_TEMPLATE, envParams, HEAT_STACK_ENVIRONMENT, openstackEnv)
-    }
-
-    stage("Connect to Salt master") {
-        saltMasterHost = openstack.getHeatStackOutputParam(openstackCloud, HEAT_STACK_NAME, 'salt_master_ip', openstackEnv)
-        saltMasterUrl = "http://${saltMasterHost}:8000"
-        saltMaster = salt.createSaltConnection(saltMasterUrl, SALT_MASTER_CREDENTIALS)
-    }
-
-    stage("Install core infra") {
-        salt.installFoundationInfra(saltMaster)
-        salt.validateFoundationInfra(saltMaster)
-    }
-
-    stage("Install Kubernetes infra") {
-        salt.installOpenstackMcpInfra(saltMaster)
-    }
-
-    stage("Install Kubernetes control") {
-        salt.installOpenstackMcpControl(saltMaster)
-    }
-
-    stage("Install Kubernetes compute") {
-        salt.installOpenstackMcpCompute(saltMaster)
-    }
-
-    stage("Run k8s conformance e2e tests") {
-        salt.runConformanceTest(saltMaster, K8S_API_SERVER, CONFORMANCE_IMAGE)
-    }
-
-    //stage('Delete Heat stack') {
-    //    openstack.deleteHeatStack(openstackCloud, HEAT_STACK_NAME, openstackEnv)
-    //}
-
-}
