diff --git a/include/DoocsProcessArray.h b/include/DoocsProcessArray.h
index 5e431e118356cbf9c64fd9017aacf4ca4b81ed6d..2507df78d122511722c80229e2b339c5fa617490 100644
--- a/include/DoocsProcessArray.h
+++ b/include/DoocsProcessArray.h
@@ -104,7 +104,10 @@ namespace ChimeraTK {
       // before calling this function because calling this function through a function pointer is
       // comparatively expensive.
       // Only check the consistency group if there is a macro pulse number associated.
-      if(_macroPulseNumberSource && !_consistencyGroup.update(transferElementId)) {
+      // Do not check if update is coming from another DOOCS property mapped to the same variable (ID invalid), since
+      // the check would never pass. Such variables cannot use exact data matching anyway, since the update is triggered
+      // from the DOOCS write to the other property.
+      if(transferElementId.isValid() && _macroPulseNumberSource && !_consistencyGroup.update(transferElementId)) {
         // data is not consistent (yet). Don't update the Doocs buffer.
         // check if this will now throw away data and generate a warning
         if(transferElementId == _processArray->getId()) {
diff --git a/include/DoocsProcessScalar.h b/include/DoocsProcessScalar.h
index 501516114a400f23f13d734f9b570495b3f0113b..b099e241df586d6153bab20992039e67192dda50 100644
--- a/include/DoocsProcessScalar.h
+++ b/include/DoocsProcessScalar.h
@@ -25,7 +25,10 @@ namespace ChimeraTK {
       // before calling this function because calling this function through a function pointer is
       // comparatively expensive.
       // Only check the consistency group if there is a macro pulse number associated.
-      if(_macroPulseNumberSource && !_consistencyGroup.update(transferElementId)) {
+      // Do not check if update is coming from another DOOCS property mapped to the same variable (ID invalid), since
+      // the check would never pass. Such variables cannot use exact data matching anyway, since the update is triggered
+      // from the DOOCS write to the other property.
+      if(transferElementId.isValid() && _macroPulseNumberSource && !_consistencyGroup.update(transferElementId)) {
         // data is not consistent (yet). Don't update the Doocs buffer.
         // check if this will now throw away data and generate a warning
         if(transferElementId == _processScalar->getId()) {
diff --git a/src/DoocsIfff.cc b/src/DoocsIfff.cc
index 0b2a45e1a893d84018f014383000540cb31c0490..d798b21324457bb61ad1d7f81d6d0c353a186d2f 100644
--- a/src/DoocsIfff.cc
+++ b/src/DoocsIfff.cc
@@ -58,8 +58,11 @@ namespace ChimeraTK {
     registerVariable(OneDRegisterAccessor<float>(_f3Value));
   }
 
-  void DoocsIfff::updateDoocsBuffer(const TransferElementID& elementId) {
-    if(!_consistencyGroup.update(elementId)) {
+  void DoocsIfff::updateDoocsBuffer(const TransferElementID& transferElementId) {
+    // Do not check if update is coming from another DOOCS property mapped to the same variable (ID invalid), since
+    // the check would never pass. Such variables cannot use exact data matching anyway, since the update is triggered
+    // from the DOOCS write to the other property.
+    if(transferElementId.isValid() && !_consistencyGroup.update(transferElementId)) {
       return;
     }
 
diff --git a/src/DoocsSpectrum.cc b/src/DoocsSpectrum.cc
index 3c2e7d29d5874f36efe9122ae3211efdaa4a9102..98562e97433427d44f10378211b135b654ead549 100644
--- a/src/DoocsSpectrum.cc
+++ b/src/DoocsSpectrum.cc
@@ -132,7 +132,10 @@ namespace ChimeraTK {
     // There are only the processArray and the macro pulse number in the consistency
     // group. The limits are coming asynchronously and not for every macro pulse,
     // so we just take test latest we have.
-    if(_macroPulseNumberSource && !_consistencyGroup.update(transferElementId)) {
+    // Do not check if update is coming from another DOOCS property mapped to the same variable (ID invalid), since
+    // the check would never pass. Such variables cannot use exact data matching anyway, since the update is triggered
+    // from the DOOCS write to the other property.
+    if(transferElementId.isValid() && _macroPulseNumberSource && !_consistencyGroup.update(transferElementId)) {
       // data is not consistent (yet). Don't update the Doocs buffer.
       // check if this will now throw away data and generate a warning
       if(transferElementId == _processArray->getId()) {