diff --git a/tests/src/serverTestZeroMQ.cpp b/tests/src/serverTestZeroMQ.cpp
index 70b9ae9bfad28598bfa13a989f686045b50f3b03..1203998c9b7781c0a1390ac1170e697f8f48e84f 100644
--- a/tests/src/serverTestZeroMQ.cpp
+++ b/tests/src/serverTestZeroMQ.cpp
@@ -138,17 +138,33 @@ BOOST_AUTO_TEST_CASE(testScalar) {
     BOOST_CHECK_EQUAL(received.get_int(), expectedValue);
   }
 
-  // Trigger another update, the last one was eaten by the wait for startup above
-  referenceTestApplication.versionNumber = ChimeraTK::VersionNumber();
-  DoocsServerTestHelper::doocsSet<int32_t>("//INT/TO_DEVICE_SCALAR", macroPulseNumber);
-  DoocsServerTestHelper::doocsSet<uint32_t>("//UINT/TO_DEVICE_SCALAR", expectedValue);
-
-  // From now on, each update should be received.
+  // From now on, each consistent update should be received.
+  // Make sure consistent receiving is happening whether the macro pulse number is send first or second.
+  std::array<bool,10> sendMacroPulseFirst = {true, true, true, false, false, false, true, false, true, false};
   for(size_t i = 0; i < 10; ++i) {
+    referenceTestApplication.versionNumber = ChimeraTK::VersionNumber();
+    ++macroPulseNumber;
+    expectedValue = 100 + i;
+    if (sendMacroPulseFirst[i]) {
+      DoocsServerTestHelper::doocsSet<int32_t>("//INT/TO_DEVICE_SCALAR", macroPulseNumber);
+    }else{// send the value first
+       DoocsServerTestHelper::doocsSet<uint32_t>("//UINT/TO_DEVICE_SCALAR", expectedValue);
+    }
+
+    // nothing must be received, no consistent set yet
     dataReceived = false;
+    referenceTestApplication.runMainLoopOnce();
     usleep(10000);
     BOOST_CHECK(dataReceived == false);
+
+    // now send the variable which has not been send yet
+    if (sendMacroPulseFirst[i]) {
+       DoocsServerTestHelper::doocsSet<uint32_t>("//UINT/TO_DEVICE_SCALAR", expectedValue);
+    }else{
+      DoocsServerTestHelper::doocsSet<int32_t>("//INT/TO_DEVICE_SCALAR", macroPulseNumber);
+    }
     referenceTestApplication.runMainLoopOnce();
+
     CHECK_WITH_TIMEOUT(dataReceived == true);
     {
       std::lock_guard<std::mutex> lock(mutex);
@@ -160,11 +176,6 @@ BOOST_AUTO_TEST_CASE(testScalar) {
       BOOST_CHECK_EQUAL(receivedInfo.sec, secs);
       BOOST_CHECK_EQUAL(receivedInfo.usec, usecs);
       BOOST_CHECK_EQUAL(receivedInfo.ident, macroPulseNumber);
-      ++macroPulseNumber;
-      referenceTestApplication.versionNumber = ChimeraTK::VersionNumber();
-      DoocsServerTestHelper::doocsSet<int>("//INT/TO_DEVICE_SCALAR", macroPulseNumber);
-      expectedValue = 100 + i;
-      DoocsServerTestHelper::doocsSet<uint32_t>("//UINT/TO_DEVICE_SCALAR", expectedValue);
     }
   }