diff --git a/test-salt-formulas-pipeline.groovy b/test-salt-formulas-pipeline.groovy
index d63a78c..0a44247 100644
--- a/test-salt-formulas-pipeline.groovy
+++ b/test-salt-formulas-pipeline.groovy
@@ -29,15 +29,6 @@
 
 node("python") {
   try{
-    stage("stop old tests"){
-      if (gerritRef) {
-        def runningTestBuildNums = _getRunningTriggeredTestsBuildNumbers(env["JOB_NAME"], GERRIT_CHANGE_NUMBER, GERRIT_PATCHSET_NUMBER)
-        for(int i=0; i<runningTestBuildNums.size(); i++){
-          common.infoMsg("Old test with run number ${runningTestBuildNums[i]} found, stopping")
-          Jenkins.instance.getItemByFullName(env["JOB_NAME"]).getBuildByNumber(runningTestBuildNums[i]).finish(hudson.model.Result.ABORTED, new java.io.IOException("Aborting build"));
-        }
-      }
-    }
     stage("checkout") {
       if (gerritRef) {
         // job is triggered by Gerrit
@@ -140,15 +131,3 @@
   }
 }
 
-@NonCPS
-def _getRunningTriggeredTestsBuildNumbers(jobName, gerritChangeNumber, excludePatchsetNumber){
-  def gerrit = new com.mirantis.mk.Gerrit()
-  def jenkinsUtils = new com.mirantis.mk.JenkinsUtils()
-  def triggeredBuilds= gerrit.getGerritTriggeredBuilds(jenkinsUtils.getJobRunningBuilds(jobName), gerritChangeNumber, excludePatchsetNumber)
-  def buildNums =[]
-  for(int i=0;i<triggeredBuilds.size();i++){
-      buildNums.add(triggeredBuilds[i].number)
-  }
-  return buildNums
-}
-
diff --git a/test-salt-models-pipeline.groovy b/test-salt-models-pipeline.groovy
index 79a6662..cf37b30 100644
--- a/test-salt-models-pipeline.groovy
+++ b/test-salt-models-pipeline.groovy
@@ -46,15 +46,6 @@
 def checkouted = false
 node("python") {
   try{
-    stage("stop old tests"){
-      if (gerritRef) {
-        def runningTestBuildNums = _getRunningTriggeredTestsBuildNumbers(env["JOB_NAME"], GERRIT_CHANGE_NUMBER, GERRIT_PATCHSET_NUMBER)
-        for(int i=0; i<runningTestBuildNums.size(); i++){
-          common.infoMsg("Old test with run number ${runningTestBuildNums[i]} found, stopping")
-          Jenkins.instance.getItemByFullName(env["JOB_NAME"]).getBuildByNumber(runningTestBuildNums[i]).finish(hudson.model.Result.ABORTED, new java.io.IOException("Aborting build"));
-        }
-      }
-    }
     stage("checkout") {
       if (gerritRef) {
         // job is triggered by Gerrit
@@ -126,14 +117,3 @@
   }
 }
 
-@NonCPS
-def _getRunningTriggeredTestsBuildNumbers(jobName, gerritChangeNumber, excludePatchsetNumber){
-  def gerrit = new com.mirantis.mk.Gerrit()
-  def jenkinsUtils = new com.mirantis.mk.JenkinsUtils()
-  def triggeredBuilds= gerrit.getGerritTriggeredBuilds(jenkinsUtils.getJobRunningBuilds(jobName), gerritChangeNumber, excludePatchsetNumber)
-  def buildNums =[]
-  for (int i=0; i<triggeredBuilds.size(); i++) {
-      buildNums.add(triggeredBuilds[i].number)
-  }
-  return buildNums
-}
\ No newline at end of file
