diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4b5d2a140aee55b4b5dabcec242b03f0086374aa..d4ebfeb75a083fd2ad6f9de8587c92d54690e6ae 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -10,10 +10,9 @@ stages:
 # Job-wide variables.
 variables:
   EL_PACKAGES: make which wget tar atlas-devel curl-devel libX11-devel libXpm-devel libXft-devel libXext-devel libXi-devel openssl-devel glib2-devel glibc-devel gmp-devel rpm-build mesa-libGL-devel mesa-libGLU-devel mesa-libEGL-devel libuuid-devel man-db libxkbcommon-devel xz-devel
-  CENTOS7_PACKAGES: ${EL_PACKAGES} redhat-lsb-core
   ALMA9_PACKAGES: ${EL_PACKAGES} libaio-devel expat-devel libtirpc-devel
   UBUNTU_PACKAGES: git wget lsb-core libx11-dev libxpm-dev libxft-dev libxext-dev libxi-dev libssl-dev libgmp-dev libgl1-mesa-dev libglu1-mesa-dev libegl1-mesa-dev
-  CMAKE_VERSION: 3.29.2
+  CMAKE_VERSION: 3.29.5
   GIT_VERSION: default
 
 # Template for all build jobs.
@@ -54,24 +53,6 @@ variables:
     - lsetup "git ${GIT_VERSION}"
     - set -e
 
-# Template for all x86_64-centos7-gcc11 jobs.
-.x86_64_centos7_gcc11_template: &x86_64_centos7_gcc11_job
-  tags:
-    - cvmfs
-  image: centos:7
-  before_script:
-    # https://gitlab.docs.cern.ch/docs/Build%20your%20application/CI-CD/Runners/TroubleShooting/yum-install-hang/
-    - ulimit -n 1048576
-    - yum install -y ${CENTOS7_PACKAGES}
-    - export ATLAS_LOCAL_ROOT_BASE=/cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase
-    - set +e
-    - source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh
-    - asetup none,gcc11
-    - lsetup "cmake ${CMAKE_VERSION}"
-    - lsetup "git ${GIT_VERSION}"
-    - set -e
-    - export LC_ALL=en_US.utf8
-
 # Template for all x86_64-ubuntu2004-gcc9 jobs.
 .x86_64_ubuntu2004_gcc9_template: &x86_64_ubuntu2004_gcc9_job
   tags:
@@ -90,45 +71,16 @@ variables:
     - export LANG=C.UTF-8
     - export LC_ALL=C.UTF-8
 
-# Template for all aarch64-centos7-gcc9 jobs.
-.aarch64_centos7_gcc9_template: &aarch64_centos7_gcc9_job
-  tags:
-    - docker-arm
-  image: centos:7
-  before_script:
-    - yum install -y ${CENTOS7_PACKAGES}
-    - export ATLAS_LOCAL_ROOT_BASE=/cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase
-    - set +e
-    - source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh
-    - asetup none,gcc9
-    - lsetup "cmake ${CMAKE_VERSION}"
-    - lsetup "git ${GIT_VERSION}"
-    - set -e
-
 #
 # x86_64-el9-gcc13 build(s).
 #
 build:x86_64-el9-gcc13:
   <<: *build_job
   <<: *x86_64_el9_gcc13_job
-  parallel:
-    matrix:
-      - PROJECT_NAME: ['AthAnalysisExternals',
-                       'AthDerivationExternals', 'AthenaExternals',
-                       'AthGenerationExternals', 'AthSimulationExternals',
-                       'TestExternals', 'VP1LightExternals']
-        CMAKE_ARGUMENTS: ['-DCMAKE_BUILD_TYPE=RelWithDebInfo']
-
-#
-# x86_64-centos7-gcc11 build(s).
-#
-build:x86_64-centos7-gcc11:
-  <<: *build_job
-  <<: *x86_64_centos7_gcc11_job
   parallel:
     matrix:
       - PROJECT_NAME: ['AnalysisBaseExternals', 'AthAnalysisExternals',
-                       'AthDerivationExternals', 'AthenaExternals',
+                       'AthenaExternals',
                        'AthGenerationExternals', 'AthSimulationExternals',
                        'TestExternals', 'VP1LightExternals']
         CMAKE_ARGUMENTS: ['-DCMAKE_BUILD_TYPE=RelWithDebInfo']
diff --git a/External/Boost/CMakeLists.txt b/External/Boost/CMakeLists.txt
index d07ced35687e5f1c3ac498549fb5bb8562c19fd5..ff605038eddace4b5d0c2ee60b28632d1b47116d 100644
--- a/External/Boost/CMakeLists.txt
+++ b/External/Boost/CMakeLists.txt
@@ -21,7 +21,7 @@ endif()
 
 # Declare where to get Boost from.
 set( ATLAS_BOOST_SOURCE
-   "URL;http://cern.ch/lcgpackages/tarFiles/sources/boost_1_82_0.tar.gz;URL_MD5;f7050f554a65f6a42ece221eaeec1660"
+   "URL;http://cern.ch/lcgpackages/tarFiles/sources/boost_1_85_0.tar.gz;URL_MD5;53aeccc3167909ee770e34469f8dd592"
    CACHE STRING "The source for Boost" )
 mark_as_advanced( ATLAS_BOOST_SOURCE )
 
@@ -41,8 +41,8 @@ atlas_cpu_cores( nCPUs )
 # Decide where to take Python from:
 if( ATLAS_BUILD_PYTHON )
    set( Python_EXECUTABLE "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/python3" )
-   set( Python_VERSION "3.9" )
-   set( Python_INCLUDE_DIR "${CMAKE_INCLUDE_OUTPUT_DIRECTORY}/python3.9" )
+   set( Python_VERSION "3.11" )
+   set( Python_INCLUDE_DIR "${CMAKE_INCLUDE_OUTPUT_DIRECTORY}/python3.11" )
    set( Python_LIBRARY_DIR "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}" )
 else()
    find_package( Python COMPONENTS Interpreter Development )
diff --git a/External/COOL/CMakeLists.txt b/External/COOL/CMakeLists.txt
index a4dd9d971a4b249bde20a2a993d5ad627557c3bf..74bf189093632993baff193479df102feaff2e9a 100644
--- a/External/COOL/CMakeLists.txt
+++ b/External/COOL/CMakeLists.txt
@@ -51,7 +51,7 @@ if( ATLAS_BUILD_PYTHON )
       -DPYTHON_EXECUTABLE:FILEPATH=${CMAKE_BINARY_DIR}/${ATLAS_PLATFORM}/${CMAKE_INSTALL_BINDIR}/python${CMAKE_EXECUTABLE_SUFFIX}
       -DPYTHON_LIBRARY:FILEPATH=${CMAKE_BINARY_DIR}/${ATLAS_PLATFORM}/${CMAKE_INSTALL_LIBDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}Python${CMAKE_SHARED_LIBRARY_SUFFIX}
       -DPYTHON_INCLUDE_DIR:PATH=${CMAKE_BINARY_DIR}/${ATLAS_PLATFORM}/${CMAKE_INSTALL_INCLUDEDIR}
-      -DPython_config_version_twodigit:STRING=3.9
+      -DPython_config_version_twodigit:STRING=3.11
       -DLCG_python3:STRING=on )
 else()
    find_package( Python COMPONENTS Interpreter Development )
diff --git a/External/CORAL/CMakeLists.txt b/External/CORAL/CMakeLists.txt
index 49e4f1a11745e821d61f593fd751e9d429236e9b..22cd0b3fc39363a05e2d73fbf7500fa8be4688b0 100644
--- a/External/CORAL/CMakeLists.txt
+++ b/External/CORAL/CMakeLists.txt
@@ -41,7 +41,7 @@ if( ATLAS_BUILD_PYTHON )
       -DPYTHON_EXECUTABLE:FILEPATH=${CMAKE_BINARY_DIR}/${ATLAS_PLATFORM}/${CMAKE_INSTALL_BINDIR}/python${CMAKE_EXECUTABLE_SUFFIX}
       -DPYTHON_LIBRARY:FILEPATH=${CMAKE_BINARY_DIR}/${ATLAS_PLATFORM}/${CMAKE_INSTALL_LIBDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}Python${CMAKE_SHARED_LIBRARY_SUFFIX}
       -DPYTHON_INCLUDE_DIR:PATH=${CMAKE_BINARY_DIR}/${ATLAS_PLATFORM}/${CMAKE_INSTALL_INCLUDEDIR}
-      -DPython_config_version_twodigit:STRING=3.9
+      -DPython_config_version_twodigit:STRING=3.11
       -DLCG_python3:STRING=on )
 else()
    find_package( Python COMPONENTS Interpreter Development )
diff --git a/External/Lhapdf/CMakeLists.txt b/External/Lhapdf/CMakeLists.txt
index ae9651b50c1d39c69565335c967846cbc283e771..6771b3567dbfd29b3345f277fbb52ef0a2f0bb6a 100644
--- a/External/Lhapdf/CMakeLists.txt
+++ b/External/Lhapdf/CMakeLists.txt
@@ -30,7 +30,7 @@ endif()
 
 # Declare where to get LHAPDF from.
 set( ATLAS_LHAPDF_SOURCE
-   "URL;http://cern.ch/lcgpackages/tarFiles/sources/MCGeneratorsTarFiles/LHAPDF-6.5.1.tar.gz;URL_MD5;22cdeb36691e642bdf1fb89d65019ea3"
+   "URL;https://lhapdf.hepforge.org/downloads/LHAPDF-6.5.3.tar.gz;URL_MD5;b3b26a1dc31d42f6b744b44b548769bb"
    CACHE STRING "The source for LHAPDF" )
 mark_as_advanced( ATLAS_LHAPDF_SOURCE )
 
diff --git a/External/PyAnalysis/CMakeLists.txt b/External/PyAnalysis/CMakeLists.txt
index 05152dcb851ddb845c7cae93b240c49202fe9c48..af4172703c67760f3813e0c62769d51e8b5918f5 100644
--- a/External/PyAnalysis/CMakeLists.txt
+++ b/External/PyAnalysis/CMakeLists.txt
@@ -23,7 +23,7 @@ endif()
 if( ATLAS_BUILD_PYTHON )
    set( Python_EXECUTABLE $<TARGET_FILE:Python::Interpreter> )
    set( Python_VERSION_MAJOR 3 )
-   set( Python_VERSION_MINOR 9 )
+   set( Python_VERSION_MINOR 11 )
 else()
    find_package( Python COMPONENTS Interpreter REQUIRED )
    find_package( libffi REQUIRED )
@@ -59,7 +59,7 @@ set( _pythonModuleInstallArgs --root=/ --prefix=${_buildDir} )
 
 # Build/install setuptools:
 set( ATLAS_SETUPTOOLS_SOURCE
-   "URL;http://cern.ch/lcgpackages/tarFiles/sources/setuptools-57.1.0.tar.gz;URL_MD5;8e0d477fb7f722ed5b6b7e84a627027d"
+  "URL;http://cern.ch/lcgpackages/tarFiles/sources/setuptools-57.1.0.tar.gz;URL_MD5;8e0d477fb7f722ed5b6b7e84a627027d"
    CACHE STRING "The source for setuptools" )
 mark_as_advanced( ATLAS_SETUPTOOLS_SOURCE )
 ExternalProject_Add( setuptools
@@ -87,7 +87,7 @@ if( NOT NUMPY_FOUND OR ATLAS_BUILD_PYTHON )
 
    # Build/install Cython.
    set( ATLAS_CYTHON_SOURCE
-      "URL;https://cern.ch/lcgpackages/tarFiles/sources/Cython-0.29.33.tar.gz;URL_MD5;bd42c555cb2298b8a94fa8de7ee679ba"
+      "URL;https://cern.ch/lcgpackages/tarFiles/sources/Cython-3.0.8.tar.gz;URL_MD5;9f7baaa983e1bd06eaeb4fa0adfc77e5"
       CACHE STRING "The source for Cython" )
    mark_as_advanced( ATLAS_CYTHON_SOURCE )
    ExternalProject_Add( Cython
@@ -107,7 +107,7 @@ if( NOT NUMPY_FOUND OR ATLAS_BUILD_PYTHON )
 
    # Build/install numpy:
    set( ATLAS_NUMPY_SOURCE
-      "URL;http://cern.ch/lcgpackages/tarFiles/sources/numpy-1.23.5.tar.gz;URL_MD5;8b2692a511a3795f3af8af2cd7566a15"
+      "URL;http://cern.ch/lcgpackages/tarFiles/sources/numpy-1.26.4.tar.gz;URL_MD5;19550cbe7bedd96a928da9d4ad69509d"
       CACHE STRING "The source for NumPy" )
    mark_as_advanced( ATLAS_NUMPY_SOURCE )
    ExternalProject_Add( numpy
@@ -130,7 +130,7 @@ endif()
 
 # Build/install pyyaml.
 set( ATLAS_PYYAML_SOURCE
-   "URL;http://cern.ch/lcgpackages/tarFiles/sources/PyYAML-6.0.tar.gz;URL_MD5;1d19c798f25e58e3e582f0f8c977dbb8"
+   "URL;http://cern.ch/lcgpackages/tarFiles/sources/PyYAML-6.0.1.tar.gz;URL_MD5;c9246277af2d9a13b7018af267a0831a"
    CACHE STRING "The source for PyYAML" )
 mark_as_advanced( ATLAS_PYYAML_SOURCE )
 ExternalProject_Add( PyYAML
@@ -183,7 +183,7 @@ if( NOT PIP_FOUND OR ATLAS_BUILD_PYTHON )
 
    # Build/install pip:
    set( ATLAS_PIP_SOURCE
-      "URL;http://cern.ch/lcgpackages/tarFiles/sources/pip-22.0.4.tar.gz;URL_MD5;ffb2a7aa43004601409b3318777b75a8"
+      "URL;http://cern.ch/lcgpackages/tarFiles/sources/pip-23.3.1.tar.gz;URL_MD5;f0c9fba61e9d9badcc9921062e993d84"
       CACHE STRING "The source for pip" )
    mark_as_advanced( ATLAS_PIP_SOURCE )
    ExternalProject_Add( pip
diff --git a/External/PyModules/CMakeLists.txt b/External/PyModules/CMakeLists.txt
index d03e5b926d6c00827439e1e743ece38f0d700d28..7d737b7581b20f81bb299cc18a2eedfa04c2c628 100644
--- a/External/PyModules/CMakeLists.txt
+++ b/External/PyModules/CMakeLists.txt
@@ -12,7 +12,7 @@ atlas_subdir( PyModules )
 if( ATLAS_BUILD_PYTHON )
    set( Python_EXECUTABLE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/python3 )
    set( Python_VERSION_MAJOR 3 )
-   set( Python_VERSION_MINOR 8 )
+   set( Python_VERSION_MINOR 11 )
 else()
    find_package( Python COMPONENTS Interpreter )
    if( "${Python_VERSION}" VERSION_LESS 3 )
diff --git a/External/Python/CMakeLists.txt b/External/Python/CMakeLists.txt
index ff10b701f4c204783311e6c461568228baae1575..411e111039745e4d0cdee8202e308b081f07a974 100644
--- a/External/Python/CMakeLists.txt
+++ b/External/Python/CMakeLists.txt
@@ -90,7 +90,7 @@ install( DIRECTORY "${_buildDir}/"
 
 # Declare where to get Python from.
 set( ATLAS_PYTHON_SOURCE
-   "URL;https://cern.ch/lcgpackages/tarFiles/sources/Python-3.9.12.tgz;URL_MD5;abc7f7f83ea8614800b73c45cf3262d3"
+   "URL;https://cern.ch/lcgpackages/tarFiles/sources/Python-3.11.9.tgz;URL_MD5;bfd4d3bfeac4216ce35d7a503bf02d5c"
    CACHE STRING "The source for Python" )
 mark_as_advanced( ATLAS_PYTHON_SOURCE )
 
@@ -144,10 +144,10 @@ configure_file( "${CMAKE_CURRENT_SOURCE_DIR}/cmake/configure.sh.in"
 
 # Files/directories generated by the build.
 set( Python_EXECUTABLE "${_buildDir}/bin/python3" )
-set( Python_INCLUDE_DIR "${_buildDir}/include/python3.9" )
+set( Python_INCLUDE_DIR "${_buildDir}/include/python3.11" )
 file( MAKE_DIRECTORY "${Python_INCLUDE_DIR}" )
 set( Python_LIBRARY
-   "${_buildDir}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}python3.9${CMAKE_SHARED_LIBRARY_SUFFIX}" )
+   "${_buildDir}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}python3.11${CMAKE_SHARED_LIBRARY_SUFFIX}" )
 
 # Set up the build of Python in the build directory:
 ExternalProject_Add( Python
diff --git a/External/Python/cmake/sanitizeConfig.sh.in b/External/Python/cmake/sanitizeConfig.sh.in
index 45c60b80959cf752b55fbd44a6629a8d7a0fed57..b0cea1d26557bc022ec7960e88dce7e41ebe8f3b 100755
--- a/External/Python/cmake/sanitizeConfig.sh.in
+++ b/External/Python/cmake/sanitizeConfig.sh.in
@@ -14,10 +14,10 @@
 set -e
 
 # Loop over the executable scripts that need to be massaged:
-for script in @_buildDir@/bin/python3.9-config \
-              @_buildDir@/bin/2to3-3.9 \
-              @_buildDir@/bin/idle3.9 \
-              @_buildDir@/bin/pydoc3.9; do
+for script in @_buildDir@/bin/python3.11-config \
+              @_buildDir@/bin/2to3-3.11 \
+              @_buildDir@/bin/idle3.11 \
+              @_buildDir@/bin/pydoc3.11; do
 
     # Create a sanitized version of the script, by just replacing
     # its first line with a relocatable expression:
@@ -27,8 +27,8 @@ done
 # Create a sanitized version of _sysconfigdata.py, using sed:
 sed -i -e '1i\
 import os; installdir=os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))' \
-    @_buildDir@/lib/python3.9/_sysconfigdata*.py
+    @_buildDir@/lib/python3.11/_sysconfigdata*.py
 sed -i -e "s:'@_buildDir@:installdir + ':g" \
-    @_buildDir@/lib/python3.9/_sysconfigdata*.py
+    @_buildDir@/lib/python3.11/_sysconfigdata*.py
 sed -i -e "s:installdir + '\(.*\)'$:installdir + '\1' +:g" \
-    @_buildDir@/lib/python3.9/_sysconfigdata*.py
+    @_buildDir@/lib/python3.11/_sysconfigdata*.py
diff --git a/External/ROOT/CMakeLists.txt b/External/ROOT/CMakeLists.txt
index 31b32154e0e1cef179da96e39dc62332cb319299..2155af351d40a46949af43e2dc9066c4f9768911 100644
--- a/External/ROOT/CMakeLists.txt
+++ b/External/ROOT/CMakeLists.txt
@@ -21,13 +21,13 @@ endif()
 
 # Declare where to get ROOT from.
 set( ATLAS_ROOT_SOURCE
-   "URL;http://cern.ch/atlas-software-dist-eos/externals/ROOT/root_v6.28.12.source.tar.gz;https://root.cern/download/root_v6.28.12.source.tar.gz;URL_MD5;6482f7396773f3ad8943d1d7381ae083"
+   "URL;https://root.cern/download/root_v6.32.00.source.tar.gz;URL_MD5;92945d1cfb88567d505bd64f55da8a9d"
    CACHE STRING "The source for ROOT" )
 mark_as_advanced( ATLAS_ROOT_SOURCE )
 
 # Decide whether / how to patch the ROOT sources.
 set( ATLAS_ROOT_PATCH
-   "PATCH_COMMAND;patch;-p1;-i;${CMAKE_CURRENT_SOURCE_DIR}/patches/v6-28-04-vdt.patch"
+   "PATCH_COMMAND;patch;-p1;-i;${CMAKE_CURRENT_SOURCE_DIR}/patches/v6-28-04-vdt.patch;COMMAND;patch;-p1;-i;${CMAKE_CURRENT_SOURCE_DIR}/patches/v6-32-00-cmake.patch"
    CACHE STRING "Patch command for ROOT" )
 set( ATLAS_ROOT_FORCEDOWNLOAD_MESSAGE
    "Forcing the re-download of ROOT (2023.07.26.)"
@@ -80,8 +80,9 @@ if( NOT ATLAS_BUILD_XROOTD )
    find_package( Xrootd REQUIRED )
 endif()
 list( APPEND _extraArgs
-   -Dxrootd:BOOL=ON
-   -DXROOTD_ROOT_DIR:PATH=$<TARGET_PROPERTY:Xrootd::Utils,INSTALL_PATH> )
+   -Dxrootd:BOOL=ON )
+list( APPEND _cmakePrefixes
+   $<TARGET_PROPERTY:Xrootd::Utils,INSTALL_PATH> )
 
 # ...and optionally DCAP.
 if( NOT ATLAS_BUILD_DCAP )
diff --git a/External/ROOT/patches/v6-32-00-cmake.patch b/External/ROOT/patches/v6-32-00-cmake.patch
new file mode 100644
index 0000000000000000000000000000000000000000..a0280bfbba02d357b641a2a535a42b3237cab7c3
--- /dev/null
+++ b/External/ROOT/patches/v6-32-00-cmake.patch
@@ -0,0 +1,33 @@
+diff -ur root-6.32.00-orig/cmake/modules/SearchInstalledSoftware.cmake root-6.32.00-fixed/cmake/modules/SearchInstalledSoftware.cmake
+--- root-6.32.00-orig/cmake/modules/SearchInstalledSoftware.cmake	2024-05-28 06:06:46.000000000 +0200
++++ root-6.32.00-fixed/cmake/modules/SearchInstalledSoftware.cmake	2024-06-17 15:36:56.813023440 +0200
+@@ -161,7 +161,7 @@
+                          --with-harfbuzz=no ${_freetype_brotli} ${_freetype_zlib}
+                           "CC=${_freetype_cc}" CFLAGS=${_freetype_cflags}
+       INSTALL_COMMAND ""
+-      LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1 BUILD_IN_SOURCE 1
++      LOG_DOWNLOAD 1 LOG_BUILD 1 LOG_INSTALL 1 BUILD_IN_SOURCE 1
+       BUILD_BYPRODUCTS ${FREETYPE_LIBRARY}
+       TIMEOUT 600
+     )
+@@ -848,7 +848,7 @@
+     INSTALL_DIR ${CMAKE_BINARY_DIR}
+     CONFIGURE_COMMAND ./configure --prefix=<INSTALL_DIR>
+     BUILD_COMMAND make CFLAGS=-fPIC
+-    LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1
++    LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_INSTALL 1
+     BUILD_IN_SOURCE 1
+     BUILD_BYPRODUCTS ${FFTW_LIBRARIES}
+     TIMEOUT 600
+diff -ur root-6.32.00-orig/interpreter/cling/tools/plugins/clad/CMakeLists.txt root-6.32.00-fixed/interpreter/cling/tools/plugins/clad/CMakeLists.txt
+--- root-6.32.00-orig/interpreter/cling/tools/plugins/clad/CMakeLists.txt	2024-05-28 06:06:46.000000000 +0200
++++ root-6.32.00-fixed/interpreter/cling/tools/plugins/clad/CMakeLists.txt	2024-06-18 10:05:29.891404067 +0200
+@@ -56,8 +56,6 @@
+ set(_clad_cmake_logging_settings
+   LOG_DOWNLOAD ON
+   LOG_CONFIGURE ON
+-  LOG_BUILD ON
+-  LOG_INSTALL ON
+ )
+ 
+ list(APPEND _clad_cmake_logging_settings LOG_OUTPUT_ON_FAILURE ON)
diff --git a/External/TBB/CMakeLists.txt b/External/TBB/CMakeLists.txt
index 8003f581141c2f1256befe8140bb021b3d8246ff..af61602b79fe1efa66965dea4a09c6cf29a10789 100644
--- a/External/TBB/CMakeLists.txt
+++ b/External/TBB/CMakeLists.txt
@@ -21,14 +21,12 @@ endif()
 
 # Declare where to get TBB from.
 set( ATLAS_TBB_SOURCE
-   "URL;https://cern.ch/lcgpackages/tarFiles/sources/oneTBB-2020_U2.tar.gz;URL_MD5;1b711ae956524855088df3bbf5ec65dc"
+   "URL;https://cern.ch/lcgpackages/tarFiles/sources/oneTBB-2021.10.0.tar.gz;URL_MD5;2caf55b3d35b53edccb33ecaf0f23402"
    CACHE STRING "The source for TBB" )
 mark_as_advanced( ATLAS_TBB_SOURCE )
 
 # Decide whether / how to patch the TBB sources.
-set( ATLAS_TBB_PATCH
-   "PATCH_COMMAND;patch;-p1;-i;${CMAKE_CURRENT_SOURCE_DIR}/patches/tbb-2020_U2.patch"
-   CACHE STRING "Patch command for TBB" )
+set( ATLAS_TBB_PATCH "" CACHE STRING "Patch command for TBB" )
 set( ATLAS_TBB_FORCEDOWNLOAD_MESSAGE
    "Forcing the re-download of TBB (2023.07.26.)"
    CACHE STRING "Download message to update whenever patching changes" )
@@ -61,19 +59,23 @@ ExternalProject_Add( TBB
    INSTALL_DIR "${CMAKE_BINARY_DIR}/${ATLAS_PLATFORM}"
    ${ATLAS_TBB_SOURCE}
    ${ATLAS_TBB_PATCH}
-   CONFIGURE_COMMAND ${CMAKE_COMMAND} -E echo "No configuration for TBB"
-   BUILD_COMMAND make ${_makeArgs}
-   BUILD_IN_SOURCE 1
-   INSTALL_COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=<SOURCE_DIR>
-   -DINSTALL_DIR=${_buildDir} ${_scriptArgs}
-   -P "${CMAKE_CURRENT_SOURCE_DIR}/cmake/InstallTBB.cmake"
-   COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=<SOURCE_DIR>
-   -DINSTALL_DIR=<INSTALL_DIR> ${_scriptArgs}
-   -P "${CMAKE_CURRENT_SOURCE_DIR}/cmake/InstallTBB.cmake"
-   BUILD_BYPRODUCTS "${TBB_tbb_LIBRARY}" )
+   CMAKE_CACHE_ARGS
+   -DCMAKE_PREFIX_PATH:PATH=${_prefixPaths}
+   -DCMAKE_INSTALL_PREFIX:PATH=${_buildDir}
+   -DCMAKE_INSTALL_BINDIR:PATH=${CMAKE_INSTALL_BINDIR}
+   -DCMAKE_INSTALL_LIBDIR:PATH=${CMAKE_INSTALL_LIBDIR}
+   -DTBB_TEST:BOOL=OFF
+   ${_extraArgs}
+   BUILD_BYPRODUCTS "${TBB_tbb_LIBRARY}"
+   LOG_CONFIGURE 1 )
 ExternalProject_Add_Step( TBB forcedownload
    COMMAND ${CMAKE_COMMAND} -E echo "${ATLAS_TBB_FORCEDOWNLOAD_MESSAGE}"
    DEPENDERS download )
+ExternalProject_Add_Step( TBB buildinstall
+   COMMAND ${CMAKE_COMMAND} -E copy_directory "${_buildDir}/" "<INSTALL_DIR>"
+   COMMENT "Installing TBB into the build area"
+   DEPENDEES install )
+
 add_dependencies( Package_TBB TBB )
 
 # Set up imported targets that could be used by other packages in their builds.
diff --git a/External/XRootD/CMakeLists.txt b/External/XRootD/CMakeLists.txt
index 3139a6d43a180906ba8a5573e1f9860f1695c46f..b46ebad31f8759b3fd8ebbdfcfada737b3351b25 100644
--- a/External/XRootD/CMakeLists.txt
+++ b/External/XRootD/CMakeLists.txt
@@ -21,14 +21,12 @@ endif()
 
 # Declare where to get XRootD from.
 set( ATLAS_XROOTD_SOURCE
-   "URL;http://cern.ch/lcgpackages/tarFiles/sources/xrootd-5.5.4.tar.gz;URL_MD5;623e280752f077a7ed0648b43d0a4eec"
+   "URL;http://cern.ch/lcgpackages/tarFiles/sources/xrootd-5.6.9.tar.gz;URL_MD5;48a3fe6e8768305b742dd2d08404114c"
    CACHE STRING "The source for XRootD" )
 mark_as_advanced( ATLAS_XROOTD_SOURCE )
 
 # Decide whether / how to patch the XRootD sources.
-set( ATLAS_XROOTD_PATCH
-  "PATCH_COMMAND;patch;-p1;-i;${CMAKE_CURRENT_SOURCE_DIR}/patches/xrootd-5_5_4.patch;COMMAND;patch;-p1;-i;${CMAKE_CURRENT_SOURCE_DIR}/patches/xrootd-5_5_4_2.patch"
-  CACHE STRING "Patch command for XRootD" )
+set( ATLAS_XROOTD_PATCH "" CACHE STRING "Patch command for XRootD" )
 set( ATLAS_XROOTD_FORCEDOWNLOAD_MESSAGE
    "Forcing the re-download of XRootD (2023.09.01.)"
    CACHE STRING "Download message to update whenever patching changes" )
diff --git a/External/nlohmann_json/CMakeLists.txt b/External/nlohmann_json/CMakeLists.txt
index 01447f5dd78d900e8c91b7c19838839acddd8198..3f41e0d9358c71974bbc6ceed9ec1aa0f5ea7576 100644
--- a/External/nlohmann_json/CMakeLists.txt
+++ b/External/nlohmann_json/CMakeLists.txt
@@ -20,7 +20,7 @@ endif()
 
 # Declare where to get nlohmann_json from.
 set( ATLAS_NLOHMANN_JSON_SOURCE
-   "URL;https://cern.ch/lcgpackages/tarFiles/sources/json-3.10.5.tar.gz;URL_MD5;5b946f7d892fa55eabec45e76a20286b"
+   "URL;https://cern.ch/lcgpackages/tarFiles/sources/json-3.11.3.tar.gz;URL_MD5;d603041cbc6051edbaa02ebb82cf0aa9"
    CACHE STRING "The source for nlohmann_json" )
 mark_as_advanced( ATLAS_NLOHMANN_JSON_SOURCE )
 
diff --git a/Projects/AthAnalysisExternals/package_filters.txt b/Projects/AthAnalysisExternals/package_filters.txt
index 36c7b048804032d48a9ee7ac9b5be221301e5e87..552cf454db4b409b989b141695bfbd46f0dddb44 100644
--- a/Projects/AthAnalysisExternals/package_filters.txt
+++ b/Projects/AthAnalysisExternals/package_filters.txt
@@ -12,7 +12,6 @@
 + External/GoogleTest
 + External/HDF5
 + External/KLFitter
-+ External/Lhapdf
 + External/lwtnn
 + External/onnxruntime
 + External/PyModules