diff --git a/tests/src/serverTestIfff.cpp b/tests/src/serverTestIfff.cpp
index 08cb4666c2dddc1474141848eef609293a8fb125..390d5b7df9dddbf8b691e0f4f7c8543efee99c08 100644
--- a/tests/src/serverTestIfff.cpp
+++ b/tests/src/serverTestIfff.cpp
@@ -134,6 +134,57 @@ BOOST_AUTO_TEST_CASE(testIfffUpdate) {
   BOOST_CHECK_CLOSE(resultIfff.f1_data, referenceIfff.f1_data, 0.0001);
   BOOST_CHECK_CLOSE(resultIfff.f2_data, referenceIfff.f2_data, 0.0001);
   BOOST_CHECK_CLOSE(resultIfff.f3_data, referenceIfff.f3_data, 0.0001);
+
+  // change the values
+  IFFF newReferenceIfff;
+  newReferenceIfff.i1_data = 345;
+  newReferenceIfff.f1_data = 0.345f;
+  newReferenceIfff.f2_data = 3.454f;
+  newReferenceIfff.f3_data = -345;
+
+  // check data consistency implementation
+  // send only one variable, then change the version number again
+  referenceTestApplication.versionNumber = ChimeraTK::VersionNumber();
+  DoocsServerTestHelper::doocsSet<int>("//INT/TO_DEVICE_SCALAR", 543); // will never be seen
+  referenceTestApplication.runMainLoopOnce();
+  // sleep a bit, we don't except a change
+  sleep(1);
+  resultIfff = extractValue();
+  // compare with the old reference
+  BOOST_CHECK_EQUAL(resultIfff.i1_data, referenceIfff.i1_data);
+  BOOST_CHECK_CLOSE(resultIfff.f1_data, referenceIfff.f1_data, 0.0001);
+  BOOST_CHECK_CLOSE(resultIfff.f2_data, referenceIfff.f2_data, 0.0001);
+  BOOST_CHECK_CLOSE(resultIfff.f3_data, referenceIfff.f3_data, 0.0001);
+
+  referenceTestApplication.versionNumber = ChimeraTK::VersionNumber();
+  DoocsServerTestHelper::doocsSet<float>("//FLOAT/TO_DEVICE_SCALAR", newReferenceIfff.f1_data);
+  DoocsServerTestHelper::doocsSet<double>("//DOUBLE/TO_DEVICE_SCALAR", static_cast<double>(newReferenceIfff.f2_data));
+  DoocsServerTestHelper::doocsSet<int>("//SHORT/TO_DEVICE_SCALAR", static_cast<int>(newReferenceIfff.f3_data));
+  referenceTestApplication.runMainLoopOnce();
+
+  // all variables have been updated, but not in a consistent way. still no change
+  sleep(1);
+  resultIfff = extractValue();
+  // compare with the old reference
+  BOOST_CHECK_EQUAL(resultIfff.i1_data, referenceIfff.i1_data);
+  BOOST_CHECK_CLOSE(resultIfff.f1_data, referenceIfff.f1_data, 0.0001);
+  BOOST_CHECK_CLOSE(resultIfff.f2_data, referenceIfff.f2_data, 0.0001);
+  BOOST_CHECK_CLOSE(resultIfff.f3_data, referenceIfff.f3_data, 0.0001);
+
+  // finally upate the missing variable with the same version as the others
+  DoocsServerTestHelper::doocsSet<int>("//INT/TO_DEVICE_SCALAR", newReferenceIfff.i1_data);
+  referenceTestApplication.runMainLoopOnce();
+
+  // now we see the new reference
+  checkWithTimeout<int>(
+      [&]() -> int {
+        resultIfff = extractValue();
+        return resultIfff.i1_data;
+      },
+      newReferenceIfff.i1_data);
+  BOOST_CHECK_CLOSE(resultIfff.f1_data, newReferenceIfff.f1_data, 0.0001);
+  BOOST_CHECK_CLOSE(resultIfff.f2_data, newReferenceIfff.f2_data, 0.0001);
+  BOOST_CHECK_CLOSE(resultIfff.f3_data, newReferenceIfff.f3_data, 0.0001);
 }
 
 /**********************************************************************************************************************/