diff --git a/cleanup-pipeline.groovy b/cleanup-pipeline.groovy
index 2a59bf6..e57e704 100644
--- a/cleanup-pipeline.groovy
+++ b/cleanup-pipeline.groovy
@@ -1,6 +1,6 @@
 /**
  *
- * Launch heat stack with basic k8s
+ * Delete heat stack pipeline
  *
  * Expected parameters:
  *   OPENSTACK_API_URL          OpenStack API address
@@ -20,7 +20,6 @@
 
     // connection objects
     def openstackCloud
-    def saltMaster
 
     // value defaults
     def openstackVersion = OPENSTACK_API_CLIENT ? OPENSTACK_API_CLIENT : 'liberty'
diff --git a/delete-broken-stacks-pipeline.groovy b/delete-broken-stacks-pipeline.groovy
new file mode 100644
index 0000000..a24b3b6
--- /dev/null
+++ b/delete-broken-stacks-pipeline.groovy
@@ -0,0 +1,46 @@
+/**
+ *
+ * Delete broken heat stacks pipeline (in CREATE_FAILED or DELETE_FAILED state)
+ *
+ * Expected parameters:
+ *   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)
+ *
+ *
+ */
+
+git = new com.mirantis.mk.Git()
+openstack = new com.mirantis.mk.Openstack()
+salt = new com.mirantis.mk.Salt()
+
+node {
+
+    // connection objects
+    def openstackCloud
+    // value defaults
+    def openstackVersion = OPENSTACK_API_CLIENT ? OPENSTACK_API_CLIENT : 'liberty'
+    def openstackEnv = "${env.WORKSPACE}/venv"
+
+    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('Delete broken Heat stacks') {
+        // get failed stacks
+        def brokenStacks = []
+        brokenStacks.addAll(openstack.getStacksWithStatus(openstackCloud, "CREATE_FAILED", openstackEnv))
+        brokenStacks.addAll(openstack.getStacksWithStatus(openstackCloud, "DELETE_FAILED", openstackEnv))
+        for(int i=0;i<brokenStacks.size();i++){
+            openstack.deleteHeatStack(openstackCloud, brokenStacks[i], openstackEnv)
+        }
+    }
+
+}
