diff --git a/TileCalorimeter/TileSvc/TileByteStream/src/TileHid2RESrcID.cxx b/TileCalorimeter/TileSvc/TileByteStream/src/TileHid2RESrcID.cxx
index 523bc3ba1d9e27cc37fb2605ee00384a1d3ff854..d4e2960f355d601b191daf021b1140c2e3935fe2 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/src/TileHid2RESrcID.cxx
+++ b/TileCalorimeter/TileSvc/TileByteStream/src/TileHid2RESrcID.cxx
@@ -154,13 +154,6 @@ void TileHid2RESrcID::setROD2ROBmap(const std::vector<std::string> & ROD2ROB,
     uint32_t frag = strtol(ROD2ROB[i-1].data(),NULL,0);
     uint32_t rob = strtol(ROD2ROB[i].data(),NULL,0) & 0xFFFFFF;
     if ( frag < 0x1000 ) { 
-      if ( rob < 0x500000 ) {
-        log << MSG::ERROR << "You are using obsolete mapping" << endmsg;
-        log << MSG::ERROR << "Please, upgrade it to event format V3" << endmsg;
-        assert(0);
-        log << MSG::ERROR << "TileHid2RESrcID:: mapping frag 0x"<< MSG::hex 
-            << frag << " to ROB 0x" << rob << MSG::dec << endmsg;
-      }
       // this is actually remapping for fragments inside ROB, bypassing ROD ID
       m_frag2ROD[frag] = rob;
       log << MSG::INFO << "TileHid2RESrcID:: mapping frag 0x"<< MSG::hex 
@@ -203,7 +196,12 @@ void TileHid2RESrcID::setROD2ROBmap (const eformat::FullEventFragment<const uint
     event->child(fpdet, idet);
     const eformat::ROBFragment<const uint32_t*> robf(fpdet);
 
-        uint32_t ROBid = robf.source_id();
+    uint32_t ROBid = robf.source_id();
+
+    const auto ROBSubDetID = eformat::helper::SourceIdentifier(ROBid).subdetector_id();
+    const auto ROBSubDetGroup = eformat::helper::SourceIdentifier(ROBid).subdetector_group();
+    if (ROBSubDetGroup == eformat::SubDetectorGroup::TILECAL ||
+        ROBSubDetID == eformat::SubDetector::TDAQ_BEAM_CRATE || ROBSubDetID == 0) { // SubDetID=00 used in testbeam
 
         unsigned int source_id   = robf.rod_source_id();
         eformat::helper::SourceIdentifier id = eformat::helper::SourceIdentifier(source_id);
@@ -330,6 +328,7 @@ void TileHid2RESrcID::setROD2ROBmap (const eformat::FullEventFragment<const uint
             break;
           }
         }
+    }
   }
   if (!cisparFound) {
     if (lascisROB) {
diff --git a/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Decoder.cxx b/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Decoder.cxx
index 83c9b12ba8fb336190f34ef71163c4b518aedf5e..b2c2072a556e5b034d3b59a54f0fa045d46454ef 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Decoder.cxx
+++ b/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Decoder.cxx
@@ -136,14 +136,25 @@ StatusCode TileROD_Decoder::initialize() {
   const TileCablingService *cablingService = TileCablingService::getInstance();
   m_maxChannels    = cablingService->getMaxChannels();
   m_runPeriod      = cablingService->runPeriod();
+  std::ostringstream os;
   if (m_runPeriod==3) {
     if ( m_demoFragIDs.empty() ) {
       std::vector<int> v = { 0x10d }; // LBA14 is demonstrator in RUN3
       m_demoFragIDs = v;
-    } else {
-      std::sort(m_demoFragIDs.begin(),m_demoFragIDs.end());
     }
-    ATH_MSG_INFO("Enable channel remapping for demonstrator in RUN3," << m_demoFragIDs);
+    os << " in RUN3";
+  }
+
+  if ( !m_demoFragIDs.empty() ) {
+    std::sort(m_demoFragIDs.begin(),m_demoFragIDs.end());
+    os << " (frag IDs):";
+    for (int fragID : m_demoFragIDs) {
+      if (fragID>0)
+        os << " 0x" << std::hex << fragID << std::dec;
+      else
+        os << " " << fragID;
+    }
+    ATH_MSG_INFO("Enable channel remapping for demonstrator modules" << os.str());
   }
 
   m_Rw2Cell[0].reserve(m_maxChannels);