diff --git a/tcp_tests/templates/salt/virtual-mcp10-ovs-salt.yaml b/tcp_tests/templates/salt/virtual-mcp10-ovs-salt.yaml
index 425c0d3..b878e65 100644
--- a/tcp_tests/templates/salt/virtual-mcp10-ovs-salt.yaml
+++ b/tcp_tests/templates/salt/virtual-mcp10-ovs-salt.yaml
@@ -110,7 +110,7 @@
 
 - description: Configure salt adoptors on cfg01
   cmd: |
-    ln -s /usr/lib/python2.7/dist-packages/reclass/adapters/salt.py /usr/local/sbin/salt-reclass;
+    ln -s /usr/lib/python2.7/dist-packages/reclass/adapters/salt.py /usr/local/sbin/reclass-salt;
     chmod +x /usr/lib/python2.7/dist-packages/reclass/adapters/salt.py
   node_name: {{ HOSTNAME_CFG01 }}
   retry: {count: 1, delay: 1}
@@ -128,27 +128,34 @@
   skip_fail: false
 
 # Prepare salt services and nodes settings
-- description: Run 'linux' and openssh formula on cfg01
+- description: Run 'linux' formula on cfg01
   cmd: salt --hard-crash --state-output=mixed --state-verbose=False
-    -C 'I@salt:master' state.sls linux,openssh;
+    -C 'I@salt:master' state.sls linux;
   node_name: {{ HOSTNAME_CFG01 }}
   retry: {count: 1, delay: 5}
   skip_fail: false
 
-- description: Run 'reclass' formula on cfg01
+- description: Run 'openssh' formula on cfg01
   cmd: salt --hard-crash --state-output=mixed --state-verbose=False
-    -C 'I@salt:master' state.sls reclass;
+    -C 'I@salt:master' state.sls openssh;
     salt --hard-crash --state-output=mixed --state-verbose=False
     -C 'I@salt:master' cmd.run "sed -i 's/PasswordAuthentication no/PasswordAuthentication
     yes/' /etc/ssh/sshd_config && service ssh restart";
   node_name: {{ HOSTNAME_CFG01 }}
-  retry: {count: 1, delay: 5}
+  retry: {count: 3, delay: 5}
+  skip_fail: false
+
+- description: '*Workaround* of the bug https://mirantis.jira.com/browse/PROD-7962'
+  cmd: salt --hard-crash --state-output=mixed --state-verbose=False
+    '*' cmd.run "echo '    StrictHostKeyChecking no' >> /root/.ssh/config"
+  node_name: {{ HOSTNAME_CFG01 }}
+  retry: {count: 1, delay: 1}
   skip_fail: false
 
 - description: Run 'salt' formula on cfg01
   cmd: timeout 120 salt --hard-crash --state-output=mixed --state-verbose=False
     -C 'I@salt:master' state.sls salt.master.service;
-    salt-call --no-color state.sls salt.master,salt.api,salt.minion.ca -l info;
+    salt-call --no-color state.sls salt.master;
   node_name: {{ HOSTNAME_CFG01 }}
   retry: {count: 1, delay: 5}
   skip_fail: true
@@ -179,7 +186,7 @@
   skip_fail: false
 
 - description: Show  reclass-salt --top
-  cmd: salt-call --no-color state.sls salt.minion.cert -l info
+  cmd: reclass-salt --top
   node_name: {{ HOSTNAME_CFG01 }}
   retry: {count: 1, delay: 5}
   skip_fail: false
@@ -200,13 +207,34 @@
   skip_fail: false
 
 
-- description: Configure linux on all nodes
-  cmd: salt --hard-crash --state-output=mixed --state-verbose=False '*' state.sls
+- description: Configure linux on controllers
+  cmd: salt --hard-crash --state-output=mixed --state-verbose=False 'ctl*' state.sls
     linux
   node_name: {{ HOSTNAME_CFG01 }}
   retry: {count: 1, delay: 5}
   skip_fail: false
 
+- description: Configure linux on proxy
+  cmd: salt --hard-crash --state-output=mixed --state-verbose=False 'prx*' state.sls
+    linux
+  node_name: {{ HOSTNAME_CFG01 }}
+  retry: {count: 1, delay: 5}
+  skip_fail: false
+
+- description: Configure linux on gtw
+  cmd: salt --hard-crash --state-output=mixed --state-verbose=False 'gtw*' state.sls
+    linux
+  node_name: {{ HOSTNAME_CFG01 }}
+  retry: {count: 3, delay: 20}
+  skip_fail: false
+
+- description: Configure linux on cmp
+  cmd: salt --hard-crash --state-output=mixed --state-verbose=False 'cmp*' state.sls
+    linux
+  node_name: {{ HOSTNAME_CFG01 }}
+  retry: {count: 3, delay: 20}
+  skip_fail: false
+
 - description: Configure openssh on all nodes
   cmd: salt --hard-crash --state-output=mixed --state-verbose=False -C '* and not
     cfg*' state.sls openssh;salt --hard-crash --state-output=mixed --state-verbose=False
@@ -220,13 +248,32 @@
   cmd: salt --hard-crash --state-output=mixed --state-verbose=False '*' cmd.run 'apt-get
     -y install linux-image-extra-$(uname -r)'
   node_name: {{ HOSTNAME_CFG01 }}
-  retry: {count: 1, delay: 5}
+  retry: {count: 2, delay: 5}
   skip_fail: false
 
-- description: Configure salt.minion on controllers
-  cmd: salt --hard-crash --state-output=mixed --state-verbose=False '*' state.sls salt
+- description: Configure salt.minion on ctl
+  cmd: salt --hard-crash --state-output=mixed --state-verbose=False 'ctl*' state.sls salt.minion
   node_name: {{ HOSTNAME_CFG01 }}
-  retry: {count: 1, delay: 5}
+  retry: {count: 3, delay: 5}
+  skip_fail: false
+
+- description: Configure salt.minion on prx
+  cmd: salt --hard-crash --state-output=mixed --state-verbose=False 'prx*' state.sls salt.minion
+  node_name: {{ HOSTNAME_CFG01 }}
+  retry: {count: 3, delay: 5}
+  skip_fail: false
+
+
+- description: Configure salt.minion on gtw
+  cmd: salt --hard-crash --state-output=mixed --state-verbose=False 'gtw*' state.sls salt.minion
+  node_name: {{ HOSTNAME_CFG01 }}
+  retry: {count: 3, delay: 5}
+  skip_fail: false
+
+- description: Configure salt.minion on cmp
+  cmd: salt --hard-crash --state-output=mixed --state-verbose=False 'cmp*' state.sls salt.minion
+  node_name: {{ HOSTNAME_CFG01 }}
+  retry: {count: 3, delay: 5}
   skip_fail: false
 
 - description: Check salt minion versions on slaves
@@ -235,14 +282,14 @@
   retry: {count: 1, delay: 5}
   skip_fail: false
 
-- description: Check salt minion versions on slaves
+- description: Check salt top states on nodes
   cmd: salt '*' state.show_top
   node_name: {{ HOSTNAME_CFG01 }}
   retry: {count: 1, delay: 5}
   skip_fail: false
 
-- description: Configure ntp on nodes
-  cmd: salt --hard-crash --state-output=mixed --state-verbose=False '*' state.sls ntp
+- description: Configure ntp and rsyslog on nodes
+  cmd: salt --hard-crash --state-output=mixed --state-verbose=False '*' state.sls ntp,rsyslog
   node_name: {{ HOSTNAME_CFG01 }}
   retry: {count: 1, delay: 10}
   skip_fail: false
diff --git a/tcp_tests/tests/system/test_mcp10_ovs_vxlan_install.py b/tcp_tests/tests/system/test_mcp10_ovs_vxlan_install.py
index 9fc1408..54f6d61 100644
--- a/tcp_tests/tests/system/test_mcp10_ovs_vxlan_install.py
+++ b/tcp_tests/tests/system/test_mcp10_ovs_vxlan_install.py
@@ -47,56 +47,56 @@
 
         """
         LOG.info("*************** DONE **************")
-
-    def test_mcp10_ovs_vxlan_install_run_rally(self, underlay,
-                                               openstack_deployed,
-                                               show_step, rally):
-        """Test for deploying an mcp environment and check it
-
-        Scenario:
-            1. Prepare salt on hosts
-            2. Setup controller nodes
-            3. Setup compute nodes
-            4. Run rally
-
-        """
-        # prepare rally
-        rally.prepare()
-        rally.pull_image()
-        rally.run()
-        # run tempest
-        rally.run_tempest()
-
-        res = rally.get_results()
-
-        fail_msg = 'Tempest verification fails {}'.format(res)
-        assert res['failures'] == 0, fail_msg
-
-    # @pytest.mark.snapshot_needed
-    # @pytest.mark.fail_snapshot
-    def test_mcp10_vxlan_install_with_scripts(self, config, underlay,
-                                              salt_deployed,
-                                              show_step, rally):
-        """Test for deploying an mcp environment with scripts and check it
-
-        Scenario:
-            1. Prepare salt on hosts
-            2. Setup controller nodes
-            3. Setup compute nodes
-
-        """
-
-        cmd = 'cd /srv/salt/reclass/scripts/; ./bootstrap_all.sh'
-        underlay.check_call(cmd, host=config.salt.salt_master_host, verbose=True)
-
-        # prepare rally
-        rally.prepare()
-        rally.pull_image()
-        rally.run()
-        # run tempest
-        rally.run_tempest()
-
-        res = rally.get_results()
-
-        fail_msg = 'Tempest verification fails {}'.format(res)
-        assert res['failures'] == 0, fail_msg
+    #
+    # def test_mcp10_ovs_vxlan_install_run_rally(self, underlay,
+    #                                            openstack_deployed,
+    #                                            show_step, rally):
+    #     """Test for deploying an mcp environment and check it
+    #
+    #     Scenario:
+    #         1. Prepare salt on hosts
+    #         2. Setup controller nodes
+    #         3. Setup compute nodes
+    #         4. Run rally
+    #
+    #     """
+    #     # prepare rally
+    #     rally.prepare()
+    #     rally.pull_image()
+    #     rally.run()
+    #     # run tempest
+    #     rally.run_tempest()
+    #
+    #     res = rally.get_results()
+    #
+    #     fail_msg = 'Tempest verification fails {}'.format(res)
+    #     assert res['failures'] == 0, fail_msg
+    #
+    # # @pytest.mark.snapshot_needed
+    # # @pytest.mark.fail_snapshot
+    # def test_mcp10_vxlan_install_with_scripts(self, config, underlay,
+    #                                           salt_deployed,
+    #                                           show_step, rally):
+    #     """Test for deploying an mcp environment with scripts and check it
+    #
+    #     Scenario:
+    #         1. Prepare salt on hosts
+    #         2. Setup controller nodes
+    #         3. Setup compute nodes
+    #
+    #     """
+    #
+    #     cmd = 'cd /srv/salt/reclass/scripts/; ./bootstrap_all.sh'
+    #     underlay.check_call(cmd, host=config.salt.salt_master_host, verbose=True)
+    #
+    #     # prepare rally
+    #     rally.prepare()
+    #     rally.pull_image()
+    #     rally.run()
+    #     # run tempest
+    #     rally.run_tempest()
+    #
+    #     res = rally.get_results()
+    #
+    #     fail_msg = 'Tempest verification fails {}'.format(res)
+    #     assert res['failures'] == 0, fail_msg
