diff --git a/PhysicsAnalysis/AnalysisCommon/AssociationUtils/AssociationUtils/OverlapRemovalGenUseAlg.h b/PhysicsAnalysis/AnalysisCommon/AssociationUtils/AssociationUtils/OverlapRemovalGenUseAlg.h
index 85079901baaaed61e02d67517d7649c2b7f8656d..4d15bbbca0d12fe763e8909e3bf3b669815360a1 100644
--- a/PhysicsAnalysis/AnalysisCommon/AssociationUtils/AssociationUtils/OverlapRemovalGenUseAlg.h
+++ b/PhysicsAnalysis/AnalysisCommon/AssociationUtils/AssociationUtils/OverlapRemovalGenUseAlg.h
@@ -85,7 +85,7 @@ class OverlapRemovalGenUseAlg : public EL::AnaAlgorithm
        SG::WriteDecorHandleKeyArray<ContainerType> m_writeDecorKeys{};
     };
     
-    DataKeyHandler<xAOD::JetContainer> m_jetKey{this, "JetKey", "AntiKt4EMTopoJets",
+    DataKeyHandler<xAOD::JetContainer> m_jetKey{this, "JetKey", "AntiKt4EMPFlowJets",
                                                     "StoreGate/TEvent key for jets"};
 
     DataKeyHandler<xAOD::ElectronContainer> m_electronKey{this, "ElectronKey", "Electrons",
diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/JetCommonConfig.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/JetCommonConfig.py
index 07d0784fbbcfff0bd0b7d3d3a00b0cd971df24e3..18d92819b5d477aa5b4e5fe6193e3d4de2c91d75 100644
--- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/JetCommonConfig.py
+++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/JetCommonConfig.py
@@ -101,15 +101,16 @@ def AddSidebandEventShapeCfg(ConfigFlags):
 
     return acc
 
-def AddJvtDecorationAlgCfg(ConfigFlags, algName = "JvtPassDecorAlg", **kwargs):
+def AddJvtDecorationAlgCfg(ConfigFlags, algName = "JvtPassDecorAlg", jetContainer='AntiKt4EMTopo', **kwargs):
     acc = ComponentAccumulator()
     # Decorate if jet passed JVT criteria
     from JetJvtEfficiency.JetJvtEfficiencyToolConfig import getJvtEffToolCfg
-    passJvtTool = acc.popToolsAndMerge(getJvtEffToolCfg(ConfigFlags, 'AntiKt4EMTopo'))
-    passJvtTool.PassJVTKey = "AntiKt4EMTopoJets.DFCommonJets_passJvt"
+
+    passJvtTool = acc.popToolsAndMerge(getJvtEffToolCfg(ConfigFlags, jetContainer))
+    passJvtTool.PassJVTKey = "{}Jets.DFCommonJets_passJvt".format(jetContainer)
     passJvtTool.SuppressOutputDependence = False
     kwargs.setdefault("Decorators", [passJvtTool])
-    kwargs.setdefault("JetContainer", "AntiKt4EMTopoJets")
+    kwargs.setdefault("JetContainer", "{}Jets".format(jetContainer))
     acc.addEventAlgo(CompFactory.JetDecorationAlg(algName, **kwargs), primary = True)
     return acc
 
@@ -117,16 +118,29 @@ def AddEventCleanFlagsCfg(ConfigFlags, workingPoints = ['Loose', 'Tight', 'Loose
     """Add event cleaning flags"""
 
     acc = ComponentAccumulator()
-    acc.merge(AddJvtDecorationAlgCfg(ConfigFlags))
-    
+    acc.merge(AddJvtDecorationAlgCfg(ConfigFlags, algName="JvtPassDecorAlg_EMTopo", jetContainer='AntiKt4EMTopo'))
+    acc.merge(AddJvtDecorationAlgCfg(ConfigFlags, algName="JvtPassDecorAlg", jetContainer='AntiKt4EMPFlow'))
 
     from DerivationFrameworkTau.TauCommonConfig import AddTauAugmentationCfg
     acc.merge(AddTauAugmentationCfg(ConfigFlags, prefix="JetCommon", doLoose=True))
 
+    # Overlap for EMTopo
     from AssociationUtils.AssociationUtilsConfig import OverlapRemovalToolCfg
-    outputLabel = 'DFCommonJets_passOR'
+    outputLabel_legacy = 'DFCommonJets_passOR'
     bJetLabel = '' #default
     tauLabel = 'DFTauLoose'
+    orTool_legacy = acc.popToolsAndMerge(OverlapRemovalToolCfg(ConfigFlags,outputLabel=outputLabel_legacy,bJetLabel=bJetLabel))
+    algOR_legacy = CompFactory.OverlapRemovalGenUseAlg('OverlapRemovalGenUseAlg_EMTopo',
+                                                JetKey="AntiKt4EMTopoJets",
+                                                OverlapLabel=outputLabel_legacy,
+                                                OverlapRemovalTool=orTool_legacy,
+                                                TauLabel=tauLabel,
+                                                BJetLabel=bJetLabel
+                                                )
+    acc.addEventAlgo(algOR_legacy)
+
+    # Overlap for EMPFlow
+    outputLabel = 'DFCommonJets_passOR'
     orTool = acc.popToolsAndMerge(OverlapRemovalToolCfg(ConfigFlags,outputLabel=outputLabel,bJetLabel=bJetLabel))
     algOR = CompFactory.OverlapRemovalGenUseAlg('OverlapRemovalGenUseAlg',
                                                 OverlapLabel=outputLabel,
@@ -144,6 +158,7 @@ def AddEventCleanFlagsCfg(ConfigFlags, workingPoints = ['Loose', 'Tight', 'Loose
     
     supportedWPs = ['Loose', 'Tight', 'LooseLLP', 'VeryLooseLLP', 'SuperLooseLLP']
     prefix = "DFCommonJets_"
+    evt_lvl_suppWPs_PFlow = ['LooseBad', 'TightBad']
 
     for wp in workingPoints:
         if wp not in supportedWPs:
@@ -153,23 +168,59 @@ def AddEventCleanFlagsCfg(ConfigFlags, workingPoints = ['Loose', 'Tight', 'Loose
         # LLP WPs have a slightly different name format
         if 'LLP' in wp:
             cleaningLevel = wp.replace('LLP', 'BadLLP')
-
-        jetCleaningTool = acc.popToolsAndMerge(JetCleaningToolCfg(ConfigFlags, 'JetCleaningTool_'+cleaningLevel, 'AntiKt4EMTopoJets', cleaningLevel, False))
-        acc.addPublicTool(jetCleaningTool)
-
-        ecTool = acc.popToolsAndMerge(EventCleaningToolCfg(ConfigFlags,'EventCleaningTool_' + wp, cleaningLevel))
-        ecTool.JetCleanPrefix = prefix
-        ecTool.JetContainer = "AntiKt4EMTopoJets"
-        ecTool.JetCleaningTool = jetCleaningTool
-        acc.addPublicTool(ecTool)
-
-        eventCleanAlg = CompFactory.EventCleaningTestAlg('EventCleaningTestAlg_'+wp,
-                                                         EventCleaningTool=ecTool,
-                                                         JetCollectionName="AntiKt4EMTopoJets",
-                                                         EventCleanPrefix=prefix,
-                                                         CleaningLevel=cleaningLevel,
-                                                         doEvent = ('Loose' in wp)) # Only store event-level flags for Loose and LooseLLP
-        acc.addEventAlgo(eventCleanAlg)
+        
+        # Add support for TightBad event flag as well
+        doEvent_PFlow=False
+        for evt_swp in evt_lvl_suppWPs_PFlow:
+            if evt_swp == cleaningLevel: 
+                doEvent_PFlow=True
+                break
+
+        doEvent_EMTopo=False
+        if 'Loose' in cleaningLevel: 
+            doEvent_EMTopo=True
+
+        ## for EMTopo (Legacy), also support for LLPs
+        if doEvent_EMTopo:
+            jetCleaningTool_legacy = acc.popToolsAndMerge(JetCleaningToolCfg(
+                    ConfigFlags, 'JetCleaningTool_'+cleaningLevel+'_EMTopo',
+                    'AntiKt4EMTopo', cleaningLevel, False))
+            acc.addPublicTool(jetCleaningTool_legacy)
+            ecTool_legacy = acc.popToolsAndMerge(EventCleaningToolCfg(
+                    ConfigFlags,'EventCleaningTool_'+wp+'_EMTopo', cleaningLevel))
+            ecTool_legacy.JetCleanPrefix = prefix
+            ecTool_legacy.JetContainer = "AntiKt4EMTopoJets"
+            ecTool_legacy.JetCleaningTool = jetCleaningTool_legacy
+            acc.addPublicTool(ecTool_legacy)
+    
+            eventCleanAlg_legacy = CompFactory.EventCleaningTestAlg('EventCleaningTestAlg_'+wp+'_EMTopo',
+                                                             EventCleaningTool=ecTool_legacy,
+                                                             JetCollectionName="AntiKt4EMTopoJets",
+                                                             EventCleanPrefix=prefix,
+                                                             CleaningLevel=cleaningLevel,
+                                                             doEvent=True) # Only store event-level flags for Loose and LooseLLP
+            acc.addEventAlgo(eventCleanAlg_legacy)
+
+        ## For PFlow
+        if doEvent_PFlow:
+            jetCleaningTool = acc.popToolsAndMerge(JetCleaningToolCfg(
+                    ConfigFlags, 'JetCleaningTool_'+cleaningLevel,
+                    'AntiKt4EMPFlowJets', cleaningLevel, False))
+            acc.addPublicTool(jetCleaningTool)
+    
+            ecTool = acc.popToolsAndMerge(EventCleaningToolCfg(ConfigFlags,'EventCleaningTool_' + wp, cleaningLevel))
+            ecTool.JetCleanPrefix = prefix
+            ecTool.JetContainer = "AntiKt4EMPFlowJets"
+            ecTool.JetCleaningTool = jetCleaningTool
+            acc.addPublicTool(ecTool)
+    
+            eventCleanAlg = CompFactory.EventCleaningTestAlg('EventCleaningTestAlg_'+wp,
+                                                             EventCleaningTool=ecTool,
+                                                             JetCollectionName="AntiKt4EMPFlowJets",
+                                                             EventCleanPrefix=prefix,
+                                                             CleaningLevel=cleaningLevel,
+                                                             doEvent=True) # for PFlow we use Loose and Tight
+            acc.addEventAlgo(eventCleanAlg)
 
     return acc
 
diff --git a/PhysicsAnalysis/JetMissingEtID/JetSelectorTools/src/EventCleaningTestAlg.cxx b/PhysicsAnalysis/JetMissingEtID/JetSelectorTools/src/EventCleaningTestAlg.cxx
index 6d644a5d7db23b88ca211b98d28c6a8f16397c60..6fd8cecdaf0efaed1a30e8665aaa8489196a4824 100644
--- a/PhysicsAnalysis/JetMissingEtID/JetSelectorTools/src/EventCleaningTestAlg.cxx
+++ b/PhysicsAnalysis/JetMissingEtID/JetSelectorTools/src/EventCleaningTestAlg.cxx
@@ -26,9 +26,16 @@ StatusCode EventCleaningTestAlg::initialize()
   // Try to retrieve the tool
   ATH_CHECK( m_ecTool.retrieve() );
   ATH_CHECK( m_jetKey.initialize());
-  ATH_CHECK(m_evtKey.initialize());
- // Create the decorator
-  m_evtInfoDecor = m_evtKey.key() + "." + m_prefix + "eventClean_"+m_cleaningLevel;
+  ATH_CHECK( m_evtKey.initialize() );
+  // Create the decorator
+  // Use an if statement to leave a legacy 
+  auto labelString = m_cleaningLevel;
+  if (m_jetKey.key() == "AntiKt4EMTopoJets") {
+    labelString = m_cleaningLevel + "_EMTopo";
+  }
+  else {}
+
+  m_evtInfoDecor = m_evtKey.key() + "." + m_prefix + "eventClean_"+labelString;
   ATH_CHECK(m_evtInfoDecor.initialize(m_doEvent));
   return StatusCode::SUCCESS;
 }
diff --git a/PhysicsAnalysis/JetMissingEtID/JetSelectorTools/src/EventCleaningTestAlg.h b/PhysicsAnalysis/JetMissingEtID/JetSelectorTools/src/EventCleaningTestAlg.h
index 9314adc71378621cb9daf3202aab2335f96d0d89..d36a5db9a424fb945a28f23f310e7496f3031ca4 100644
--- a/PhysicsAnalysis/JetMissingEtID/JetSelectorTools/src/EventCleaningTestAlg.h
+++ b/PhysicsAnalysis/JetMissingEtID/JetSelectorTools/src/EventCleaningTestAlg.h
@@ -40,7 +40,7 @@ class EventCleaningTestAlg : public AthAlgorithm
 
     ToolHandle<ECUtils::IEventCleaningTool> m_ecTool{this, "EventCleaningTool","ECUtils::EventCleaningTool/EventCleaningTool" };
 
-    SG::ReadHandleKey<xAOD::JetContainer> m_jetKey{this, "JetCollectionName", "AntiKt4EMTopoJets",
+    SG::ReadHandleKey<xAOD::JetContainer> m_jetKey{this, "JetCollectionName", "AntiKt4EMPFlowJets",
                                                    "Jet collection name"};
     SG::ReadHandleKey<xAOD::EventInfo> m_evtKey{this, "EventInfoKey",
                                                 "EventInfo"};