diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/JETM12.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/JETM12.py
index 7a77b32ace970b5606eb88174324d570c4dd5c9b..dd92989934448a9b54f839b04ca8fdd2087eec3f 100644
--- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/JETM12.py
+++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/JETM12.py
@@ -17,21 +17,6 @@ def JETM12SkimmingToolCfg(flags):
     elTriggers = TriggerLists.single_el_Trig(flags)
     muTriggers = TriggerLists.single_mu_Trig(flags)
 
-    addRun3METTriggers = ["HLT_xe55_cell_xe70_tcpufit_xe90_pfsum_vssk_L1XE50","HLT_xe55_cell_xe70_tcpufit_xe95_pfsum_cssk_L1XE50","HLT_xe60_cell_xe95_pfsum_cssk_L1XE50","HLT_xe65_cell_xe100_mhtpufit_pf_L1XE50","HLT_xe65_cell_xe105_mhtpufit_em_L1XE50","HLT_xe75_cell_xe65_tcpufit_xe90_trkmht_L1XE50","HLT_xe65_cell_xe90_pfopufit_L1XE50","HLT_xe80_cell_xe115_tcpufit_L1XE50"]
-
-    addRun3ElectronTriggers = ["HLT_e17_lhvloose_L1EM15VHI","HLT_e20_lhvloose_L1EM15VH", "HLT_e250_etcut_L1EM22VHI",
-                               "HLT_e26_lhtight_ivarloose_L1EM22VHI","HLT_e26_lhtight_ivarloose_L1eEM26M",
-                               "HLT_e60_lhmedium_L1EM22VHI","HLT_e60_lhmedium_L1eEM26M",
-                               "HLT_e140_lhloose_L1EM22VHI","HLT_e140_lhloose_L1eEM26M",
-                               "HLT_e300_etcut_L1EM22VHI","HLT_e300_etcut_L1eEM26M",
-                               "HLT_e140_lhloose_noringer_L1EM22VHI","HLT_e140_lhloose_noringer_L1eEM26M"]
-
-    addRund3MuonTriggers = ["HLT_mu24_ivarmedium_L1MU14FCH","HLT_mu50_L1MU14FCH","HLT_mu60_0eta105_msonly_L1MU14FCH","HLT_mu60_L1MU14FCH","HLT_mu80_msonly_3layersEC_L1MU14FCH"]
-
-    metTriggers = metTriggers+addRun3METTriggers
-    elTriggers = elTriggers+addRun3ElectronTriggers
-    muTriggers = muTriggers+addRund3MuonTriggers
-
     addTtbarEvents = True
     if not flags.Input.isMC:
         # Check if the solenoid was turned on to define skimming
@@ -125,11 +110,15 @@ def JETM12AugmentationToolsForSkimmingCfg(flags):
     acc.addPublicTool(TrackIsoTool)
 
     from xAODPrimitives.xAODIso import xAODIso as isoPar
-    Pt1000IsoTrackDecorator = CompFactory.DerivationFramework.trackIsolationDecorator(name = "Pt1000IsoTrackDecorator",
-                                                                                      TrackIsolationTool = TrackIsoTool,
-                                                                                      TargetContainer = "InDetTrackParticles",
-                                                                                      ptcones = [isoPar.ptcone40,isoPar.ptcone30,isoPar.ptcone20],
-                                                                                      Prefix = 'TrkIsoPt1000_')
+
+    from DerivationFrameworkInDet.InDetToolsConfig import IsolationTrackDecoratorCfg
+    Pt1000IsoTrackDecorator = acc.getPrimaryAndMerge(IsolationTrackDecoratorCfg(flags,
+                                                                                name               = "Pt1000IsoTrackDecorator",
+                                                                                TrackIsolationTool = TrackIsoTool,
+                                                                                TargetContainer    = "InDetTrackParticles",
+                                                                                iso                = [isoPar.ptcone40, isoPar.ptcone30, isoPar.ptcone20],
+                                                                                isoSuffix          = ["ptcone40", "ptcone30", "ptcone20"],
+                                                                                Prefix             = "TrkIsoPt1000_"))
 
     acc.addPublicTool(Pt1000IsoTrackDecorator, primary=True)
 
@@ -154,11 +143,14 @@ def JETM12AugmentationToolsCfg(flags):
     acc.addPublicTool(TrackIsoTool)
 
     from xAODPrimitives.xAODIso import xAODIso as isoPar
-    Pt500IsoTrackDecorator = CompFactory.DerivationFramework.trackIsolationDecorator(name = "Pt500IsoTrackDecorator",
-                                                                                     TrackIsolationTool = TrackIsoTool,
-                                                                                     TargetContainer = "InDetTrackParticles",
-                                                                                     ptcones = [isoPar.ptcone40,isoPar.ptcone30,isoPar.ptcone20],
-                                                                                     Prefix = 'TrkIsoPt500_')
+    from DerivationFrameworkInDet.InDetToolsConfig import IsolationTrackDecoratorCfg
+    Pt500IsoTrackDecorator = acc.getPrimaryAndMerge(IsolationTrackDecoratorCfg(flags,
+                                                                               name               = "Pt500IsoTrackDecorator",
+                                                                               TrackIsolationTool = TrackIsoTool,
+                                                                               TargetContainer    = "InDetTrackParticles",
+                                                                               iso                = [isoPar.ptcone40, isoPar.ptcone30, isoPar.ptcone20],
+                                                                               isoSuffix          = ["ptcone40", "ptcone30", "ptcone20"],
+                                                                               Prefix             = "TrkIsoPt500_"))
 
     acc.addPublicTool(Pt500IsoTrackDecorator, primary=True)
     
diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/TriggerLists.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/TriggerLists.py
index 48473de880a6067c0cd8df2febb77a8d12d511ea..111b83975c22630d1632f6c470703224f413eb5c 100644
--- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/TriggerLists.py
+++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/TriggerLists.py
@@ -1,6 +1,7 @@
 # Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 from TriggerMenuMT.TriggerAPI.TriggerAPI import TriggerAPI
 from TriggerMenuMT.TriggerAPI.TriggerEnums import TriggerPeriod, TriggerType
+from DerivationFrameworkPhys.TriggerListsHelper import getTapisSession
 from AthenaConfiguration.AutoConfigFlags import GetFileMD
 from AthenaConfiguration.Enums import LHCPeriod
 import re
@@ -21,9 +22,16 @@ def jetTrig(flags):
 
 # electron triggers (unprescaled)
 def single_el_Trig(flags):
-	TriggerAPI.setConfigFlags(flags)
-	API_singleElTriggers = TriggerAPI.getLowestUnprescaled(TriggerPeriod.y2015, TriggerType.el_single) + TriggerAPI.getLowestUnprescaled(TriggerPeriod.y2016, TriggerType.el_single) + TriggerAPI.getLowestUnprescaled(TriggerPeriod.y2017, TriggerType.el_single) + TriggerAPI.getLowestUnprescaled(TriggerPeriod.y2018, TriggerType.el_single) + TriggerAPI.getLowestUnprescaled(TriggerPeriod.future, TriggerType.el_single)
-	return API_singleElTriggers
+	if flags.Trigger.EDMVersion <= 2:
+		TriggerAPI.setConfigFlags(flags)
+		allperiods = TriggerPeriod.y2015 | TriggerPeriod.y2016 | TriggerPeriod.y2017 | TriggerPeriod.y2018 | TriggerPeriod.future2e34
+		trigger_names = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType=TriggerType.el,  livefraction=0.8)
+	else:
+		session = getTapisSession(flags)
+		lf = 0.8 # Prescale weighted life fraction of the GRL's LBs
+		trigger_names = set()
+		trigger_names = list(session.getLowestUnprescaled(triggerType=TriggerType.el, livefraction=lf).union(trigger_names))
+	return trigger_names
 
 def multi_el_Trig(flags):
 	TriggerAPI.setConfigFlags(flags)
@@ -32,9 +40,16 @@ def multi_el_Trig(flags):
 
 # single muon triggers (unprescaled)
 def single_mu_Trig(flags):
-	TriggerAPI.setConfigFlags(flags)
-	API_singleMuTriggers = TriggerAPI.getLowestUnprescaled(TriggerPeriod.y2015, TriggerType.mu_single) + TriggerAPI.getLowestUnprescaled(TriggerPeriod.y2016, TriggerType.mu_single) + TriggerAPI.getLowestUnprescaled(TriggerPeriod.y2017, TriggerType.mu_single) + TriggerAPI.getLowestUnprescaled(TriggerPeriod.y2018, TriggerType.mu_single) + TriggerAPI.getLowestUnprescaled(TriggerPeriod.future, TriggerType.mu_single)
-	return API_singleMuTriggers
+	if flags.Trigger.EDMVersion <= 2:
+		TriggerAPI.setConfigFlags(flags)
+		allperiods = TriggerPeriod.y2015 | TriggerPeriod.y2016 | TriggerPeriod.y2017 | TriggerPeriod.y2018 | TriggerPeriod.future2e34
+		trigger_names = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType=TriggerType.mu,  livefraction=0.8)
+	else:
+		session = getTapisSession(flags)
+		lf = 0.8 # Prescale weighted life fraction of the GRL's LBs
+		trigger_names = set()
+		trigger_names = list(session.getLowestUnprescaled(triggerType=TriggerType.mu, livefraction=lf).union(trigger_names))
+	return trigger_names
 
 def multi_mu_Trig(flags):
 	TriggerAPI.setConfigFlags(flags)
@@ -43,15 +58,29 @@ def multi_mu_Trig(flags):
 
 # xe triggers (unprescaled)
 def MET_Trig(flags):
-	TriggerAPI.setConfigFlags(flags)
-	API_MET_Triggers = TriggerAPI.getLowestUnprescaled(TriggerPeriod.y2015, TriggerType.xe) + TriggerAPI.getLowestUnprescaled(TriggerPeriod.y2016, TriggerType.xe) + TriggerAPI.getLowestUnprescaled(TriggerPeriod.y2017, TriggerType.xe) + TriggerAPI.getLowestUnprescaled(TriggerPeriod.y2018, TriggerType.xe) + TriggerAPI.getLowestUnprescaled(TriggerPeriod.future, TriggerType.xe)
-	return API_MET_Triggers
+	if flags.Trigger.EDMVersion <= 2:
+		TriggerAPI.setConfigFlags(flags)
+		allperiods = TriggerPeriod.y2015 | TriggerPeriod.y2016 | TriggerPeriod.y2017 | TriggerPeriod.y2018 | TriggerPeriod.future2e34
+		trigger_names = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType=TriggerType.xe,  livefraction=0.8)
+	else:
+		session = getTapisSession(flags)
+		lf = 0.8 # Prescale weighted life fraction of the GRL's LBs
+		trigger_names = set()
+		trigger_names = list(session.getLowestUnprescaled(triggerType=TriggerType.xe, livefraction=lf).union(trigger_names))
+	return trigger_names
 
 # photon triggers (prescaled and unprescaled)
 def single_photon_Trig(flags):
-	TriggerAPI.setConfigFlags(flags)
-	API_singlePhotonTriggers = TriggerAPI.getActive(TriggerPeriod.y2015 | TriggerPeriod.y2016 | TriggerPeriod.y2017 | TriggerPeriod.y2018 | TriggerPeriod.future, TriggerType.g_single)
-	return API_singlePhotonTriggers
+	if flags.Trigger.EDMVersion <= 2:
+		TriggerAPI.setConfigFlags(flags)
+		allperiods = TriggerPeriod.y2015 | TriggerPeriod.y2016 | TriggerPeriod.y2017 | TriggerPeriod.y2018 | TriggerPeriod.future2e34
+		trigger_names = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType=TriggerType.g,  livefraction=0.8)
+	else:
+		session = getTapisSession(flags)
+		lf = 0.8 # Prescale weighted life fraction of the GRL's LBs
+		trigger_names = set()
+		trigger_names = list(session.getLowestUnprescaled(triggerType=TriggerType.g, livefraction=lf).union(trigger_names))
+	return trigger_names
 
 # get jet triggers
 # Run 2: returns list returned by trigAPI