diff --git a/tcp_tests/managers/envmanager_empty.py b/tcp_tests/managers/envmanager_empty.py
index 39fd126..99b5c01 100644
--- a/tcp_tests/managers/envmanager_empty.py
+++ b/tcp_tests/managers/envmanager_empty.py
@@ -12,7 +12,11 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+from tcp_tests import settings
 from tcp_tests import settings_oslo
+from tcp_tests import logger
+
+LOG = logger.logger
 
 
 class EnvironmentManagerEmpty(object):
@@ -40,6 +44,12 @@
         - Store the state of the environment <name> to the 'config' object
         - Save 'config' object to a file 'config_<name>.ini'
         """
+        if not settings.MAKE_SNAPSHOT_STAGES:
+            msg = ("[ SKIP snapshot '{0}' because MAKE_SNAPSHOT_STAGES=false ]"
+                   .format(name))
+            LOG.info("\n\n{0}\n{1}".format(msg, '*' * len(msg)))
+            return
+
         self.__config.hardware.current_snapshot = name
         settings_oslo.save_config(self.__config, name)
 
diff --git a/tcp_tests/managers/envmanager_heat.py b/tcp_tests/managers/envmanager_heat.py
index d6d7e90..9ee26a6 100644
--- a/tcp_tests/managers/envmanager_heat.py
+++ b/tcp_tests/managers/envmanager_heat.py
@@ -389,6 +389,12 @@
 
         :name: string
         """
+        if not settings.MAKE_SNAPSHOT_STAGES:
+            msg = ("[ SKIP snapshot '{0}' because MAKE_SNAPSHOT_STAGES=false ]"
+                   .format(name))
+            LOG.info("\n\n{0}\n{1}".format(msg, '*' * len(msg)))
+            return
+
         LOG.info("Store INI config (without env snapshot) named '{0}'"
                  .format(name))
         self.__config.hardware.current_snapshot = name
diff --git a/tcp_tests/managers/saltmanager.py b/tcp_tests/managers/saltmanager.py
index 617323a..b2abdce 100644
--- a/tcp_tests/managers/saltmanager.py
+++ b/tcp_tests/managers/saltmanager.py
@@ -275,7 +275,7 @@
         result = self.local(tgt=tgt, fun='cmd.run', args=cmd)
         return result['return']
 
-    @utils.retry(3, exception=libpepper.PepperException)
+    @utils.retry(10, exception=libpepper.PepperException)
     def sync_time(self, tgt='*'):
         LOG.info("NTP time sync on the salt minions '{0}'".format(tgt))
         # Force authentication update on the next API access
@@ -297,6 +297,8 @@
                    '  touch /tmp/maas-proxy.work;'
                    'fi;'
                    'sleep 3;'
+                   # note: maas-rackd will return 'pool' after start
+                   'sed -i \'s/^pool /server /g\' /etc/ntp/maas.conf;'
                    'if [ -x /usr/sbin/ntpdate ]; then'
                    '  ntpdate -s ntp.ubuntu.com;'
                    'else'
@@ -311,7 +313,7 @@
                    '  systemctl start maas-regiond; fi;')
             self.run_state(
                 tgt,
-                'cmd.run', cmd, timeout=3600)  # noqa
+                'cmd.run', cmd, timeout=360)  # noqa
         new_time_res = self.run_state(tgt, 'cmd.run', 'date')
         for node_name, time in sorted(new_time_res[0]['return'][0].items()):
             LOG.info("{0}: {1}".format(node_name, time))
