diff --git a/cmake/toolchain/heptools-dev-base.cmake b/cmake/toolchain/heptools-dev-base.cmake
index 6109808d2841db99d765a30b94e96b1849cf1d07..fb9cdfd4ffa808b16add2daa1cc648cc7a4a7e05 100644
--- a/cmake/toolchain/heptools-dev-base.cmake
+++ b/cmake/toolchain/heptools-dev-base.cmake
@@ -169,8 +169,8 @@ LCG_AA_project(EDM4hep                 00.02.01
 # Externals
 LCG_external_package(lcgenv            1.3.15                                   )
 LCG_external_package(absl_py           0.7.1                                    )
-if(${LCG_COMP} STREQUAL gcc AND NOT ${LCG_COMPVERS} VERSION_LESS 8 AND NOT ${LCG_COMPVERS} VERSION_EQUAL 62)
-  LCG_external_package(acts_core         0.10.05                                )
+if(${LCG_COMP} STREQUAL gcc AND NOT ${LCG_COMPVERS} VERSION_LESS 8)
+  LCG_external_package(acts            3.0.0                                    )
 endif()
 LCG_external_package(AIDA              3.2.1                                    )
 LCG_external_package(alpaka            0.5.0                                    )
diff --git a/cmake/toolchain/heptools-dev3.cmake b/cmake/toolchain/heptools-dev3.cmake
index 817b7fb411469973dbfa358af0f98ae9690e95be..f49f9f98db4013b3ea24dbb7639f9597dd4c4cda 100644
--- a/cmake/toolchain/heptools-dev3.cmake
+++ b/cmake/toolchain/heptools-dev3.cmake
@@ -24,3 +24,6 @@ if(APPLE)    # We cannot build ROOT (HEAD) and R together because RConfig.h file
 endif()
 LCG_external_package(pythia8           303            ${MCGENPATH}/pythia8 )
 LCG_external_package(madgraph5amc      2.8.0.atlas    ${MCGENPATH}/madgraph5amc author=2.8.0)
+
+# Requires a fix in DD4hep
+LCG_remove_package(acts)
diff --git a/cmake/toolchain/heptools-dev3cuda.cmake b/cmake/toolchain/heptools-dev3cuda.cmake
index 3c27fe1d60823a0cb1aaf2911833862c4f0717a1..b556a7279536fbd8529388cae3972aa46405b0b8 100644
--- a/cmake/toolchain/heptools-dev3cuda.cmake
+++ b/cmake/toolchain/heptools-dev3cuda.cmake
@@ -11,6 +11,9 @@ LCG_remove_package(Garfield++)
 LCG_remove_package(COOL)
 LCG_remove_package(CORAL)
 
+# Requires a fix in DD4hep
+LCG_remove_package(acts)
+
 #---Overwrites and additional packages ----------------------------
 LCG_external_package(Python       3.7.6                         )
 LCG_external_package(ROOT         HEAD   GIT=http://root.cern.ch/git/root.git        )
diff --git a/cmake/toolchain/heptools-dev3python2.cmake b/cmake/toolchain/heptools-dev3python2.cmake
index 901f125b3d5815496d55e21beecdd732a3f52b73..60981e4e65c3f215e4ddb7656e615172914380f4 100644
--- a/cmake/toolchain/heptools-dev3python2.cmake
+++ b/cmake/toolchain/heptools-dev3python2.cmake
@@ -15,3 +15,6 @@ endif()
 LCG_remove_package(Gaudi)
 LCG_external_package(pythia8           303            ${MCGENPATH}/pythia8 )
 LCG_external_package(madgraph5amc      3.0.3.beta     ${MCGENPATH}/madgraph5amc author=3.0.3.beta)
+
+# Requires a fix in DD4hep
+LCG_remove_package(acts)
diff --git a/jenkins/Jenkinsfile-nightly b/jenkins/Jenkinsfile-nightly
index 1051330bb74acb5b8d896d912a9f01e7c34da82e..b00e182182efdb6b4df48d8b32c2c3307da23b97 100644
--- a/jenkins/Jenkinsfile-nightly
+++ b/jenkins/Jenkinsfile-nightly
@@ -18,7 +18,7 @@ def getCDashTrack() { return params.LCG_VERSION =~ 'dev' ? params.LCG_VERSION :
 def getTarget() { return params.TARGET != 'all' ? params.TARGET : params.LCG_VERSION =~ 'ARM' ? 'top_packages' : 'all' }
 def getIgnoreModules() { 
   modules = 'future#winreg jpype#jpypex ROOT#JsMVA importlib_resources#importlib_resources'
-  if (params.LCG_VERSION =~ 'py3|python3|cuda|ARM') modules += ' agile#AGILe gosam#golem QMtest#qm'
+  if (params.LCG_VERSION =~ 'py3|python3|cuda|ARM|dev[3,4]$') modules += ' agile#AGILe gosam#golem QMtest#qm'
   if (params.LCG_VERSION =~ 'cuda') modules += ' hepdata_converter#hepdata_converter'
   if (params.TARGET != 'all') modules += ' ROOT#JupyROOT'
   return modules
diff --git a/jenkins/cvmfs_install.sh b/jenkins/cvmfs_install.sh
index 2c90aac47c22f1db018ace4011e3ff14795d9a34..94900ab2ad053de20dacc13c130d20c03e33efa9 100755
--- a/jenkins/cvmfs_install.sh
+++ b/jenkins/cvmfs_install.sh
@@ -61,8 +61,8 @@ if [[ "${BUILDMODE}" == "nightly" ]]; then
     rm /cvmfs/sft-nightlies.cern.ch/lcg/nightlies/${LCG_VERSION}/$weekday/isDone-unstable-$PLATFORM
     rm /cvmfs/sft-nightlies.cern.ch/lcg/nightlies/${LCG_VERSION}/$weekday/LCG_externals_$PLATFORM.txt
     rm /cvmfs/sft-nightlies.cern.ch/lcg/nightlies/${LCG_VERSION}/$weekday/LCG_generators_$PLATFORM.txt
-    echo "$WORKSPACE/lcgcmake/jenkins/lcginstall.py -y -u http://lcgpackages.web.cern.ch/lcgpackages/tarFiles/nightlies/${LCG_VERSION}/$weekday -r ${LCG_VERSION} -d LCG_${LCG_VERSION}_$PLATFORM.txt -p /cvmfs/sft-nightlies.cern.ch/lcg/nightlies/${LCG_VERSION}/$weekday/ -e cvmfs"
-    $WORKSPACE/lcgcmake/jenkins/lcginstall.py -y -u http://lcgpackages.web.cern.ch/lcgpackages/tarFiles/nightlies/${LCG_VERSION}/$weekday -r ${LCG_VERSION} -d LCG_${LCG_VERSION}_$PLATFORM.txt -p /cvmfs/sft-nightlies.cern.ch/lcg/nightlies/${LCG_VERSION}/$weekday/ -e cvmfs
+    echo "$WORKSPACE/lcgcmake/jenkins/lcginstall.py -y -u https://lcgpackages.web.cern.ch/tarFiles/nightlies/${LCG_VERSION}/$weekday -r ${LCG_VERSION} -d LCG_${LCG_VERSION}_$PLATFORM.txt -p /cvmfs/sft-nightlies.cern.ch/lcg/nightlies/${LCG_VERSION}/$weekday/ -e cvmfs"
+    $WORKSPACE/lcgcmake/jenkins/lcginstall.py -y -u https://lcgpackages.web.cern.ch/tarFiles/nightlies/${LCG_VERSION}/$weekday -r ${LCG_VERSION} -d LCG_${LCG_VERSION}_$PLATFORM.txt -p /cvmfs/sft-nightlies.cern.ch/lcg/nightlies/${LCG_VERSION}/$weekday/ -e cvmfs
     if [ "\$?" == "0" ]; then
       echo "Installation script has worked, we go on"
     else
@@ -70,8 +70,8 @@ if [[ "${BUILDMODE}" == "nightly" ]]; then
     fi
 
     cd  /cvmfs/sft-nightlies.cern.ch/lcg/nightlies/${LCG_VERSION}/$weekday/
-    wget https://lcgpackages.web.cern.ch/lcgpackages/tarFiles/nightlies/${LCG_VERSION}/$weekday/isDone-$PLATFORM
-    wget https://lcgpackages.web.cern.ch/lcgpackages/tarFiles/nightlies/${LCG_VERSION}/$weekday/isDone-unstable-$PLATFORM
+    wget https://lcgpackages.web.cern.ch/tarFiles/nightlies/${LCG_VERSION}/$weekday/isDone-$PLATFORM
+    wget https://lcgpackages.web.cern.ch/tarFiles/nightlies/${LCG_VERSION}/$weekday/isDone-unstable-$PLATFORM
     $WORKSPACE/lcgcmake/jenkins/extract_LCG_summary.py /cvmfs/sft-nightlies.cern.ch/lcg/nightlies/${LCG_VERSION}/$weekday $PLATFORM ${LCG_VERSION} RELEASE
     if [ -f "/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/${LCG_VERSION}/$weekday/isDone-$PLATFORM" ] && [ xtrue = "x${VIEWS_CREATION}" ]; then
       echo "The installation of the nightly is completed with all packages, let's go for the view creation"
@@ -93,9 +93,9 @@ if [[ "${BUILDMODE}" == "nightly" ]]; then
 
 elif [[ "${BUILDMODE}" == "release" ]]; then
     if [[ "${UPDATELINKS}" == "false" ]]; then
-        $WORKSPACE/lcgcmake/jenkins/lcginstall.py -u http://lcgpackages.web.cern.ch/lcgpackages/tarFiles/releases -a http://lcgpackages.web.cern.ch/lcgpackages/tarFiles/layered_releases -r ${LCG_VERSION} -d LCG_${LCG_VERSION}_$PLATFORM.txt -p /cvmfs/sft.cern.ch/lcg/releases -e cvmfs
+        $WORKSPACE/lcgcmake/jenkins/lcginstall.py -u https://lcgpackages.web.cern.ch/tarFiles/releases -a https://lcgpackages.web.cern.ch/tarFiles/layered_releases -r ${LCG_VERSION} -d LCG_${LCG_VERSION}_$PLATFORM.txt -p /cvmfs/sft.cern.ch/lcg/releases -e cvmfs
     else
-        $WORKSPACE/lcgcmake/jenkins/lcginstall.py -u http://lcgpackages.web.cern.ch/lcgpackages/tarFiles/releases -a http://lcgpackages.web.cern.ch/lcgpackages/tarFiles/layered_releases -r ${LCG_VERSION} -d LCG_${LCG_VERSION}_$PLATFORM.txt -p /cvmfs/sft.cern.ch/lcg/releases -e cvmfs --update
+        $WORKSPACE/lcgcmake/jenkins/lcginstall.py -u https://lcgpackages.web.cern.ch/tarFiles/releases -a https://lcgpackages.web.cern.ch/tarFiles/layered_releases -r ${LCG_VERSION} -d LCG_${LCG_VERSION}_$PLATFORM.txt -p /cvmfs/sft.cern.ch/lcg/releases -e cvmfs --update
     fi
 
     if [ "\$?" == "0" ]; then
@@ -127,9 +127,9 @@ elif [[ "${BUILDMODE}" == "release" ]]; then
 
 elif [[ "${BUILDMODE}" == "limited" ]]; then
     if [[ "${UPDATELINKS}" == "false" ]]; then
-        $WORKSPACE/lcgcmake/jenkins/lcginstall.py -o -u http://lcgpackages.web.cern.ch/lcgpackages/tarFiles/releases -r ${LCG_VERSION} -d LCG_${LCG_VERSION}_$PLATFORM.txt -p /cvmfs/sft.cern.ch/lcg/releases -e cvmfs
+        $WORKSPACE/lcgcmake/jenkins/lcginstall.py -o -u https://lcgpackages.web.cern.ch/tarFiles/releases -r ${LCG_VERSION} -d LCG_${LCG_VERSION}_$PLATFORM.txt -p /cvmfs/sft.cern.ch/lcg/releases -e cvmfs
     else
-        $WORKSPACE/lcgcmake/jenkins/lcginstall.py -o -u http://lcgpackages.web.cern.ch/lcgpackages/tarFiles/releases -r ${LCG_VERSION} -d LCG_${LCG_VERSION}_$PLATFORM.txt --update -p /cvmfs/sft.cern.ch/lcg/releases -e cvmfs
+        $WORKSPACE/lcgcmake/jenkins/lcginstall.py -o -u https://lcgpackages.web.cern.ch/tarFiles/releases -r ${LCG_VERSION} -d LCG_${LCG_VERSION}_$PLATFORM.txt --update -p /cvmfs/sft.cern.ch/lcg/releases -e cvmfs
     fi
 
     if [ "\$?" == "0" ]; then
diff --git a/jenkins/jk-setup.sh b/jenkins/jk-setup.sh
index c91d22f485c793f7eef2a31071c6f26f20c1650b..6c27e04394847a64ace3bb0cfa6b9cf78b1cbce7 100644
--- a/jenkins/jk-setup.sh
+++ b/jenkins/jk-setup.sh
@@ -37,9 +37,12 @@ fi
 if [[ $PLATFORM == *centos7* ]]; then
     LABEL_COMPILER=centos7
 fi
+if [[ $PLATFORM == *centos8* ]]; then
+    LABEL_COMPILER=centos8
+fi
 
 # setup CMake -----(the default version is often very old)-------------------------
-if [[ $PLATFORM == *slc6* || $PLATFORM == *cc7* || $PLATFORM == *centos7* || $PLATFORM == *ubuntu* || $PLATFORM == *fedora* ]]; then
+if [[ $PLATFORM == *slc6* || $PLATFORM == *cc7* || $PLATFORM == *centos* || $PLATFORM == *ubuntu* || $PLATFORM == *fedora* ]]; then
     if [[ ${ARCH} == *i686* ]]; then
         # i686 special case: the newer cmake is a link to x86_64, might cause problems!!
         export PATH=/cvmfs/sft.cern.ch/lcg/contrib/CMake/3.3.2/Linux-i686/bin:${PATH}
diff --git a/jenkins/lcginstall.py b/jenkins/lcginstall.py
index 71441e19c7aabb0d87abb4038a4ae058930360ec..937d14d34f9986c3d834c67e744bace184709a97 100755
--- a/jenkins/lcginstall.py
+++ b/jenkins/lcginstall.py
@@ -13,7 +13,7 @@ import buildinfo2json
 
 GCCPATHS = {'AFS': '/afs/cern.ch/sw/lcg/contrib/gcc', 'CVMFS': '/cvmfs/sft.cern.ch/lcg/contrib/gcc/', 'EOS': '/cvmfs/sft.cern.ch/lcg/contrib/gcc/'}
 RELEASEPATHS = {'AFS': '/afs/cern.ch/sw/lcg/releases', 'CVMFS': '/cvmfs/sft.cern.ch/lcg/releases', 'EOS': '/cvmfs/sft.cern.ch/lcg/releases'}
-ReleasesURL = 'http://lcgpackages.web.cern.ch/lcgpackages/tarFiles/releases'
+ReleasesURL = 'https://lcgpackages.web.cern.ch/tarFiles/releases'
 
 def getCompilerPath(version, platform, fstype=None):
   global GCCPATHS
@@ -40,7 +40,7 @@ def checkURL(url):
   if "file://" in url:
     return True if os.system('stat {0} 1>/dev/null 2>/dev/null'.format(url.replace('file://', ''))) == 0 else False
   ret = requests.head(url)
-  return ret.status_code == 200
+  return ret.status_code in (200, 301, 302)
 
 
 class Package:
@@ -164,7 +164,7 @@ class InstallProcess:
       url = str(alturl)
       if not checkURL(url):
          raise RuntimeError("URL {0} not found.".format(url))
-    p = subprocess.Popen(['curl', '-s', url], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+    p = subprocess.Popen(['curl', '-L', '-s', url], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
     stdout, stderr = p.communicate()
     if p.returncode == 0:
       return stdout.strip()
@@ -181,7 +181,7 @@ class InstallProcess:
       p = subprocess.Popen(['find', url.replace('file://', ''), '-type', 'f', '-name', 'LCG_*.txt'],
         stdout=subprocess.PIPE, stderr=subprocess.PIPE)
     else:
-      p = subprocess.Popen(['curl', '-s', url], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+      p = subprocess.Popen(['curl', '-L', '-s', url], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
     stdout, stderr = p.communicate()
     if p.returncode == 0:
       if "file://" in url:
@@ -301,7 +301,7 @@ class InstallProcess:
       filename = os.path.join(self.alternativeurl, package.getPackageFilename())
     if self.nightly and not checkURL(filename):
       filename = os.path.join(ReleasesURL, package.getPackageFilename())
-    p = subprocess.Popen('curl -s {0} | tar {1} -C {2} -f -'.format(filename, opts, self.prefix),
+    p = subprocess.Popen('curl -L -s {0} | tar {1} -C {2} -f -'.format(filename, opts, self.prefix),
       stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
     stdout, stderr = p.communicate()
 
@@ -320,7 +320,7 @@ class InstallProcess:
       return True
     else:
       print "  ERROR: cannot properly run the following command:"
-      print '  curl -s', filename, ' | tar', opts, '-C', self.prefix, '-f', '-'
+      print '  curl -L -s', filename, ' | tar', opts, '-C', self.prefix, '-f', '-'
       print stderr
       if len(stdout.strip()) != 0:
         tarprefix = sorted(stdout.strip().split('\n'))[0]
@@ -386,9 +386,9 @@ def main():
   parser.add_argument('-d', '--description', help="Description name", default='', dest='description')
   parser.add_argument('-p', '--prefix', help="Installation prefix", default='.', dest='prefix')
   parser.add_argument('-u', '--release-url', help="URL of release area for tarfiles (use file:// for local ones)",
-    default='http://lcgpackages.web.cern.ch/lcgpackages/tarFiles/releases', dest='releaseurl')
+    default='https://lcgpackages.web.cern.ch/tarFiles/releases', dest='releaseurl')
   parser.add_argument('-a', '--alt-url', help="URL of alternative area for tarfiles",
-    default='http://lcgpackages.web.cern.ch/lcgpackages/tarFiles/latest', dest='alternativeurl')
+    default='https://lcgpackages.web.cern.ch/tarFiles/latest', dest='alternativeurl')
   parser.add_argument('-r', '--release-number', help="Release number", default='auto', dest='releasever')
   parser.add_argument('-f', '--force-install', help="Force untar selected packages", default=[], dest='force',
     nargs='*')
@@ -403,7 +403,7 @@ def main():
   args = parser.parse_args()
 
   args.prefix = os.path.abspath(args.prefix)
-  # def __init__(self, releaseurl = 'http://lcgpackages.cern.ch/tarFiles/releases', description, prefix = '.', lcgversion = 'test'):
+  # def __init__(self, releaseurl = 'https://lcgpackages.cern.ch/tarFiles/releases', description, prefix = '.', lcgversion = 'test'):
 
   # Check the installation type to execute
   installType = None
diff --git a/projects/CMakeLists.txt b/projects/CMakeLists.txt
index 6be02be02f1a7efdb2d1062fc9fa23ae4444dade..13faab2b3d7da94c61c3ff4ebba2a7c953e8910c 100644
--- a/projects/CMakeLists.txt
+++ b/projects/CMakeLists.txt
@@ -587,6 +587,7 @@ LCGPackage_Add(
 )
 
 #--- Acts_core --------------------------------------------------------------------------------------
+# Kept for legacy
 LCGPackage_add(
     acts_core
     URL ${GenURL}/acts-core-${acts_core_native_version}.tar.gz
@@ -603,3 +604,19 @@ LCGPackage_add(
                ${Boost_extra_configuration}
     DEPENDS Boost eigen ROOT DD4hep
 )
+
+#--- Acts -------------------------------------------------------------------------------------------
+LCGPackage_add(
+    acts
+    URL ${GenURL}/acts-${acts_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DACTS_BUILD_PLUGIN_IDENTIFICATION=ON
+               -DACTS_BUILD_PLUGIN_DIGITIZATION=ON
+               -DACTS_BUILD_PLUGIN_DD4HEP=ON
+               -DACTS_BUILD_PLUGIN_TGEO=ON
+               -DACTS_BUILD_UNITTESTS=OFF
+               "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} -I${XercesC_home}/include -I${eigen_home}/include/eigen3"
+               ${Boost_extra_configuration}
+    DEPENDS Boost eigen ROOT DD4hep
+)
diff --git a/projects/patches/DD4hep-01.14.01.patch b/projects/patches/DD4hep-01.14.01.patch
new file mode 100644
index 0000000000000000000000000000000000000000..292dc27c56686781ec896808dd45d9b48c6e5b71
--- /dev/null
+++ b/projects/patches/DD4hep-01.14.01.patch
@@ -0,0 +1,11 @@
+--- DD4hepConfig.cmake.in.orig	2020-10-05 16:44:58.000000000 +0200
++++ cmake/DD4hepConfig.cmake.in	2020-11-23 12:31:21.944618088 +0100
+@@ -73,5 +73,5 @@
+
+ if(DD4HEP_USE_TBB)
+   MESSAGE(STATUS "@CMAKE_PROJECT_NAME@ uses TBB")
+-  find_dependency(TBB REQUIRED)
++  find_dependency(TBB REQUIRED CONFIG)
+ endif()
+
+ if(NOT CMAKE_PROJECT_NAME STREQUAL @CMAKE_PROJECT_NAME@)