diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 81a0e3f6dc6a6daa31413aa95972fe9d9d38452a..91b188c38c1a9f21f7a408bfe52f278fa26a164b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -115,6 +115,17 @@ variables:
   rules:
     - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PROJECT_NAMESPACE =~ /platform\/esd/ && $CI_PIPELINE_SOURCE == "push"
 
+# deploy a pre-production environment first, to avoid directly modifying the experimental or official release environments
+.deploy-ppd-release:
+  variables:
+    SPACK_ENV: ppd
+    RELEASE_NAME: EBRAINS-ppd
+  allow_failure: false
+  rules:
+    - if: $CI_PIPELINE_SOURCE == "schedule"  && $DEPLOYMENT == "prod"
+    - if: $CI_COMMIT_BRANCH =~ /^ebrains/
+      when: manual
+
 # deploy the experimental release of tools once a week from latest working version of int release 
 .deploy-exp-release:
   variables:
@@ -158,26 +169,42 @@ deploy-exp-release-dev-cineca:
     - .deploy-exp-dev-release
     - .deploy-dev-server-cineca
 
+# deploy ppd release to prod environment at JSC
+deploy-ppd-release-prod-jsc:
+  extends:
+    - .deploy-ppd-release
+    - .deploy-prod-server-jsc
+
+# deploy ppd release to prod environment at CINECA
+deploy-ppd-release-prod-cineca:
+  extends:
+    - .deploy-ppd-release
+    - .deploy-prod-server-cineca
+
 # deploy exp release to prod environment at JSC
 deploy-exp-release-prod-jsc:
+  needs: [deploy-ppd-release-prod-jsc]
   extends:
     - .deploy-exp-prod-release
     - .deploy-prod-server-jsc
 
 # deploy exp release to prod environment at CINECA
 deploy-exp-release-prod-cineca:
+  needs: [deploy-ppd-release-prod-cineca]
   extends:
     - .deploy-exp-prod-release
     - .deploy-prod-server-cineca
 
 # deploy prod release to prod environment at JSC
 deploy-prod-release-prod-jsc:
+  needs: [deploy-ppd-release-prod-jsc]
   extends:
     - .deploy-prod-release
     - .deploy-prod-server-jsc
 
 # deploy prod release to prod environment at CINECA
 deploy-prod-release-prod-cineca:
+  needs: [deploy-ppd-release-prod-cineca]
   extends:
     - .deploy-prod-release
     - .deploy-prod-server-cineca
diff --git a/install_spack_env.sh b/install_spack_env.sh
index a0ed1f67a75ffc4d7f740871259abbf95f5ae258..2df8081a01d80b595d76189e3660c7a784a59815 100644
--- a/install_spack_env.sh
+++ b/install_spack_env.sh
@@ -130,9 +130,9 @@ spack-python -c "exit(not len(spack.environment.active_environment().uninstalled
     else
         echo "Updating of the source cache disabled."
     fi
-    if [ "$ret" -ne 0 ]; then
-        (exit $ret)
-    fi
+    # if [ "$ret" -ne 0 ]; then
+    #     (exit $ret)
+    # fi
 )
 
 if [ -n "${OCI_CACHE_PREFIX}" ]; then
diff --git a/packages/py-biobb-gromacs/package.py b/packages/py-biobb-gromacs/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..fea2539007217b8f2fc1167cc6175b6b6a88a49f
--- /dev/null
+++ b/packages/py-biobb-gromacs/package.py
@@ -0,0 +1,26 @@
+# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+from spack.package import *
+
+
+class PyBiobbGromacs(PythonPackage):
+    """Biobb_gromacs is the Biobb module collection to perform
+    molecular dynamics simulations using the GROMACS MD suite"""
+
+    pypi = "biobb_gromacs/biobb_gromacs-4.1.1.tar.gz"
+
+    maintainers("d-beltran")
+
+    # Versions
+    version("4.1.1", sha256="270cce747fc214471527438c8319bda0613be5b76da9f4684e6f138d1927d2f7")
+
+    # Dependencies
+    depends_on("py-setuptools", type="build")
+    depends_on("python@3.8:", type=("build", "run"))
+    depends_on("py-biobb-common@4.1.0", type=("build", "run"))
+    # begin EBRAINS(modified): biobb-gromacs checks for a `gmx` binary, with no suffix
+    depends_on("gromacs+nosuffix", type=("run"))
+    # end EBRAINS
diff --git a/packages/py-quantities/package.py b/packages/py-quantities/package.py
index e5d14e955da39044aa594a24aad4fe0c37057124..623671aa920b71a46b6ed6b26eff5c5f8f6ca85f 100644
--- a/packages/py-quantities/package.py
+++ b/packages/py-quantities/package.py
@@ -10,9 +10,10 @@ class PyQuantities(PythonPackage):
     """Support for physical quantities with units, based on numpy"""
 
     homepage = "https://python-quantities.readthedocs.org"
-    pypi = "quantities/quantities-0.16.0.tar.gz"
+    pypi = "quantities/quantities-0.16.2.tar.gz"
     maintainers = ['apdavison']
-    
+
+    version('0.16.2', sha256='1f7c24f10d9ff57ddf751a358ea2fdfa9914516722f06a788ef4a2924c77d21c')
     version('0.16.0', sha256='211cce2d268da7e202abab5c2533ce3200ff619dd8ac2a3cd98f861b8a57c6eb')
     version('0.15.0', sha256='9ea31e2a0d7517cf24d546b14146def9292639993a616cca61b875ef796b4b2b')
     version('0.14.1', sha256='efeafffc0c0364f891a9327239cd12496bccb55cd037a6d1bf44de706f722877')
diff --git a/packages/py-snudda/package.py b/packages/py-snudda/package.py
index 092e410bf670fee524ab7531ac6bbe50fa38d79d..0bf79d53cc64c676e4554072354642a405de2b7e 100644
--- a/packages/py-snudda/package.py
+++ b/packages/py-snudda/package.py
@@ -14,6 +14,11 @@ class PySnudda(PythonPackage):
 
     maintainers = ["hjorth"]
 
+    version("2.1.17", "6a89065cf6722c2da512a0d5fa60a3c8")
+    version("2.1.14.1", "913b613055030183a8f30a67a0410def")
+    version("2.1.14", "a0a88d4822a500b8390db9a47c628f50")
+    version("2.1.13", "e5f7bc57a848e489352f8fb1f16b164a")
+    version("2.1.12", "8f8cbbcf3d6f12c4092160a6e9312ae1")
     version("2.1.11", "5cb71667a6f8c708279fc5dc94883ba3")
     version("2.1.10", "a1f5bf39ee0418e7ce8a0783042c59c8")
     version("2.1.2", "5d61a548995f88f95f680bf124534287")
@@ -39,6 +44,7 @@ class PySnudda(PythonPackage):
     depends_on("py-cython",             type=("build","run"))
     depends_on("py-numba@0.60.0:",      type=("build","run"))
     depends_on("open3d+python@0.18:",   type=("build","run"), when="@2:")
+    depends_on("py-quantities@0.16.2:", type=("build","run"), when="@2.1.14:")
 
     # snudda tarballs in pypi do not include the tests/ dir: just use default spack tests for now
     # @run_after('install')
diff --git a/spack.yaml b/spack.yaml
index 819bca797d626c5c615dee27c5b51fd12c0b0cf1..aa9f8e43e6f447a708b4782f23293e2d4b77d010 100644
--- a/spack.yaml
+++ b/spack.yaml
@@ -49,9 +49,9 @@ spack:
     - py-pynn@0.12.3 +mpi
     - py-pyunicore@1.1.1
     - py-quantities-scidash@0.12.4.3
-    - py-quantities@0.16.0
+    - py-quantities@0.16.2
     - py-siibra@1.0a9
-    - py-snudda@2.1.11
+    - py-snudda@2.1.17
     - py-spynnaker@7.3.0
     - py-tvb-framework@2.9
     - py-tvb-contrib@2.9.1