diff --git a/tcp_tests/managers/sl_manager.py b/tcp_tests/managers/sl_manager.py
index d6354b1..f65f524 100644
--- a/tcp_tests/managers/sl_manager.py
+++ b/tcp_tests/managers/sl_manager.py
@@ -255,7 +255,10 @@
             assert res['exit_code'] == 0, (
                 'Unexpected exit code for command {0}, '
                 'current result {1}'.format(cmd, res))
-            return res['stdout'][0].rstrip()
+            if res['stdout']:
+                return res['stdout'][0].rstrip()
+            else:
+                return ''
 
     def start_service(self, node_sub_name, service_name):
         target_node_name = [node_name for node_name
diff --git a/tcp_tests/tests/system/test_failover.py b/tcp_tests/tests/system/test_failover.py
index 9007eba..9b41618 100644
--- a/tcp_tests/tests/system/test_failover.py
+++ b/tcp_tests/tests/system/test_failover.py
@@ -11,6 +11,7 @@
 #    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 #    License for the specific language governing permissions and limitations
 #    under the License.
+from devops.helpers import helpers
 import pytest
 
 from tcp_tests import logger
@@ -265,24 +266,28 @@
             'tests/prometheus/', 'test_alerts.py')
         failed_tests = [test['name'] for test in
                         before_result if 'passed' not in test['outcome']]
+
         # STEP #5
-
         sl_deployed.kill_sl_service_on_node('mon01', 'influxdb-relay')
+
         # STEP #6
-
         sl_deployed.post_data_into_influx('mon02')
-        # STEP #7
 
+        # STEP #7
         assert 'mymeas' in sl_deployed.check_data_in_influxdb('mon02')
         assert 'mymeas' in sl_deployed.check_data_in_influxdb('mon03')
+
         # STEP #8
-
         sl_deployed.start_service('mon01', 'influxdb-relay')
+
         # STEP #9
+        def check_relay_mon01():
+            return 'mymeas' in sl_deployed.check_data_in_influxdb('mon01')
+        helpers.wait(check_relay_mon01,
+                     timeout=10, interval=2,
+                     timeout_msg=('Influxdb data was not replicated to mon01'))
 
-        assert 'mymeas' in sl_deployed.check_data_in_influxdb('mon01')
         # STEP #10
-
         after_result = sl_deployed.run_sl_tests_json(
             'cfg01', '/root/stacklight-pytest/stacklight_tests/',
             'tests/prometheus/', 'test_alerts.py')
@@ -337,8 +342,13 @@
         # STEP #8
 
         sl_deployed.start_service('mon01', 'influxd')
+
         # STEP #9
-        assert 'mymeas' in sl_deployed.check_data_in_influxdb('mon01')
+        def check_relay_mon01():
+            return 'mymeas' in sl_deployed.check_data_in_influxdb('mon01')
+        helpers.wait(check_relay_mon01,
+                     timeout=10, interval=2,
+                     timeout_msg=('Influxdb data was not replicated to mon01'))
         # STEP #10
 
         after_result = sl_deployed.run_sl_tests_json(
@@ -394,10 +404,20 @@
 
         sl_deployed.start_service('mon01', 'influxdb-relay')
         sl_deployed.start_service('mon02', 'influxdb-relay')
-        # STEP #9
 
-        assert 'mymeas' in sl_deployed.check_data_in_influxdb('mon01')
-        assert 'mymeas' in sl_deployed.check_data_in_influxdb('mon02')
+        # STEP #9
+        def check_relay_mon01():
+            return 'mymeas' in sl_deployed.check_data_in_influxdb('mon01')
+
+        def check_relay_mon02():
+            return 'mymeas' in sl_deployed.check_data_in_influxdb('mon02')
+        helpers.wait(check_relay_mon01,
+                     timeout=10, interval=2,
+                     timeout_msg=('Influxdb data was not replicated to mon01'))
+        helpers.wait(check_relay_mon02,
+                     timeout=10, interval=2,
+                     timeout_msg=('Influxdb data was not replicated to mon02'))
+
         # STEP #10
 
         after_result = sl_deployed.run_sl_tests_json(
@@ -453,10 +473,20 @@
 
         sl_deployed.start_service('mon01', 'influxdb')
         sl_deployed.start_service('mon02', 'influxdb')
-        # STEP #9
 
-        assert 'mymeas' in sl_deployed.check_data_in_influxdb('mon01')
-        assert 'mymeas' in sl_deployed.check_data_in_influxdb('mon02')
+        # STEP #9
+        def check_relay_mon01():
+            return 'mymeas' in sl_deployed.check_data_in_influxdb('mon01')
+
+        def check_relay_mon02():
+            return 'mymeas' in sl_deployed.check_data_in_influxdb('mon02')
+        helpers.wait(check_relay_mon01,
+                     timeout=10, interval=2,
+                     timeout_msg=('Influxdb data was not replicated to mon01'))
+        helpers.wait(check_relay_mon02,
+                     timeout=10, interval=2,
+                     timeout_msg=('Influxdb data was not replicated to mon02'))
+
         # STEP #10
 
         after_result = sl_deployed.run_sl_tests_json(
