diff --git a/Hlt/Moore/python/Moore/qmtest/exclusions.py b/Hlt/Moore/python/Moore/qmtest/exclusions.py
index 4b911bd63fc50d2d2dd916d2830a918ff722d599..8ce025e3b8182f699158a790223df996105eecc4 100644
--- a/Hlt/Moore/python/Moore/qmtest/exclusions.py
+++ b/Hlt/Moore/python/Moore/qmtest/exclusions.py
@@ -9,77 +9,81 @@
 # or submit itself to any jurisdiction.                                       #
 ###############################################################################
 from GaudiConf.QMTest.BaseTest import LineSkipper
+from GaudiConf.QMTest.LHCbExclusions import ignore_missing_hepmc_dicts
 from GaudiConf.QMTest.LHCbTest import BlockSkipper, GroupMessages
 from RecConf.QMTest.exclusions import preprocessor as RecPreprocessor
 
-remove_known_warnings = LineSkipper(
-    strings=[
-        # DD4hep geometry. XXX should be fixed there
-        r"The sub volume lvUX851InUT is NOT constructed",
-        r"No PLUME bank found, will continue without PLUME decoding",
-    ],
-    regexps=[
-        # expected WARNINGs from the data broker
-        r"HiveDataBrokerSvc +WARNING non-reentrant algorithm: .*",
-        # expected WARNINGs from MuonIDHlt1Alg due to lhcb/Rec#79
-        r"MuonID.* +WARNING CondDB {X,Y}FOIParameters member ",
-        r"size is 20, geometry expects 16",
-        r"ToolSvc.CommonMuonTool.* +WARNING CondDB {X,Y}FOIParameters member ",
-        r"size is 20, geometry expects 16",
-        # hard to remove WARNINGs due to TrackResChecker.FullDetail = True
-        # https://gitlab.cern.ch/lhcb/Moore/-/merge_requests/783#note_4406625
-        (
-            r".*WARNING Extrapolation of True State from"
-            r" z = (9[2-4]|1[0-4][0-9])[0-9.]+ to z = (9[2-4]|1[0-4][0-9])[0-9.]+ failed!"
-        ),
-        # also due to TrackResChecker see
-        # https://gitlab.cern.ch/lhcb/Rec/-/merge_requests/2788#note_5399928
-        (
-            r"ToolSvc.TrackMasterExtrapolator +WARNING Suppressing message: "
-            r"'Protect against absurd tracks. See debug for details'"
-        ),
-        (
-            r"TrackResCheckerBestSeed.TrackMas.* +WARNING Suppressing message: "
-            r"'Protect against absurd tracks. See debug for details'"
-        ),
-        # expected WARNINGs from MuonUTTracking when extrapolation is failed
-        r"ToolSvc.LoKi::VertexFitter +WARNING LoKi::VertexFitter:: Error from Kalman-step, skip *",
-        r"MuonUTTracking +WARNING Could not propagate state to VELO!",
-        # backwards compatibility -- key is from manifest, not git
-        r"key 0x[0-9a-f]+ has an explicitly configured overrule -- using that",
-        # backwards compatibility -- old data
-        r"DstData raw bank has a zero encoding key, and it is not explicitly specified for decoding -- make sure that this really what you want",
-        r"HltDecReports has a zero TCK, and it is not explicitly specified for decoding",
-        # Known warnings with dd4hep
-        r".*WARNING TransportSvc is currently incompatible with DD4HEP.*",
-        r".*WARNING See https://gitlab.cern.ch/lhcb/Rec/-/issues/326 for more details",
-        r".*WARNING Material corrections currently not supported with DD4HEP and thus disabled.",
-        r".*WARNING Material in geometry currently not available with DD4HEP*",
-        r".*Only parametrised scatters are available for now.*",
-        # Known warning of missing SimplifiedMaterialLocator in DD4Hep
-        (
-            r".*WARNING In DD4HEP builds the SimplifiedMaterialLocator defaults to DetailedMaterialLocator"
-            r" because the simplified geometry has not yet been implemented"
-        ),
-        # known issues with 2022 data
-        r"FTRawBankDecoder(_[0987654321abcdef]*)?\s+ERROR .*Odd bank",
-        # known issues with 2024 data
-        r"FTRawBankDecoder.*ERROR Suppressing message.*Misordered links.*",
-        r"FTRawBankDecoder.*ERROR Suppressing message.*No end fragment found.*",
-        r"FTRawBankDecoder.*ERROR Suppressing message:.*Misordered large cluster.*",
-        r"FTRawBankDecoder.*WARNING Suppressing message.*Misordered links.*",
-        r"FTRawBankDecoder.*WARNING Suppressing message.*No end fragment found.*",
-        r"FTRawBankDecoder.*WARNING Suppressing message:.*No begin fragment found.*",
-        r"FTRawBankDecoder.*WARNING Suppressing message:.*Misordered large cluster.*",
-        # Expected WARNING in this Tagger, but want to remain sensitive to other occurences.
-        # https://gitlab.cern.ch/lhcb/Moore/-/merge_requests/2763#note_7428070
-        r"FunctionalOSVertexChargeTagger_.*WARNING distance\(p,p\): the same particle",
-        r".*B2OCDstp2D0PipCombiner.*WARNING.*Too many composites. Stopping the combination.*",
-        r".*B2OCDstm2D0PimCombiner.*WARNING.*Too many composites. Stopping the combination.*",
-        r".*Monitoring_Hlt1KsLine_InclKsKs.*WARNING.*Too many composites. Stopping the combination.*",
-        # Warning due to Kalman fit observed in Allen!1444, to be resolved by Rec!3663
-        r"TrackBestTrackCreator_.*WARNING Kalman fit error, check debug level",
-    ],
+remove_known_warnings = (
+    LineSkipper(
+        strings=[
+            # DD4hep geometry. XXX should be fixed there
+            r"The sub volume lvUX851InUT is NOT constructed",
+            r"No PLUME bank found, will continue without PLUME decoding",
+        ],
+        regexps=[
+            # expected WARNINGs from the data broker
+            r"HiveDataBrokerSvc +WARNING non-reentrant algorithm: .*",
+            # expected WARNINGs from MuonIDHlt1Alg due to lhcb/Rec#79
+            r"MuonID.* +WARNING CondDB {X,Y}FOIParameters member ",
+            r"size is 20, geometry expects 16",
+            r"ToolSvc.CommonMuonTool.* +WARNING CondDB {X,Y}FOIParameters member ",
+            r"size is 20, geometry expects 16",
+            # hard to remove WARNINGs due to TrackResChecker.FullDetail = True
+            # https://gitlab.cern.ch/lhcb/Moore/-/merge_requests/783#note_4406625
+            (
+                r".*WARNING Extrapolation of True State from"
+                r" z = (9[2-4]|1[0-4][0-9])[0-9.]+ to z = (9[2-4]|1[0-4][0-9])[0-9.]+ failed!"
+            ),
+            # also due to TrackResChecker see
+            # https://gitlab.cern.ch/lhcb/Rec/-/merge_requests/2788#note_5399928
+            (
+                r"ToolSvc.TrackMasterExtrapolator +WARNING Suppressing message: "
+                r"'Protect against absurd tracks. See debug for details'"
+            ),
+            (
+                r"TrackResCheckerBestSeed.TrackMas.* +WARNING Suppressing message: "
+                r"'Protect against absurd tracks. See debug for details'"
+            ),
+            # expected WARNINGs from MuonUTTracking when extrapolation is failed
+            r"ToolSvc.LoKi::VertexFitter +WARNING LoKi::VertexFitter:: Error from Kalman-step, skip *",
+            r"MuonUTTracking +WARNING Could not propagate state to VELO!",
+            # backwards compatibility -- key is from manifest, not git
+            r"key 0x[0-9a-f]+ has an explicitly configured overrule -- using that",
+            # backwards compatibility -- old data
+            r"DstData raw bank has a zero encoding key, and it is not explicitly specified for decoding -- make sure that this really what you want",
+            r"HltDecReports has a zero TCK, and it is not explicitly specified for decoding",
+            # Known warnings with dd4hep
+            r".*WARNING TransportSvc is currently incompatible with DD4HEP.*",
+            r".*WARNING See https://gitlab.cern.ch/lhcb/Rec/-/issues/326 for more details",
+            r".*WARNING Material corrections currently not supported with DD4HEP and thus disabled.",
+            r".*WARNING Material in geometry currently not available with DD4HEP*",
+            r".*Only parametrised scatters are available for now.*",
+            # Known warning of missing SimplifiedMaterialLocator in DD4Hep
+            (
+                r".*WARNING In DD4HEP builds the SimplifiedMaterialLocator defaults to DetailedMaterialLocator"
+                r" because the simplified geometry has not yet been implemented"
+            ),
+            # known issues with 2022 data
+            r"FTRawBankDecoder(_[0987654321abcdef]*)?\s+ERROR .*Odd bank",
+            # known issues with 2024 data
+            r"FTRawBankDecoder.*ERROR Suppressing message.*Misordered links.*",
+            r"FTRawBankDecoder.*ERROR Suppressing message.*No end fragment found.*",
+            r"FTRawBankDecoder.*ERROR Suppressing message:.*Misordered large cluster.*",
+            r"FTRawBankDecoder.*WARNING Suppressing message.*Misordered links.*",
+            r"FTRawBankDecoder.*WARNING Suppressing message.*No end fragment found.*",
+            r"FTRawBankDecoder.*WARNING Suppressing message:.*No begin fragment found.*",
+            r"FTRawBankDecoder.*WARNING Suppressing message:.*Misordered large cluster.*",
+            # Expected WARNING in this Tagger, but want to remain sensitive to other occurences.
+            # https://gitlab.cern.ch/lhcb/Moore/-/merge_requests/2763#note_7428070
+            r"FunctionalOSVertexChargeTagger_.*WARNING distance\(p,p\): the same particle",
+            r".*B2OCDstp2D0PipCombiner.*WARNING.*Too many composites. Stopping the combination.*",
+            r".*B2OCDstm2D0PimCombiner.*WARNING.*Too many composites. Stopping the combination.*",
+            r".*Monitoring_Hlt1KsLine_InclKsKs.*WARNING.*Too many composites. Stopping the combination.*",
+            # Warning due to Kalman fit observed in Allen!1444, to be resolved by Rec!3663
+            r"TrackBestTrackCreator_.*WARNING Kalman fit error, check debug level",
+        ],
+    )
+    + ignore_missing_hepmc_dicts
 )
 
 remove_known_packing_errors_and_warnings = remove_known_warnings + LineSkipper(
diff --git a/Hlt/RecoConf/tests/qmtest/decoding.qms/compare_hlt1_hlt2_calo_decoding_v5bank_v4geometry.qmt b/Hlt/RecoConf/tests/qmtest/decoding.qms/compare_hlt1_hlt2_calo_decoding_v5bank_v4geometry.qmt
index 8021bed186ce13db5408941cf3b9219dcd780769..773f017a21a2c13707f12a98b8b750dbe726716d 100644
--- a/Hlt/RecoConf/tests/qmtest/decoding.qms/compare_hlt1_hlt2_calo_decoding_v5bank_v4geometry.qmt
+++ b/Hlt/RecoConf/tests/qmtest/decoding.qms/compare_hlt1_hlt2_calo_decoding_v5bank_v4geometry.qmt
@@ -19,7 +19,9 @@
 <argument name="use_temp_dir"><enumeral>true</enumeral></argument>
 <argument name="validator"><text>
 
-countErrorLines({"FATAL": 0, "ERROR": 0, "WARNING": 0})
+from Moore.qmtest.exclusions import remove_known_warnings
+countErrorLines({"FATAL": 0, "ERROR": 0, "WARNING": 0},
+                stdout=remove_known_warnings(stdout))
 
 </text></argument>
 </extension>
diff --git a/Hlt/RecoConf/tests/qmtest/decoding.qms/compare_hlt1_hlt2_scifi_decoding.qmt b/Hlt/RecoConf/tests/qmtest/decoding.qms/compare_hlt1_hlt2_scifi_decoding.qmt
index d5ae04397aed659fff82842e679e8c901a09096b..657467623ac4f836842f8bf2b7dccc09974d4b5f 100644
--- a/Hlt/RecoConf/tests/qmtest/decoding.qms/compare_hlt1_hlt2_scifi_decoding.qmt
+++ b/Hlt/RecoConf/tests/qmtest/decoding.qms/compare_hlt1_hlt2_scifi_decoding.qmt
@@ -16,6 +16,8 @@
     <text>$RECOCONFROOT/options/compare_hlt1_hlt2_ft_clusters.py</text>
   </set></argument>
   <argument name="validator"><text>
-countErrorLines({"FATAL": 0, "ERROR": 0, "WARNING": 0})
+from Moore.qmtest.exclusions import remove_known_warnings
+countErrorLines({"FATAL": 0, "ERROR": 0, "WARNING": 0},
+                stdout=remove_known_warnings(stdout))
   </text></argument>
 </extension>
diff --git a/Hlt/RecoConf/tests/qmtest/decoding.qms/compare_hlt1_hlt2_ut_decoding_with_mcchecking.qmt b/Hlt/RecoConf/tests/qmtest/decoding.qms/compare_hlt1_hlt2_ut_decoding_with_mcchecking.qmt
index 59cda83a75a5386f2562fcb03b88e3c152ab5b2a..1e5a2f3bf45f4a1ea6e334e813c6dc7b4187c186 100644
--- a/Hlt/RecoConf/tests/qmtest/decoding.qms/compare_hlt1_hlt2_ut_decoding_with_mcchecking.qmt
+++ b/Hlt/RecoConf/tests/qmtest/decoding.qms/compare_hlt1_hlt2_ut_decoding_with_mcchecking.qmt
@@ -19,10 +19,11 @@
   <argument name="error_reference"><text>../refs/empty.ref</text></argument>
   <argument name="validator"><text>
 
-from Moore.qmtest.exclusions import ref_preprocessor
+from Moore.qmtest.exclusions import ref_preprocessor, remove_known_warnings
 validateWithReference(preproc = ref_preprocessor)
 
-countErrorLines({"FATAL": 0, "ERROR": 0, "WARNING": 0})
+countErrorLines({"FATAL": 0, "ERROR": 0, "WARNING": 0},
+                stdout=remove_known_warnings(stdout))
 
   </text></argument>
 </extension>
diff --git a/Hlt/RecoConf/tests/qmtest/decoding.qms/compare_hlt1_hlt2_vp_decoding.qmt b/Hlt/RecoConf/tests/qmtest/decoding.qms/compare_hlt1_hlt2_vp_decoding.qmt
index 9806fbd57b2b20465b958a319f022e652db91ad1..655ae71c2fcb22ae20efc2da56dabd088ecf9f24 100644
--- a/Hlt/RecoConf/tests/qmtest/decoding.qms/compare_hlt1_hlt2_vp_decoding.qmt
+++ b/Hlt/RecoConf/tests/qmtest/decoding.qms/compare_hlt1_hlt2_vp_decoding.qmt
@@ -16,6 +16,8 @@
     <text>$RECOCONFROOT/options/compare_hlt1_hlt2_vp_hits.py</text>
   </set></argument>
   <argument name="validator"><text>
-countErrorLines({"FATAL": 0, "ERROR": 0, "WARNING": 0})
+from Moore.qmtest.exclusions import remove_known_warnings
+countErrorLines({"FATAL": 0, "ERROR": 0, "WARNING": 0},
+                stdout=remove_known_warnings(stdout))
   </text></argument>
 </extension>
diff --git a/Hlt/RecoConf/tests/qmtest/decoding.qms/hlt1_velo_decoding.qmt b/Hlt/RecoConf/tests/qmtest/decoding.qms/hlt1_velo_decoding.qmt
index 651e3527e70aae483e6821822b00fd2b30fc4034..ec7297669a1216ef2b4d5a02f5a61fb792fb4563 100644
--- a/Hlt/RecoConf/tests/qmtest/decoding.qms/hlt1_velo_decoding.qmt
+++ b/Hlt/RecoConf/tests/qmtest/decoding.qms/hlt1_velo_decoding.qmt
@@ -17,6 +17,8 @@
   </set></argument>
   <argument name="use_temp_dir"><enumeral>true</enumeral></argument>
   <argument name="validator"><text>
-countErrorLines({"FATAL": 0, "ERROR": 0, "WARNING": 0})
+from Moore.qmtest.exclusions import remove_known_warnings
+countErrorLines({"FATAL": 0, "ERROR": 0, "WARNING": 0},
+                stdout=remove_known_warnings(stdout))
   </text></argument>
 </extension>