diff --git a/jobs/pipelines/deploy-cicd-and-run-tests.groovy b/jobs/pipelines/deploy-cicd-and-run-tests.groovy
new file mode 100644
index 0000000..d44ce62
--- /dev/null
+++ b/jobs/pipelines/deploy-cicd-and-run-tests.groovy
@@ -0,0 +1,56 @@
+@Library('tcp-qa')_
+
+def common = new com.mirantis.mk.Common()
+def shared = new com.mirantis.system_qa.SharedPipeline()
+def steps = "hardware,create_model,salt," + env.DRIVETRAIN_STACK_INSTALL + "," + env.PLATFORM_STACK_INSTALL
+
+node ("${NODE_NAME}") {
+  try {
+
+    stage("Clean the environment and clone tcp-qa") {
+        shared.prepare_working_dir()
+    }
+
+    stage("Create environment, generate model, bootstrap the salt-cluster") {
+        // steps: "hardware,create_model,salt"
+        shared.swarm_bootstrap_salt_cluster_devops()
+    }
+
+    stage("Install core infrastructure and deploy CICD nodes") {
+        // steps: env.DRIVETRAIN_STACK_INSTALL
+        shared.swarm_deploy_cicd(env.DRIVETRAIN_STACK_INSTALL)
+    }
+
+    stage("Install core infrastructure and deploy CICD nodes") {
+        // steps: env.PLATFORM_STACK_INSTALL
+        shared.swarm_deploy_platform(env.PLATFORM_STACK_INSTALL)
+    }
+
+    stage("Run tests") {
+        shared.swarm_run_pytest(steps)
+    }
+
+  } catch (e) {
+      common.printMsg("Job failed", "red")
+      shared.run_cmd("""\
+          dos.py suspend ${ENV_NAME} || true
+          dos.py snapshot ${ENV_NAME} test_failed || true
+          """)
+      throw e
+  } finally {
+    // TODO(ddmitriev): analyze the "def currentResult = currentBuild.result ?: 'SUCCESS'"
+    // and report appropriate data to TestRail
+    if ("${env.SHUTDOWN_ENV_ON_TEARDOWN}" == "false") {
+        shared.run_cmd("""\
+            dos.py resume ${ENV_NAME} || true
+            dos.py time-sync ${ENV_NAME} || true
+        """)
+    } else {
+        shared.run_cmd("""\
+            dos.py destroy ${ENV_NAME} || true
+        """)
+    }
+    shared.report_deploy_result(steps)
+    shared.report_test_result()
+  }
+}
diff --git a/jobs/pipelines/deploy-cicd-and-test-k8s.groovy b/jobs/pipelines/deploy-cicd-and-test-k8s.groovy
deleted file mode 100644
index baa9853..0000000
--- a/jobs/pipelines/deploy-cicd-and-test-k8s.groovy
+++ /dev/null
@@ -1,87 +0,0 @@
-@Library('tcp-qa')_
-
-common = new com.mirantis.mk.Common()
-shared = new com.mirantis.system_qa.SharedPipeline()
-
-
-node ("${NODE_NAME}") {
-  try {
-
-    stage("Clean the environment and clone tcp-qa") {
-        shared.prepare_working_dir()
-    }
-
-    stage("Create environment, generate model, bootstrap the salt-cluster") {
-        shared.swarm_bootstrap_salt_cluster_devops()
-    }
-
-    stage("Install core infrastructure and deploy CICD nodes") {
-        shared.swarm_deploy_cicd(env.DRIVETRAIN_STACK_INSTALL)
-    }
-
-    stage("Install core infrastructure and deploy CICD nodes") {
-        shared.swarm_deploy_platform(env.PLATFORM_STACK_INSTALL)
-    }
-
-    stage("Run tests") {
-        shared.run_cmd("""\
-            export ENV_NAME=${ENV_NAME}
-            . ./tcp_tests/utils/env_salt
-            . ./tcp_tests/utils/env_k8s
-
-            # Prepare snapshots that may be used in tests if MANAGER=devops
-            cp \$(pwd)/${ENV_NAME}_salt_deployed.ini \$(pwd)/${ENV_NAME}_k8s_deployed.ini
-            cp \$(pwd)/${ENV_NAME}_salt_deployed.ini \$(pwd)/${ENV_NAME}_stacklight_deployed.ini
-            #dos.py suspend ${ENV_NAME}
-            #dos.py snapshot ${ENV_NAME} k8s_deployed
-            #dos.py snapshot ${ENV_NAME} stacklight_deployed
-            #dos.py resume ${ENV_NAME}
-            #dos.py time-sync ${ENV_NAME}
-
-            # Initialize variables used in tcp-qa tests
-            export CURRENT_SNAPSHOT=stacklight_deployed  # provide the snapshot name required by the test
-            export TESTS_CONFIGS=\$(pwd)/${ENV_NAME}_salt_deployed.ini  # some SSH data may be filled separatelly
-
-            #export MANAGER=empty  # skip 'hardware' fixture, disable snapshot/revert features
-            export MANAGER=devops  # use 'hardware' fixture to manage fuel-devops environment
-            export MAKE_SNAPSHOT_STAGES=false  # skip 'hardware' fixture, disable snapshot/revert features
-            # export SSH='{...}'  # non-empty SSH required to skip 'underlay' fixture. It is filled from TESTS_CONFIGS now
-            export salt_master_host=\$SALT_MASTER_IP  # skip salt_deployed fixture
-            export salt_master_port=6969
-            export SALT_USER=\$SALTAPI_USER
-            export SALT_PASSWORD=\$SALTAPI_PASS
-            export CORE_INSTALLED=true  # skip core_deployed fixture
-            export K8S_INSTALLED=true              # skip k8s_deployed fixture
-            export sl_installed=true              # skip stacklight_deployed fixture
-
-            py.test --junit-xml=nosetests.xml ${RUN_TEST_OPTS}
-
-            dos.py suspend ${ENV_NAME}
-            dos.py snapshot ${ENV_NAME} test_completed
-            """)
-    }
-
-  } catch (e) {
-      common.printMsg("Job failed", "red")
-    shared.run_cmd("""\
-        dos.py suspend ${ENV_NAME} || true
-        dos.py snapshot ${ENV_NAME} test_failed || true
-        """)
-      throw e
-  } finally {
-    // TODO(ddmitriev): analyze the "def currentResult = currentBuild.result ?: 'SUCCESS'"
-    // and report appropriate data to TestRail
-    if ("${env.SHUTDOWN_ENV_ON_TEARDOWN}" == "true") {
-        shared.run_cmd("""\
-            dos.py destroy ${ENV_NAME} || true
-        """)
-    } else {
-        shared.run_cmd("""\
-            dos.py resume ${ENV_NAME} || true
-            dos.py time-sync ${ENV_NAME} || true
-        """)
-    }
-    shared.report_deploy_result("hardware,create_model,salt," + env.DRIVETRAIN_STACK_INSTALL + "," + env.PLATFORM_STACK_INSTALL)
-    shared.report_test_result()
-  }
-}
\ No newline at end of file
diff --git a/jobs/pipelines/deploy-cicd-and-test-openstack.groovy b/jobs/pipelines/deploy-cicd-and-test-openstack.groovy
deleted file mode 100644
index 585ad83..0000000
--- a/jobs/pipelines/deploy-cicd-and-test-openstack.groovy
+++ /dev/null
@@ -1,89 +0,0 @@
-@Library('tcp-qa')_
-
-common = new com.mirantis.mk.Common()
-shared = new com.mirantis.system_qa.SharedPipeline()
-
-
-node ("${NODE_NAME}") {
-  try {
-
-    stage("Clean the environment and clone tcp-qa") {
-        shared.prepare_working_dir()
-    }
-
-    stage("Create environment, generate model, bootstrap the salt-cluster") {
-        shared.swarm_bootstrap_salt_cluster_devops()
-    }
-
-    stage("Install core infrastructure and deploy CICD nodes") {
-        shared.swarm_deploy_cicd(env.DRIVETRAIN_STACK_INSTALL)
-    }
-
-    stage("Install core infrastructure and deploy CICD nodes") {
-        shared.swarm_deploy_platform(env.PLATFORM_STACK_INSTALL)
-    }
-
-    stage("Run tests") {
-        shared.run_cmd("""\
-            export ENV_NAME=${ENV_NAME}
-            . ./tcp_tests/utils/env_salt
-            # TODO: . ./tcp_tests/utils/env_keystonercv3
-
-            # Prepare snapshots that may be used in tests if MANAGER=devops
-            cp \$(pwd)/${ENV_NAME}_salt_deployed.ini \$(pwd)/${ENV_NAME}_openstack_deployed.ini
-            cp \$(pwd)/${ENV_NAME}_salt_deployed.ini \$(pwd)/${ENV_NAME}_stacklight_deployed.ini
-            cp \$(pwd)/${ENV_NAME}_salt_deployed.ini \$(pwd)/${ENV_NAME}_sl_os_deployed.ini
-            #dos.py suspend ${ENV_NAME}
-            #dos.py snapshot ${ENV_NAME} openstack_deployed
-            #dos.py snapshot ${ENV_NAME} stacklight_deployed
-            #dos.py snapshot ${ENV_NAME} sl_os_deployed
-            #dos.py resume ${ENV_NAME}
-            #dos.py time-sync ${ENV_NAME}
-
-            # Initialize variables used in tcp-qa tests
-            export CURRENT_SNAPSHOT=stacklight_deployed  # provide the snapshot name required by the test
-            export TESTS_CONFIGS=\$(pwd)/${ENV_NAME}_salt_deployed.ini  # some SSH data may be filled separatelly
-
-            #export MANAGER=empty  # skip 'hardware' fixture, disable snapshot/revert features
-            export MANAGER=devops  # use 'hardware' fixture to manage fuel-devops environment
-            export MAKE_SNAPSHOT_STAGES=false  # skip 'hardware' fixture, disable snapshot/revert features
-            # export SSH='{...}'  # non-empty SSH required to skip 'underlay' fixture. It is filled from TESTS_CONFIGS now
-            export salt_master_host=\$SALT_MASTER_IP  # skip salt_deployed fixture
-            export salt_master_port=6969
-            export SALT_USER=\$SALTAPI_USER
-            export SALT_PASSWORD=\$SALTAPI_PASS
-            export CORE_INSTALLED=true  # skip core_deployed fixture
-            export OPENSTACK_INSTALLED=true              # skip k8s_deployed fixture
-            export sl_installed=true              # skip stacklight_deployed fixture
-
-            py.test --junit-xml=nosetests.xml ${RUN_TEST_OPTS}
-
-            dos.py suspend ${ENV_NAME}
-            dos.py snapshot ${ENV_NAME} test_completed
-            """)
-    }
-
-  } catch (e) {
-      common.printMsg("Job failed", "red")
-      shared.run_cmd("""\
-          dos.py suspend ${ENV_NAME} || true
-          dos.py snapshot ${ENV_NAME} test_failed || true
-          """)
-      throw e
-  } finally {
-    // TODO(ddmitriev): analyze the "def currentResult = currentBuild.result ?: 'SUCCESS'"
-    // and report appropriate data to TestRail
-    if ("${env.SHUTDOWN_ENV_ON_TEARDOWN}" == "true") {
-        shared.run_cmd("""\
-            dos.py destroy ${ENV_NAME} || true
-        """)
-    } else {
-        shared.run_cmd("""\
-            dos.py resume ${ENV_NAME} || true
-            dos.py time-sync ${ENV_NAME} || true
-        """)
-    }
-    shared.report_deploy_result("hardware,create_model,salt," + env.DRIVETRAIN_STACK_INSTALL + "," + env.PLATFORM_STACK_INSTALL)
-    shared.report_test_result()
-  }
-}
\ No newline at end of file
diff --git a/jobs/pipelines/swarm-run-pytest.groovy b/jobs/pipelines/swarm-run-pytest.groovy
new file mode 100644
index 0000000..d0422fd
--- /dev/null
+++ b/jobs/pipelines/swarm-run-pytest.groovy
@@ -0,0 +1,80 @@
+/**
+ *
+ * Deploy the product cluster using Jenkins master on CICD cluster
+ *
+ * Expected parameters:
+
+ *   ENV_NAME                      Fuel-devops environment name
+ *   PASSED_STEPS                  Steps passed to install components using Jenkins on CICD cluster: "salt,core,cicd,openstack:3200,stacklight:2400",
+                                   where 3200 and 2400 might be timeouts (not used in the testing pipeline)
+ *   RUN_TEST_OPTS                 Pytest option -k or -m, with expression to select necessary tests. Additional pytest options are allowed.
+ *   PARENT_NODE_NAME              Name of the jenkins slave to create the environment
+ *   PARENT_WORKSPACE              Path to the workspace of the parent job to use tcp-qa repo
+ *   TCP_QA_REFS                   Reference to the tcp-qa change on review.gerrithub.io, like refs/changes/46/418546/41
+ *   SHUTDOWN_ENV_ON_TEARDOWN      optional, shutdown fuel-devops environment at the end of the job
+ *   LAB_CONFIG_NAME               Not used (backward compatibility, for manual deployment steps only)
+ *   REPOSITORY_SUITE              Not used (backward compatibility, for manual deployment steps only)
+ *   MCP_IMAGE_PATH1604            Not used (backward compatibility, for manual deployment steps only)
+ *   IMAGE_PATH_CFG01_DAY01        Not used (backward compatibility, for manual deployment steps only)
+ */
+
+@Library('tcp-qa')_
+
+common = new com.mirantis.mk.Common()
+shared = new com.mirantis.system_qa.SharedPipeline()
+
+if (! env.PARENT_NODE_NAME) {
+    error "'PARENT_NODE_NAME' must be set from the parent deployment job!"
+}
+
+node ("${PARENT_NODE_NAME}") {
+    if (! fileExists("${PARENT_WORKSPACE}")) {
+        error "'PARENT_WORKSPACE' contains path to non-existing directory ${PARENT_WORKSPACE} on the node '${PARENT_NODE_NAME}'."
+    }
+    dir("${PARENT_WORKSPACE}") {
+        try {
+
+            stage("Run tests") {
+                def steps = shared.get_steps_list(PASSED_STEPS)
+                def sources = """\
+                    export ENV_NAME=${ENV_NAME}
+                    . ./tcp_tests/utils/env_salt"""
+                if (steps.contains('k8s')) {
+                    sources += """
+                    . ./tcp_tests/utils/env_k8s\n"""
+                }
+                if (steps.contains('openstack')) {
+                    sources += """
+                    # TODO: . ./tcp_tests/utils/env_keystonercv3\n"""
+                }
+                def installed = steps.collect {"""\
+                    export ${it}_installed=true"""}.join("\n")
+
+                shared.run_cmd(sources + installed + """
+                    export MANAGER=devops  # use 'hardware' fixture to manage fuel-devops environment
+                    export salt_master_host=\$SALT_MASTER_IP  # skip salt_deployed fixture
+                    export salt_master_port=6969
+                    export SALT_USER=\$SALTAPI_USER
+                    export SALT_PASSWORD=\$SALTAPI_PASS
+
+                    py.test --junit-xml=nosetests.xml ${RUN_TEST_OPTS}
+
+                    dos.py suspend ${ENV_NAME}
+                    dos.py snapshot ${ENV_NAME} test_completed
+                    """)
+            }
+
+        } catch (e) {
+            common.printMsg("Job failed", "red")
+            throw e
+        } finally {
+            // TODO(ddmitriev): analyze the "def currentResult = currentBuild.result ?: 'SUCCESS'"
+            // and report appropriate data to TestRail
+            if ("${env.SHUTDOWN_ENV_ON_TEARDOWN}" == "true") {
+                shared.run_cmd("""\
+                    dos.py destroy ${ENV_NAME}
+                """)
+            }
+        }
+    }
+}
diff --git a/src/com/mirantis/system_qa/SharedPipeline.groovy b/src/com/mirantis/system_qa/SharedPipeline.groovy
index af2b2dc..a64b950 100644
--- a/src/com/mirantis/system_qa/SharedPipeline.groovy
+++ b/src/com/mirantis/system_qa/SharedPipeline.groovy
@@ -101,6 +101,28 @@
             parameters: parameters
 }
 
+def swarm_run_pytest(String passed_steps) {
+        // Run pytest tests
+        def common = new com.mirantis.mk.Common()
+        def parameters = [
+                string(name: 'ENV_NAME', value: "${ENV_NAME}"),
+                string(name: 'PASSED_STEPS', value: passed_steps),
+                string(name: 'RUN_TEST_OPTS', value: "${RUN_TEST_OPTS}"),
+                string(name: 'PARENT_NODE_NAME', value: "${NODE_NAME}"),
+                string(name: 'PARENT_WORKSPACE', value: pwd()),
+                string(name: 'TCP_QA_REFS', value: "${TCP_QA_REFS}"),
+                booleanParam(name: 'SHUTDOWN_ENV_ON_TEARDOWN', value: false),
+                string(name: 'LAB_CONFIG_NAME', value: "${LAB_CONFIG_NAME}"),
+                string(name: 'REPOSITORY_SUITE', value: "${MCP_VERSION}"),
+                string(name: 'MCP_IMAGE_PATH1604', value: "${MCP_IMAGE_PATH1604}"),
+                string(name: 'IMAGE_PATH_CFG01_DAY01', value: "${IMAGE_PATH_CFG01_DAY01}"),
+            ]
+        common.printMsg("Start building job 'swarm-run-pytest' with parameters:", "purple")
+        common.prettyPrint(parameters)
+        build job: 'swarm-run-pytest',
+            parameters: parameters
+}
+
 def generate_cookied_model() {
         def common = new com.mirantis.mk.Common()
         // do not fail if environment doesn't exists
@@ -219,13 +241,18 @@
         dos.py suspend ${ENV_NAME}
         dos.py snapshot ${ENV_NAME} ${stack}_deployed
         dos.py resume ${ENV_NAME}
-        dos.py time-sync ${ENV_NAME}
+        dos.py time-sync ${ENV_NAME} || dos.py time-sync ${ENV_NAME} # sometimes, timesync may fail. Need to update it in fuel-devops.
         if [ -f \$(pwd)/${ENV_NAME}_salt_deployed.ini ]; then
             cp \$(pwd)/${ENV_NAME}_salt_deployed.ini \$(pwd)/${ENV_NAME}_${stack}_deployed.ini
         fi
     """)
 }
 
+def get_steps_list(steps) {
+    // Make a list from comma separated string
+    return steps.split(',').collect { it.split(':')[0] }
+}
+
 def report_deploy_result(deploy_expected_stacks) {
 }
 
diff --git a/tcp_tests/fixtures/stacklight_fixtures.py b/tcp_tests/fixtures/stacklight_fixtures.py
index 2c30530..df0d516 100644
--- a/tcp_tests/fixtures/stacklight_fixtures.py
+++ b/tcp_tests/fixtures/stacklight_fixtures.py
@@ -52,7 +52,7 @@
     :rtype: SLManager
     """
     # Deploy SL services
-    if not config.stack_light.sl_installed:
+    if not config.stack_light.stacklight_installed:
         steps_path = config.sl_deploy.sl_steps_path
         commands = underlay.read_template(steps_path)
         sl_actions.install(commands)
diff --git a/tcp_tests/managers/sl_manager.py b/tcp_tests/managers/sl_manager.py
index ba45e16..0f81596 100644
--- a/tcp_tests/managers/sl_manager.py
+++ b/tcp_tests/managers/sl_manager.py
@@ -39,7 +39,7 @@
 
     def install(self, commands, label='Install SL services'):
         self.execute_commands(commands, label=label)
-        self.__config.stack_light.sl_installed = True
+        self.__config.stack_light.stacklight_installed = True
         self.__config.stack_light.sl_vip_host = self.get_sl_vip()
 
     def get_sl_vip(self):
diff --git a/tcp_tests/managers/underlay_ssh_manager.py b/tcp_tests/managers/underlay_ssh_manager.py
index 495e51d..ee23654 100644
--- a/tcp_tests/managers/underlay_ssh_manager.py
+++ b/tcp_tests/managers/underlay_ssh_manager.py
@@ -490,7 +490,8 @@
             # dump files
             LOG.info("Archive artifacts on all nodes")
             master.check_call('salt "*" cmd.run "{0}"'.format(dump_commands),
-                              raise_on_err=False)
+                              raise_on_err=False,
+                              timeout=600)
 
             # create target dir for archives
             master.check_call("mkdir /root/dump/")
diff --git a/tcp_tests/settings_oslo.py b/tcp_tests/settings_oslo.py
index 8da0fae..ba3fb64 100644
--- a/tcp_tests/settings_oslo.py
+++ b/tcp_tests/settings_oslo.py
@@ -270,7 +270,7 @@
 ]
 
 sl_opts = [
-    ct.Cfg('sl_installed', ct.Boolean(),
+    ct.Cfg('stacklight_installed', ct.Boolean(),
            help="", default=False),
     ct.Cfg('sl_version', ct.String(),
            help="StackLight version. Could be 1 or 2", default=''),
diff --git a/tcp_tests/templates/cookied-cicd-k8s-calico-sl/deploy-and-test.groovy b/tcp_tests/templates/cookied-cicd-k8s-calico-sl/deploy-and-test.groovy
deleted file mode 100644
index d0f69b7..0000000
--- a/tcp_tests/templates/cookied-cicd-k8s-calico-sl/deploy-and-test.groovy
+++ /dev/null
@@ -1,72 +0,0 @@
-@Library('tcp-qa')_
-
-common = new com.mirantis.mk.Common()
-shared = new com.mirantis.system_qa.SharedPipeline()
-
-node ("${NODE_NAME}") {
-  try {
-
-    stage("Clean the environment and clone tcp-qa") {
-        shared.prepare_working_dir()
-    }
-
-    stage("Create environment, generate mode, bootstrap the salt-cluster") {
-        shared.swarm_bootstrap_salt_cluster_devops()
-    }
-
-    // Install core and cicd
-    stage("Run Jenkins job on salt-master [deploy_openstack:core]") {
-        shared.run_job_on_day01_node("core")
-    }
-
-    stage("Run Jenkins job on salt-master [deploy_openstack:cicd]") {
-        shared.run_job_on_day01_node("cicd")
-    }
-
-    // Install the cluster
-    for (stack in "${PLATFORM_STACK_INSTALL}".split(",")) {
-        stage("Run Jenkins job on CICD [deploy_openstack:${stack}]") {
-            shared.run_job_on_cicd_nodes(stack)
-        }
-    }
-
-    stage("Run tests") {
-        shared.run_cmd("""\
-            export ENV_NAME=${ENV_NAME}
-            . ./tcp_tests/utils/env_salt
-            . ./tcp_tests/utils/env_k8s
-
-            # Initialize variables used in tcp-qa tests
-            export CURRENT_SNAPSHOT=stacklight_deployed  # provide the snapshot name required by the test
-            export TESTS_CONFIGS=\$(pwd)/${ENV_NAME}_salt_deployed.ini  # some SSH data may be filled separatelly
-
-            export MANAGER=empty  # skip 'hardware' fixture, disable snapshot/revert features
-            # export SSH='{...}'  # non-empty SSH required to skip 'underlay' fixture. It is filled from TESTS_CONFIGS now
-            export salt_master_host=\$SALT_MASTER_IP  # skip salt_deployed fixture
-            export salt_master_port=6969
-            export SALT_USER=\$SALTAPI_USER
-            export SALT_PASSWORD=\$SALTAPI_PASS
-            export CORE_INSTALLED=true  # skip core_deployed fixture
-            export K8S_INSTALLED=true              # skip k8s_deployed fixture
-            export sl_installed=true              # skip stacklight_deployed fixture
-
-            py.test -vvv -s -p no:django -p no:ipdb --junit-xml=nosetests.xml -m k8s_calico_sl
-
-            #dos.py suspend ${ENV_NAME}
-            #dos.py snapshot ${ENV_NAME} test_completed
-            #dos.py resume ${ENV_NAME}
-            #dos.py time-sync ${ENV_NAME}
-            """)
-    }
-
-  } catch (e) {
-      common.printMsg("Job failed", "red")
-      throw e
-  } finally {
-    // TODO(ddmitriev): analyze the "def currentResult = currentBuild.result ?: 'SUCCESS'"
-    // and report appropriate data to TestRail
-    shared.run_cmd("""\
-        dos.py destroy ${ENV_NAME}
-    """)
-  }
-}
\ No newline at end of file
diff --git a/tcp_tests/templates/cookied-cicd-k8s-calico/deploy-and-test.groovy b/tcp_tests/templates/cookied-cicd-k8s-calico/deploy-and-test.groovy
deleted file mode 100644
index 83335a9..0000000
--- a/tcp_tests/templates/cookied-cicd-k8s-calico/deploy-and-test.groovy
+++ /dev/null
@@ -1,67 +0,0 @@
-@Library('tcp-qa')_
-
-common = new com.mirantis.mk.Common()
-shared = new com.mirantis.system_qa.SharedPipeline()
-
-node ("${NODE_NAME}") {
-  try {
-
-    stage("Clean the environment and clone tcp-qa") {
-        shared.prepare_working_dir()
-    }
-
-    stage("Create environment, generate mode, bootstrap the salt-cluster") {
-        shared.swarm_bootstrap_salt_cluster_devops()
-    }
-
-    // Install core and cicd
-    stage("Run Jenkins job on salt-master [deploy_openstack:core]") {
-        shared.run_job_on_day01_node("core")
-    }
-
-    stage("Run Jenkins job on salt-master [deploy_openstack:cicd]") {
-        shared.run_job_on_day01_node("cicd")
-    }
-
-    // Install the cluster
-    for (stack in "${PLATFORM_STACK_INSTALL}".split(",")) {
-        stage("Run Jenkins job on CICD [deploy_openstack:${stack}]") {
-            shared.run_job_on_cicd_nodes(stack)
-        }
-    }
-
-    stage("Run tests") {
-        shared.run_cmd("""\
-            export ENV_NAME=${ENV_NAME}
-            . ./tcp_tests/utils/env_salt
-            . ./tcp_tests/utils/env_k8s
-
-            # Initialize variables used in tcp-qa tests
-            export CURRENT_SNAPSHOT=k8s_deployed  # provide the snapshot name required by the test
-            export TESTS_CONFIGS=\$(pwd)/${ENV_NAME}_salt_deployed.ini  # some SSH data may be filled separatelly
-
-            export MANAGER=empty  # skip 'hardware' fixture, disable snapshot/revert features
-            # export SSH='{...}'  # non-empty SSH required to skip 'underlay' fixture. It is filled from TESTS_CONFIGS now
-            export salt_master_host=\$SALT_MASTER_IP  # skip salt_deployed fixture
-            export salt_master_port=6969
-            export SALT_USER=\$SALTAPI_USER
-            export SALT_PASSWORD=\$SALTAPI_PASS
-            export CORE_INSTALLED=true  # skip core_deployed fixture
-            export K8S_INSTALLED=true              # skip k8s_deployed fixture
-
-            py.test -vvv -s -p no:django -p no:ipdb --junit-xml=nosetests.xml -m k8s_calico
-            """)
-    }
-
-  } catch (e) {
-      common.printMsg("Job failed", "red")
-      throw e
-  } finally {
-    // TODO(ddmitriev): analyze the "def currentResult = currentBuild.result ?: 'SUCCESS'"
-    // and report appropriate data to TestRail
-    shared.run_cmd("""\
-        dos.py destroy ${ENV_NAME}
-    """)
-  }
-
-}
\ No newline at end of file
diff --git a/tcp_tests/templates/virtual-mcp-pike-dvr-ssl-barbican/underlay.yaml b/tcp_tests/templates/virtual-mcp-pike-dvr-ssl-barbican/underlay.yaml
index d2a1bcc..b10f820 100644
--- a/tcp_tests/templates/virtual-mcp-pike-dvr-ssl-barbican/underlay.yaml
+++ b/tcp_tests/templates/virtual-mcp-pike-dvr-ssl-barbican/underlay.yaml
@@ -13,7 +13,7 @@
  - &cloudinit_user_data_1604 {{ CLOUDINIT_USER_DATA_1604 }}
 
 {% set LAB_CONFIG_NAME = os_env('LAB_CONFIG_NAME', 'virtual-mcp-pike-dvr-ssl-barbican') %}
-{% set DOMAIN_NAME = os_env('DOMAIN_NAME', LAB_CONFIG_NAME) + '.local' %}
+{% set DOMAIN_NAME = os_env('DOMAIN_NAME', LAB_CONFIG_NAME) %}
 {% set HOSTNAME_CFG01 = os_env('HOSTNAME_CFG01', 'cfg01') %}
 {% set HOSTNAME_CTL01 = os_env('HOSTNAME_CTL01', 'ctl01') %}
 {% set HOSTNAME_CTL02 = os_env('HOSTNAME_CTL02', 'ctl02') %}
diff --git a/tcp_tests/templates/virtual-mcp-pike-ovs-l2gw-bgpvpn/salt.yaml b/tcp_tests/templates/virtual-mcp-pike-ovs-l2gw-bgpvpn/salt.yaml
index 31aaa99..d94035e 100644
--- a/tcp_tests/templates/virtual-mcp-pike-ovs-l2gw-bgpvpn/salt.yaml
+++ b/tcp_tests/templates/virtual-mcp-pike-ovs-l2gw-bgpvpn/salt.yaml
@@ -20,7 +20,7 @@
 
 {{ SHARED.MACRO_CLONE_RECLASS_MODELS() }}
 
-{{ SHARED.MACRO_CONFIGURE_RECLASS(FORMULA_SERVICES='"linux" "reclass" "salt" "openssh" "ntp" "git" "nginx" "collectd" "sensu" "heka" "sphinx" "keystone" "mysql" "grafana" "haproxy" "rsyslog" "horizon" "prometheus" "telegraf" "elasticsearch" "fluentd" "backupninja" "auditd" "gnocchi"') }}
+{{ SHARED.MACRO_CONFIGURE_RECLASS(FORMULA_SERVICES='"linux" "reclass" "salt" "openssh" "ntp" "git" "nginx" "collectd" "sensu" "heka" "sphinx" "keystone" "mysql" "grafana" "haproxy" "rsyslog" "horizon" "prometheus" "telegraf" "elasticsearch" "fluentd" "backupninja" "auditd" "gnocchi" "manila"') }}
 
 {{ SHARED.MACRO_INSTALL_SALT_MINIONS() }}
 
diff --git a/tcp_tests/templates/virtual-offline-pike-ovs-dpdk/salt.yaml b/tcp_tests/templates/virtual-offline-pike-ovs-dpdk/salt.yaml
index 74679f9..ddb5b13 100644
--- a/tcp_tests/templates/virtual-offline-pike-ovs-dpdk/salt.yaml
+++ b/tcp_tests/templates/virtual-offline-pike-ovs-dpdk/salt.yaml
@@ -55,7 +55,7 @@
   retry: {count: 1, delay: 10}
   skip_fail: false
 
-{{ SHARED.MACRO_CONFIGURE_RECLASS(FORMULA_SERVICES='"linux" "reclass" "salt" "openssh" "ntp" "git" "nginx" "collectd" "sensu" "heka" "sphinx" "keystone" "mysql" "grafana" "haproxy" "rsyslog" "horizon" "prometheus" "telegraf" "elasticsearch" "powerdns" "fluentd" "backupninja" "watchdog" "runtest"') }}
+{{ SHARED.MACRO_CONFIGURE_RECLASS(FORMULA_SERVICES='"linux" "reclass" "salt" "openssh" "ntp" "git" "nginx" "collectd" "sensu" "heka" "sphinx" "keystone" "mysql" "grafana" "haproxy" "rsyslog" "horizon" "prometheus" "telegraf" "elasticsearch" "powerdns" "fluentd" "backupninja" "watchdog" "runtest" "auditd" ') }}
 
 {{ SHARED.MACRO_INSTALL_SALT_MINIONS() }}
 
diff --git a/tcp_tests/templates/virtual-offline-pike-ovs/salt.yaml b/tcp_tests/templates/virtual-offline-pike-ovs/salt.yaml
index bcabac5..9e30220 100644
--- a/tcp_tests/templates/virtual-offline-pike-ovs/salt.yaml
+++ b/tcp_tests/templates/virtual-offline-pike-ovs/salt.yaml
@@ -59,7 +59,7 @@
   retry: {count: 1, delay: 10}
   skip_fail: false
 
-{{ SHARED.MACRO_CONFIGURE_RECLASS(FORMULA_SERVICES='"linux" "reclass" "salt" "openssh" "ntp" "git" "nginx" "collectd" "sensu" "heka" "sphinx" "keystone" "mysql" "grafana" "haproxy" "rsyslog" "horizon" "prometheus" "telegraf" "elasticsearch" "powerdns" "fluentd" "backupninja" "watchdog" "runtest"') }}
+{{ SHARED.MACRO_CONFIGURE_RECLASS(FORMULA_SERVICES='"linux" "reclass" "salt" "openssh" "ntp" "git" "nginx" "collectd" "sensu" "heka" "sphinx" "keystone" "mysql" "grafana" "haproxy" "rsyslog" "horizon" "prometheus" "telegraf" "elasticsearch" "powerdns" "fluentd" "backupninja" "watchdog" "runtest" "auditd"') }}
 
 {{ SHARED.MACRO_INSTALL_SALT_MINIONS() }}
 
diff --git a/tcp_tests/templates/virtual-offline-ssl/salt.yaml b/tcp_tests/templates/virtual-offline-ssl/salt.yaml
index f2d794a..a669833 100644
--- a/tcp_tests/templates/virtual-offline-ssl/salt.yaml
+++ b/tcp_tests/templates/virtual-offline-ssl/salt.yaml
@@ -58,7 +58,7 @@
   retry: {count: 1, delay: 10}
   skip_fail: false
 
-{{ SHARED.MACRO_CONFIGURE_RECLASS(FORMULA_SERVICES='"linux" "reclass" "salt" "openssh" "ntp" "git" "nginx" "collectd" "sensu" "heka" "sphinx" "keystone" "mysql" "grafana" "haproxy" "rsyslog" "horizon" "prometheus" "telegraf" "elasticsearch" "powerdns" "fluentd" "backupninja" "watchdog" "dogtag" "runtest" "manila"') }}
+{{ SHARED.MACRO_CONFIGURE_RECLASS(FORMULA_SERVICES='"linux" "reclass" "salt" "openssh" "ntp" "git" "nginx" "collectd" "sensu" "heka" "sphinx" "keystone" "mysql" "grafana" "haproxy" "rsyslog" "horizon" "prometheus" "telegraf" "elasticsearch" "powerdns" "fluentd" "backupninja" "watchdog" "dogtag" "runtest" "manila" "auditd"') }}
 
 {{ SHARED.MACRO_INSTALL_SALT_MINIONS() }}
 
diff --git a/tcp_tests/tests/environment/test_bootstrap_salt.py b/tcp_tests/tests/environment/test_bootstrap_underlay.py
similarity index 96%
rename from tcp_tests/tests/environment/test_bootstrap_salt.py
rename to tcp_tests/tests/environment/test_bootstrap_underlay.py
index f852ffa..9458c5b 100644
--- a/tcp_tests/tests/environment/test_bootstrap_salt.py
+++ b/tcp_tests/tests/environment/test_bootstrap_underlay.py
@@ -19,7 +19,7 @@
 LOG = logger.logger
 
 
-class TestBootstrapCore(object):
+class TestBootstrapUnderlay(object):
     """Test class for deploy local dns_vm"""
 
     def test_create_environment(self, config, hardware):
