diff --git a/tcp_tests/templates/salt/virtual-mcp10-ovs-salt.yaml b/tcp_tests/templates/salt/virtual-mcp10-ovs-salt.yaml
index 425c0d3..5211705 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
@@ -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
