diff --git a/tcp_tests/managers/execute_commands.py b/tcp_tests/managers/execute_commands.py
index 3c01867..af30bec 100644
--- a/tcp_tests/managers/execute_commands.py
+++ b/tcp_tests/managers/execute_commands.py
@@ -64,18 +64,20 @@
             # skip_fail = step.get('skip_fail', False)
 
             msg = "[ {0} #{1} ] {2}".format(label, n + 1, description)
-            LOG.info("\n\n{0}\n{1}".format(msg, '=' * len(msg)))
+            log_msg = "\n\n{0}\n{1}".format(msg, '=' * len(msg))
 
             if action_cmd:
-                self.execute_command(step)
+                self.execute_command(step, msg)
             elif action_do:
-                self.command2(step)
+                self.command2(step, msg)
             elif action_upload:
+                LOG.info(log_msg)
                 self.action_upload(step)
             elif action_download:
+                LOG.info(log_msg)
                 self.action_download(step)
 
-    def execute_command(self, step):
+    def execute_command(self, step, msg):
         # Required fields
         cmd = step.get('cmd')
         node_name = step.get('node_name')
@@ -90,7 +92,13 @@
 
             for x in range(retry_count, 0, -1):
                 time.sleep(3)
-                result = remote.execute(cmd, verbose=True)
+
+                retry_msg = ' (try {0} of {1}, skip_fail={2})'.format(
+                    retry_count - x + 1, retry_count, skip_fail)
+                LOG.info("\n\n{0}\n{1}".format(
+                    msg + retry_msg, '=' * len(msg + retry_msg)))
+
+                result = remote.execute('set -ex; ' + cmd, verbose=True)
 
                 # Workaround of exit code 0 from salt in case of failures
                 failed = 0
@@ -106,16 +114,11 @@
 
                 if result.exit_code != 0:
                     time.sleep(retry_delay)
-                    LOG.info(
-                        " === RETRY ({0}/{1}) ========================="
-                        .format(x - 1, retry_count))
                 elif failed != 0:
                     LOG.error(
                         " === SALT returned exit code = 0 while "
                         "there are failed modules! ===")
-                    LOG.info(
-                        " === RETRY ({0}/{1}) ======================="
-                        .format(x - 1, retry_count))
+                    time.sleep(retry_delay)
                 else:
                     break
 
@@ -124,7 +127,7 @@
                     raise Exception("Step '{0}' failed"
                                     .format(description))
 
-    def command2(self, step):
+    def command2(self, step, msg):
         # Required fields
         do = step['do']
         target = step['target']
@@ -145,6 +148,11 @@
         for x in range(retry_count, 0, -1):
             time.sleep(3)
 
+            retry_msg = ' (try {0} of {1}, skip_fail={2})'.format(
+                retry_count - x + 1, retry_count, skip_fail)
+            LOG.info("\n\n{0}\n{1}".format(
+                msg + retry_msg, '=' * len(msg + retry_msg)))
+
             method = getattr(self._salt, self._salt._map[do])
             command_ret = method(tgt=target, state=state or states,
                                  args=args, kwargs=kwargs)
@@ -163,8 +171,6 @@
                 LOG.error("States finished with failures.\n{}".format(
                     all_fails))
                 time.sleep(retry_delay)
-                LOG.info(" === RETRY ({0}/{1}) ========================="
-                         .format(x - 1, retry_count))
             else:
                 break
 
diff --git a/tcp_tests/managers/underlay_ssh_manager.py b/tcp_tests/managers/underlay_ssh_manager.py
index 3b64300..54984ae 100644
--- a/tcp_tests/managers/underlay_ssh_manager.py
+++ b/tcp_tests/managers/underlay_ssh_manager.py
@@ -478,7 +478,7 @@
         with self.remote(host=master_host) as master:
             # dump files
             LOG.info("Archive artifacts on all nodes")
-            master.check_call("salt '*' cmd.run '{0}'".format(dump_commands),
+            master.check_call('salt "*" cmd.run "{0}"'.format(dump_commands),
                               raise_on_err=False)
 
             # create target dir for archives
diff --git a/tcp_tests/templates/cookied-mcp-ocata-dop-sl2/oss.yaml b/tcp_tests/templates/cookied-mcp-ocata-dop-sl2/oss.yaml
index 11155ed..f64b373 100644
--- a/tcp_tests/templates/cookied-mcp-ocata-dop-sl2/oss.yaml
+++ b/tcp_tests/templates/cookied-mcp-ocata-dop-sl2/oss.yaml
@@ -182,7 +182,7 @@
       'export CICD_CONTROL_ADDRESS=$(salt-call --out=newline_values_only pillar.get _param:cluster_vip_address);
        while true; do curl -sf ldap://${CICD_CONTROL_ADDRESS} && break; sleep 2; done'
   node_name: {{ HOSTNAME_CFG01 }}
-  retry: {count: 6, delay: 20}
+  retry: {count: 10, delay: 30}
   skip_fail: false
 
 - description: "Setup OpenLDAP"
@@ -200,7 +200,7 @@
       'export CICD_CONTROL_ADDRESS=$(salt-call --out=newline_values_only pillar.get _param:cluster_vip_address);
        while true; do curl -sf http://${CICD_CONTROL_ADDRESS}:8080/config/server/version && break; sleep 2; done'
   node_name: {{ HOSTNAME_CFG01 }}
-  retry: {count: 3, delay: 10}
+  retry: {count: 10, delay: 30}
   skip_fail: false
 
 - description: "Setup Gerrit"
@@ -222,7 +222,7 @@
          sleep 2;
        done'
   node_name: {{ HOSTNAME_CFG01 }}
-  retry: {count: 3, delay: 10}
+  retry: {count: 10, delay: 30}
   skip_fail: false
 
 - description: "Setup Jenkins"
