diff --git a/Trigger/TriggerCommon/TriggerMenuMT/CMakeLists.txt b/Trigger/TriggerCommon/TriggerMenuMT/CMakeLists.txt
index f36d051fb762c9e8d140efec00244f2acd88ebe0..4734d006bc4053268d18ec23a357e8a6c08dc926 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/CMakeLists.txt
+++ b/Trigger/TriggerCommon/TriggerMenuMT/CMakeLists.txt
@@ -13,6 +13,8 @@ function( atlas_build_lvl1_trigger_menu menu )
       return()
    endif()
 
+   cmake_parse_arguments( ARG "" "DEPENDS" "" ${ARGN} )
+
    # Command to build trigger menu. The idea is that ${menu}.stamp gets
    # created as the last command, should the menu generation succeed such that 
    # after a successful menu generation it wouldn't be attempted again.
@@ -21,7 +23,7 @@ function( atlas_build_lvl1_trigger_menu menu )
    # stamp file, ${menu}.attempted.stamp is created as the first command.
    # The menu is then only generated as part of the installation step if
    # this ${menu}.attempted.stamp file doesn't even exist.
-   
+
    add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${menu}.stamp
       COMMAND ${CMAKE_COMMAND} -E touch
       ${CMAKE_CURRENT_BINARY_DIR}/${menu}.attempted.stamp
@@ -43,6 +45,11 @@ function( atlas_build_lvl1_trigger_menu menu )
    add_custom_target( build_menu_${menu} ALL SOURCES
       ${CMAKE_CURRENT_BINARY_DIR}/${menu}.stamp )
 
+   # Optional dependency on other menu
+   if ( ARG_DEPENDS )
+      add_dependencies( build_menu_${menu} build_menu_${ARG_DEPENDS} )
+   endif()
+
    # In case the file generation failed, because it wasn't even attempted
    # (failure in another package), then try to run the generation as part
    # of the installation. Note that apparently chaining commands inside a
@@ -79,6 +86,7 @@ function( atlas_build_lvl1_trigger_menu menu )
    # menu targets be dependencies of the package target.
    if( NOT TARGET TriggerMenuMTMain )
       add_custom_target( TriggerMenuMTMain ALL
+         COMMENT "Package build succeeded"
          COMMAND ${CMAKE_COMMAND} -E echo
          "TriggerMenuMT: Package build succeeded" )
    endif()
@@ -86,8 +94,6 @@ function( atlas_build_lvl1_trigger_menu menu )
 
 endfunction ( atlas_build_lvl1_trigger_menu )
 
-
-
 #----------------------------------
 # Install files from the package:
 atlas_install_python_modules( python/*.py
@@ -163,13 +169,15 @@ atlas_add_test( EventBuildingSequenceSetup
 
 #----------------------------------
 # List of menus to be created:
-atlas_build_lvl1_trigger_menu( LS2_v1 )
 atlas_build_lvl1_trigger_menu( Physics_pp_run3_v1 )
 atlas_build_lvl1_trigger_menu( PhysicsP1_pp_run3_v1 )
 atlas_build_lvl1_trigger_menu( MC_pp_run3_v1 )
 atlas_build_lvl1_trigger_menu( Cosmic_run3_v1 )
 atlas_build_lvl1_trigger_menu( PhysicsP1_HI_run3_v1 )
 atlas_build_lvl1_trigger_menu( Dev_HI_run3_v1 )
-atlas_build_lvl1_trigger_menu( LS2_v1_TriggerValidation_prescale )
-atlas_build_lvl1_trigger_menu( LS2_v1_BulkMCProd_prescale )
-atlas_build_lvl1_trigger_menu( LS2_v1_CPSampleProd_prescale )
+
+# Build of different prescales for same menu need to be serialized (ATR-22387):
+atlas_build_lvl1_trigger_menu( LS2_v1 )
+atlas_build_lvl1_trigger_menu( LS2_v1_TriggerValidation_prescale DEPENDS LS2_v1 )
+atlas_build_lvl1_trigger_menu( LS2_v1_BulkMCProd_prescale DEPENDS LS2_v1 )
+atlas_build_lvl1_trigger_menu( LS2_v1_CPSampleProd_prescale DEPENDS LS2_v1 )
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/scripts/generateL1MenuMT.sh b/Trigger/TriggerCommon/TriggerMenuMT/scripts/generateL1MenuMT.sh
index 705824041c53a6ec3ae836f27e525773fd6e3757..11ee6f69850479562063843f2c7055e21daa4829 100755
--- a/Trigger/TriggerCommon/TriggerMenuMT/scripts/generateL1MenuMT.sh
+++ b/Trigger/TriggerCommon/TriggerMenuMT/scripts/generateL1MenuMT.sh
@@ -71,8 +71,8 @@ generateLVL1MenuMT.py   $menu 2>&1 >> $logfilelvl1
 generateL1TopoMenuMT.py $menu 2>&1 >> $logfiletopo 
 generateL1MenuRun3.py $menu 2>&1 >> $logfilel1r3 
 
-cp -v L*.xml ${dest}
-find . -maxdepth 1 -name 'L*.json' -exec cp -v {} ${dest} \;
+cp L*.xml ${dest}
+find . -maxdepth 1 -name 'L*.json' -exec cp {} ${dest} \;
 cp $logfilelvl1 ${dest}
 cp $logfiletopo ${dest}
 cp $logfilel1r3 ${dest}