diff --git a/macro/beamtime/mcbm2024/README_GeoPar.md b/macro/beamtime/mcbm2024/README_GeoPar.md
new file mode 100644
index 0000000000000000000000000000000000000000..73a78dec500b05ee40fbffd26368ceec87381557
--- /dev/null
+++ b/macro/beamtime/mcbm2024/README_GeoPar.md
@@ -0,0 +1,28 @@
+
+# Usage
+
+**All these scripts need you to have sourced the login script first!!!! (for VMCWORKDIR)**
+
+1. Initialization and switch between the `Official detached commit` and the `mCBM repository HEAD` mode: just execute
+   the following script
+   ```
+   ./macro/beamtime/mcbm2024/switch_geo_par.sh
+   ```
+1.
+
+# CAVEATS
+
+1. The mCBM repository branch will not be rebased on the official version as that would break the local copies of all
+   users
+   1. => If somebody in mCBM need some files/changes from the official version, they will have to `cherry-pick` them or
+      copy them by hand into a new commit on top of the current state of the mCBM branch
+   1. After the end of the period where this branch is used, **somebody from the mCBM team** (not one of the central
+      developers) will have invest the time to cleanup a copy of the branch and prepare clean merge requests to the
+      official repositories
+1. These scripts allow only to work on the `mcbm24_master branch` of the "mcbm versions" and go back to the "offical
+   versions" \
+   => Switching to another branch or a different detached commit than the "official version" will confuse them \
+   => This in turn has high chances to lead to broken copies of the `geometry` and/or `parameters` folders
+1. Space needed:
+   - around `100 MB` for geometries
+   - around `1.6 GB` for parameters
diff --git a/macro/beamtime/mcbm2024/switch_geo_par.sh b/macro/beamtime/mcbm2024/switch_geo_par.sh
new file mode 100755
index 0000000000000000000000000000000000000000..023f6b1afeceb695607346958a834e975c6b9e4b
--- /dev/null
+++ b/macro/beamtime/mcbm2024/switch_geo_par.sh
@@ -0,0 +1,122 @@
+#!/bin/bash
+# Copyright (C) 2024 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
+# SPDX-License-Identifier: GPL-3.0-only
+# First commited by Pierre-Alain Loizeau
+
+check_fix_remote()
+{
+  # Copied/adapted from scripts/connect_upstream_repo.sh
+  if [[ $# -ne 1 ]]; then
+    echo "check_fix_remote needs at least one parameter: the url for the remote"
+    return 1
+  fi
+  mcbm_repo=$1
+
+  echo "Checking/fixing the mcbm remote in $PWD"
+  bla=$(git remote -v | grep mcbm)
+  if [ $? -eq 0 ]; then
+    bla=$(git remote -v | grep mcbm | grep ${mcbm_repo})
+    if [ $? -eq 0 ]; then
+      echo "Remote link mcbm already exist and points to the correct repo"
+      # don't do anything
+    else
+      echo "Remote link mcbm already exist and points to the wrong repo"
+      git remote set-url mcbm ${mcbm_repo}
+    fi
+  else
+    echo "Remote repo not existing yet => connecting it now"
+    git remote add mcbm ${mcbm_repo}
+  fi
+
+  return 0
+}
+
+START_DIR=$PWD
+
+# I: pre-checks, this part should be read-only actions in terms of the current files (changes only in .git folders)!
+# I-A: Geometry folder
+# I-A-1) Go to folder
+cd ${VMCWORKDIR}/geometry
+# I-A-2) Check if the mCBM remote is present and proper, add/fix it if not
+if ! check_fix_remote https://git.cbm.gsi.de/mcbm/cbmroot_geometry.git; then
+  echo "Failed to check/fix the remote of the geometry folder, stopping there"
+  exit 1
+fi
+# I-A-3) Check if some local changes are present
+if [[ 0 -ne $(git status --porcelain | wc -l) ]]; then
+  echo "Local changes found in the geometry folder."
+  echo "=> You need to remove them (or commit them if in mCBM mode) before switching mode"
+  git status --short
+  exit 2
+fi
+# I-B: Parameters folder
+# I-B-1) Go to folder
+cd ${VMCWORKDIR}/parameters
+# I-B-2) Check if the mCBM remote is present and proper, add/fix it if not
+if ! check_fix_remote https://git.cbm.gsi.de/mcbm/cbmroot_parameter.git; then
+  echo "Failed to check/fix the remote of the parameters folder, stopping there"
+  exit 1
+fi
+# I-B-3) Check if some local changes are present
+if [[ 0 -ne $(git status --porcelain | wc -l) ]]; then
+  echo "Local changes found in the parameters folder."
+  echo "=> You need to remove them (or commit them if in mCBM mode) before switching mode"
+  git status --short
+  exit 2
+fi
+
+# II: switch of branch/commit. Done only after all checks to avoid Geometry and Parameter folder going out of sync
+#     (one in "Official detached commit" and the other on "mCBM repo HEAD" mode)
+# II-A: Geometry folder
+# II-A-1) Go to folder
+cd ${VMCWORKDIR}/geometry
+# II-A-2) Check if current version is the Official detached commit or the mCBM repo HEAD
+if [[ 1 -eq $(git status | grep -c "HEAD detached at") ]]; then
+  # II-A-2a) Switch from "Official detached commit" to "mCBM repo HEAD"
+  # =====> Fetch latest version
+  git fetch mcbm
+  # =====> Simple switch to latest version
+  if git switch mcbm24_master 2>/tmp/mcbm_switch_err; then
+    cat /tmp/mcbm_switch_err
+  else
+    git switch -t mcbm/mcbm24_master
+  fi
+  rm /tmp/mcbm_switch_err
+  # <= FIXME: Error, master already existing, prob. need check on existing + checkout mcbm_master
+else
+  # IIA-2b) Revert from "mCBM repo HEAD" to "Official detached commit"
+  # =====> Extract the original commit hash from the InstallGeometry cmake file
+  hash=$(grep "set(GEOMETRY_VERSION" $VMCWORKDIR/external/InstallGeometry.cmake | sed 's/^[^ ]* //')
+  hash=${hash%)*}
+  # =====> Force the switch
+  echo ${hash}
+  git checkout ${hash}
+fi
+# II-B: Parameters folder
+# II-B-1) Go to folder
+cd ${VMCWORKDIR}/parameters
+# II-B-2) Check if current version is the Official detached commit or the mCBM repo HEAD
+if [[ 1 -eq $(git status | grep -c "HEAD detached at") ]]; then
+  # II-B-2a) Switch from "Official detached commit" to "mCBM repo HEAD"
+  # =====> Fetch latest version
+  git fetch mcbm
+  # =====> Simple switch to latest version, create and track if not existing
+  if git switch mcbm24_master 2>/tmp/mcbm_switch_err; then
+    cat /tmp/mcbm_switch_err
+  else
+    git switch -t mcbm/mcbm24_master
+  fi
+  rm /tmp/mcbm_switch_err
+else
+  # II-B-2b) Revert from "mCBM repo HEAD" to "Official detached commit"
+  # =====> Extract the original commit hash from the InstallParameters cmake file
+  hash=$(grep "set(PARAMETER_VERSION" $VMCWORKDIR/external/InstallParameter.cmake | sed 's/^[^ ]* //')
+  hash=${hash%)*}
+  # =====> Force the switch
+  echo ${hash}
+  git checkout ${hash}
+fi
+
+cd $START_DIR
+
+exit 0