diff --git a/tcp_tests/tests/system/test_mcp_update.py b/tcp_tests/tests/system/test_mcp_update.py
index 01fa7bb..ab38698 100644
--- a/tcp_tests/tests/system/test_mcp_update.py
+++ b/tcp_tests/tests/system/test_mcp_update.py
@@ -91,6 +91,7 @@
     reclass.add_key(repo_param, proposed_repo, "cluster/*/ceph/init.yml")
 
     salt_actions.run_state("*", "saltutil.refresh_pillar")
+    salt_actions.enforce_state("*", "salt.minion")
     salt_actions.enforce_state("I@jenkins:client", "jenkins.client")
 
 
diff --git a/tcp_tests/tests/system/test_upgrade_pike_queens.py b/tcp_tests/tests/system/test_upgrade_pike_queens.py
index 4080646..9d3288e 100644
--- a/tcp_tests/tests/system/test_upgrade_pike_queens.py
+++ b/tcp_tests/tests/system/test_upgrade_pike_queens.py
@@ -25,18 +25,21 @@
     Created by https://mirantis.jira.com/browse/PROD-32683
     """
     def execute_pre_post_steps(self, underlay_actions,
-                               cfg_node, verbose, type):
+                               cfg_node, verbose, type, with_verify=False):
 
         # ### Get the list of all upgradable OpenStack components ############
         ret = underlay_actions.check_call(
             node_name=cfg_node, verbose=verbose,
             cmd="salt 'cfg01*' config.get"
-                " orchestration:upgrade:applications --out=json")
-        cfg_nodes_list = json.loads(ret['stdout_str'])
-        services_for_upgrade = []
-        for i in cfg_nodes_list:
-            for j in cfg_nodes_list[i]:
-                services_for_upgrade.append(j)
+                " orchestration:upgrade:applications --out=json")['stdout_str']
+        # It returns json like {"local": {"galera":{"priority":910},"heat":{..
+        all_formulas = json.loads(ret).get("local")
+        sorted_formulas = sorted(all_formulas.items(),
+                                 key=lambda x: x[1].get("priority"),
+                                 reverse=True)
+        # Because 'sorted' function returns list of tuples like
+        # [('aodh', {'priority': 2000}), ('ceilometer', {'priority': 1950}) ...
+        services_for_upgrade = [item[0] for item in sorted_formulas]
         LOG.info(services_for_upgrade)
 
         # ###### Get the list of all target node #############################
@@ -60,11 +63,22 @@
                 node_applications = node_app_output[node][need_output]
                 LOG.info(node_applications)
                 for service in services_for_upgrade:
-                    if service in node_applications:
-                        underlay_actions.check_call(
-                            node_name=cfg_node, verbose=verbose,
-                            cmd="salt {} state.apply "
-                                "{}.upgrade.{}".format(node, service, type))
+                    if service not in node_applications:
+                        continue
+                    cmd = "salt {} state.apply {}.upgrade.{}".\
+                        format(node, service, type)
+                    LOG.info("Apply: {}".format(cmd))
+                    underlay_actions.check_call(
+                        node_name=cfg_node, verbose=verbose, cmd=cmd)
+
+                    # Run upgrade.verify if needed
+                    if not with_verify:
+                        continue
+                    cmd = "salt {} state.apply {}.upgrade.verify".\
+                        format(node, service)
+                    LOG.info("Apply: {}".format(cmd))
+                    underlay_actions.check_call(
+                        node_name=cfg_node, verbose=verbose, cmd=cmd)
 
     @pytest.mark.day1_underlay
     def test_upgrade_pike_queens(self,
@@ -91,8 +105,18 @@
         infra_init_yaml = "cluster/*/infra/init.yml"
         # ########## Perform the pre-upgrade activities ##########
         show_step(1)
+        salt_actions.enforce_state("I@keystone:client:os_client_config",
+                                   "keystone.client.os_client_config")
+        # #### guarantee that the KeystoneRC metadata is exported to mine ####
+        underlay_actions.check_call(
+            node_name=cfg_node, verbose=verbose,
+            cmd="salt -C 'I@keystone:client:enabled' state.sls"
+                " keystone.upgrade.pre")
+        # ### Run upgrade.pre and upgrade.verify
+        self.execute_pre_post_steps(underlay_actions, cfg_node,
+                                    verbose, 'pre', with_verify=True)
         LOG.info('Add parameters to {}'.format(infra_init_yaml))
-        # ### Edit Infra INIT
+        # ### Edit Infra INIT #####
         reclass_actions.add_bool_key(
             'parameters._param.openstack_upgrade_enabled',
             'true',
@@ -107,16 +131,18 @@
             'parameters._param.openstack_old_version',
             'pike',
             infra_init_yaml)
-        # ### Edit Openstack INIT
-        reclass_actions.add_key(
-            'parameters._param.gnocchi_version',
-            4.2,
-            infra_init_yaml)
-        reclass_actions.add_key(
-            'parameters._param.gnocchi_old_version',
-            4.0,
-            infra_init_yaml)
-        # ### Edit Openstack control
+
+        # ### Edit Openstack INIT #####
+        openstack_init_yaml = "cluster/*/openstack/init.yml"
+        LOG.info('Add parameters to {}'.format(openstack_init_yaml))
+        reclass_actions.add_key('parameters._param.gnocchi_version',
+                                4.2,
+                                openstack_init_yaml)
+        reclass_actions.add_key('parameters._param.gnocchi_old_version',
+                                4.0,
+                                openstack_init_yaml)
+
+        # ### Edit Openstack control #####
         reclass_actions.add_class(
             'system.keystone.client.v3',
             'cluster/*/openstack/control_init.yml'
@@ -125,15 +151,10 @@
             node_name=cfg_node, verbose=verbose,
             cmd="cd /srv/salt/reclass; git add -u && "
                 "git commit --allow-empty -m 'Cluster model update'")
+
+        # ### Apply state to enable changes in reclass
         LOG.info('Perform refresh_pillar')
         salt_actions.run_state("*", "saltutil.refresh_pillar")
-        salt_actions.enforce_state("I@keystone:client:os_client_config",
-                                   "keystone.client.os_client_config")
-        # #### guarantee that the KeystoneRC metadata is exported to mine ####
-        underlay_actions.check_call(
-            node_name=cfg_node, verbose=verbose,
-            cmd="salt -C 'I@keystone:client:enabled' state.sls"
-                " keystone.upgrade.pre")
 
         self.execute_pre_post_steps(underlay_actions, cfg_node,
                                     verbose, 'pre')
@@ -159,6 +180,7 @@
                                    "jenkins.client")
         # #### Add QUEENS's repos
         salt_actions.enforce_state("*", "linux.system.repo")
+        salt_actions.enforce_state("*", "salt.minion")
 
         # ########## Upgrade control nodes  ###########
         LOG.info('Upgrade control VMs')
@@ -196,7 +218,7 @@
             job_parameters=job_parameters)
         assert update_control_vms == 'SUCCESS'
 
-        # ########## Upgrade gatewey nodes  ###########
+        # ########## Upgrade gateway nodes  ###########
         show_step(3)
         LOG.info('Upgrade gateway')
         job_name = 'deploy-upgrade-ovs-gateway'
