diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c700f7d9c9c19e87e26a3451d3fca79a0d99b253..e9c16a1be251d942476c04b279d78e20dfbb4c64 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,7 +1,3 @@
-stages:
-  - build
-  - test
-  - deploy
 
 
 test-python:
@@ -15,7 +11,6 @@ test-python:
   - apt-get update && apt install -y libblas-dev liblapack-dev python3-dev
   - pip install -r requirements.txt
   - python -m unittest
-#  - python setup.py test
   parallel:
     matrix:
       - PYTHON_VERSION: [
@@ -26,47 +21,6 @@ test-python:
       ]
 
 
-test-docker-compose:
-  image: docker:24
-  needs: []
-  # when: delayed
-  # start_in: 3 minutes
-  stage: test
-  retry:
-    max: 2
-    when: runner_system_failure
-  script:
-  - apk update && apk upgrade && apk add jq bash curl
-  - docker compose version
-  - ./test_docker_compose.sh
-  after_script:
-    - docker compose logs back > log/docker-compose.back.log
-    - docker compose logs > log/docker-compose.log
-  artifacts:
-    when: always
-    paths:
-    - log
-    expire_in: 1 week
-
-
-#test-backend-image:
-#  image: docker:24
-#  needs:
-#    - build-backend
-#  stage: test
-#  script:
-#    - mkdir .eggs jass.egg-info && chmod -R 777 .eggs jass.egg-info
-#    - touch data/initTable.hdf5
-#    - >
-#      docker run
-#      -v $(pwd)/data:/data
-#      -v $(pwd)/projects:/projects
-#      -v $(pwd)/.eggs:/code/.eggs
-#      -v $(pwd)/jass.egg-info:/code/jass.egg-info
-#      "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG/backend:$CI_COMMIT_SHA"
-#      python setup.py test
-
-
 pages:
   needs: []
   image: python:3.9
@@ -82,319 +36,3 @@ pages:
     - public
   only:
   - master
-
-
-.build:
-  stage: build
-  image: docker:24
-  retry:
-    max: 2
-    when: runner_system_failure
-  script:
-    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
-    # pull the latest build on master
-    - docker pull "$CI_REGISTRY_IMAGE/master/${PATH_TAG}:latest" || true
-    # pull the latest build on this branch
-    - docker pull "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG/${PATH_TAG}:latest" || true
-    # build the image while passing commit SHA and tagging the image with it
-    - docker build
-      --target ${PATH_TAG}
-      --build-arg CI_COMMIT_REF_SLUG
-      --build-arg CI_COMMIT_SHA
-      --build-arg API_URL
-      --cache-from "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG/${PATH_TAG}:latest"
-      --cache-from "$CI_REGISTRY_IMAGE/master/${PATH_TAG}:latest"
-      --tag "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG/${PATH_TAG}:$CI_COMMIT_SHA"
-      --tag "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG/${PATH_TAG}:latest"
-      .
-    # push image as latest for the current branch
-    - docker push "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG/${PATH_TAG}:latest"
-    # push image tagged with its sha
-    - docker push "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG/${PATH_TAG}:$CI_COMMIT_SHA"
-
-
-build-backend:
-  needs: []
-  extends: .build
-  variables:
-    PATH_TAG: backend
-  after_script:
-    - mkdir .eggs jass.egg-info && chmod -R 777 .eggs jass.egg-info
-    - touch data/initTable.hdf5
-    - >
-      docker run
-      -v $(pwd)/data:/data
-      -v $(pwd)/projects:/projects
-      -v $(pwd)/.eggs:/code/.eggs
-      -v $(pwd)/jass.egg-info:/code/jass.egg-info
-      "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG/${PATH_TAG}:$CI_COMMIT_SHA"
-      python -m unittest
-
-
-build-client-dev:
-  except:
-    - master
-  needs: []
-  extends: .build
-  before_script:
-    - cd client
-  variables:
-    PATH_TAG: client-static-serve
-    API_URL: "https://jass-${CI_COMMIT_REF_SLUG}.dev.pasteur.cloud/api"
-
-
-build-client-prod:
-  only:
-    - master
-  needs: []
-  extends: .build
-  before_script:
-    - cd client
-  variables:
-    PATH_TAG: client-static-serve
-    API_URL: "https://jass.pasteur.fr/api"
-
-
-
-.deploy:
-  stage: deploy
-  needs:
-    - build-backend
-    - build-client-dev
-    - test-python
-#    - test-backend-image
-  image: harbor.pasteur.fr/kube-system/helm-kubectl:3.4.0
-  retry:
-    max: 2
-    when: runner_system_failure
-  script:
-    # create if missing the shared pvc to save data
-    - kubectl apply -n $NAMESPACE -f chart/pvc-shared-data.yaml
-    - helm dependency update chart
-    # shows some error on first deployment
-    - kubectl get secret --namespace "${NAMESPACE}" ${CI_COMMIT_REF_SLUG}-rabbitmq || NO_SECRET=$?
-    - >
-      if [ $NO_SECRET ]; then
-        RABBITMQ_PASSWORD=''
-        RABBITMQ_ERLANG_COOKIE=''
-      else
-        RABBITMQ_PASSWORD=$(kubectl get secret --namespace "${NAMESPACE}" ${CI_COMMIT_REF_SLUG}-rabbitmq -o jsonpath="{.data.rabbitmq-password}" | base64 -d)
-        RABBITMQ_ERLANG_COOKIE=$(kubectl get secret --namespace "${NAMESPACE}" ${CI_COMMIT_REF_SLUG}-rabbitmq -o jsonpath="{.data.rabbitmq-erlang-cookie}" | base64 -d)
-      fi
-    - >
-      helm upgrade --install --namespace=${NAMESPACE}
-      --set CI_REGISTRY_IMAGE=${CI_REGISTRY_IMAGE}
-      --set image.tag=${CI_COMMIT_SHA}
-      --set ingress.host.name=${PUBLIC_URL}
-      --set registry.username=${DEPLOY_USER}
-      --set registry.password=${DEPLOY_TOKEN}
-      --set registry.host=${CI_REGISTRY}
-      --set imagePullSecrets[0].name="registry-pull-secret-${CI_COMMIT_REF_SLUG}"
-      --set rabbitmq.auth.password=$RABBITMQ_PASSWORD
-      --set rabbitmq.auth.erlangCookie=$RABBITMQ_ERLANG_COOKIE
-      --values ./chart/values.${NAMESPACE}.yaml
-      ${CI_COMMIT_REF_SLUG} ./chart/
-
-
-deploy-dev:
-  except:
-    - master
-  stage: deploy
-  extends: .deploy
-  variables:
-    NAMESPACE: "jass-dev"
-    PUBLIC_URL: "jass-${CI_COMMIT_REF_SLUG}.dev.pasteur.cloud"
-  environment:
-    name: "k8sdev-01/jass-dev/${CI_COMMIT_REF_SLUG}"
-    url: "https://jass-${CI_COMMIT_REF_SLUG}.dev.pasteur.cloud"
-    on_stop: delete-dev-deployment
-
-
-deploy-prod:
-  only:
-    - master
-  stage: deploy
-  needs:
-    - build-backend
-    - build-client-prod
-    - test-python
-  extends: .deploy
-  variables:
-    NAMESPACE: "jass-prod"
-    PUBLIC_URL: "jass.pasteur.fr"
-  environment:
-    name: "k8sprod-02/jass-prod/${CI_COMMIT_REF_SLUG}"
-    url: "https://jass.pasteur.fr"
-
-
-delete-dev-deployment:
-  stage: deploy
-  needs: []
-  when: manual
-  image: harbor.pasteur.fr/kube-system/helm-kubectl:3.4.0
-  variables:
-    GIT_STRATEGY: none # important to not checkout source when branch is deleted
-    NAMESPACE: "jass-dev"
-  environment:
-    name: "k8sdev-01/jass-dev/${CI_COMMIT_REF_SLUG}"
-    action: stop
-  retry:
-    max: 2
-    when: runner_system_failure
-  script:
-    - echo "Removing $CI_COMMIT_REF_SLUG"
-    - helm delete -n ${NAMESPACE} ${CI_COMMIT_REF_SLUG}
-    - kubectl delete pvc -lapp.kubernetes.io/name=rabbitmq,app.kubernetes.io/instance=${CI_COMMIT_REF_SLUG}
-
-
-.upload-from-fex-to-somewhere:
-  stage: deploy
-  needs: []
-  when: manual
-  image: harbor.pasteur.fr/kube-system/helm-kubectl:3.14.0
-  variables:
-    FEX_URL: ""
-  script:
-    - mkdir -p removed added
-    - >
-      if [[ "$FEX_URL" =~ ^https://dl\.pasteur\.fr/.* ]]; then 
-        echo "Valid URL: $FEX_URL"; 
-      else
-        echo "FEX_URL invalide (FEX_URL=$FEX_URL), please provide a fex url starting with https://dl.pasteur.fr/..."; 
-        exit 1; 
-      fi
-    - wget $FEX_URL
-    - ls -lah .
-    - export HDF5_FILENAME=$(ls -1 *hdf5 | cut -d'/' -f2)
-    - >
-      if [ ! $HDF5_FILENAME ]; then
-        echo "No hdf5 file fetched, exiting"; 
-        exit 2; 
-      else
-        echo "Valid File: $HDF5_FILENAME"; 
-      fi
-    - kubectl apply -f chart/sidekick.yaml -f chart/pvc-shared-data.yaml
-    - kubectl wait -f chart/sidekick.yaml  --for=condition=Ready --timeout=3600s
-    - kubectl cp sidekick:/data/$HDF5_FILENAME ./removed/$HDF5_FILENAME || echo "no older version"
-    - kubectl cp ./$HDF5_FILENAME sidekick:/data/$HDF5_FILENAME
-    - mv ./$HDF5_FILENAME ./added/
-    - kubectl exec sidekick -- ls -lah /data
-    - kubectl delete -f chart/sidekick.yaml --force
-  artifacts:
-    when: always
-    paths:
-    - added
-    - removed
-    expire_in: 1 month
-
-
-upload-from-fex-to-dev:
-  extends: .upload-from-fex-to-somewhere
-  environment:
-    name: "k8sdev-01/jass-dev/${CI_COMMIT_REF_SLUG}"
-
-
-upload-from-fex-to-prod:
-  extends: .upload-from-fex-to-somewhere
-  only:
-    - master
-  environment:
-    name: "k8sprod-02/jass-prod/${CI_COMMIT_REF_SLUG}"
-
-
-.delete-data-from-somewhere:
-  stage: deploy
-  needs: []
-  when: manual
-  image: harbor.pasteur.fr/kube-system/helm-kubectl:3.14.0
-  variables:
-    HDF5_FILENAME: ""
-  script:
-    - kubectl apply -f chart/sidekick.yaml -f chart/pvc-shared-data.yaml
-    - kubectl wait -f chart/sidekick.yaml  --for=condition=Ready --timeout=3600s
-    - kubectl exec sidekick -- ls -lah /data
-    - >
-      if [ ! $HDF5_FILENAME ]; then
-        echo "No hdf5 file provided, exiting"; 
-        exit 0; 
-      else
-        echo "File to remove: $HDF5_FILENAME"; 
-      fi
-    - mkdir removed
-    - >
-      if [[ "$HDF5_FILENAME" =~ ^[^/]+\.hdf5$ ]]; then 
-        echo "Valid filename: $HDF5_FILENAME"; 
-      else
-        echo "HDF5_FILENAME invalide (HDF5_FILENAME=$HDF5_FILENAME), please provide an hdf5 file in /data";  
-      fi
-    - kubectl cp sidekick:/data/$HDF5_FILENAME ./removed/$HDF5_FILENAME
-    - kubectl exec sidekick -- rm -f /data/$HDF5_FILENAME
-    - kubectl delete -f chart/sidekick.yaml --force
-  artifacts:
-    when: always
-    paths:
-    - removed
-    expire_in: 1 month
-
-
-delete-data-from-dev:
-  extends: .delete-data-from-somewhere
-  environment:
-    name: "k8sdev-01/jass-dev/${CI_COMMIT_REF_SLUG}"
-
-
-delete-data-from-prod:
-  extends: .delete-data-from-somewhere
-  only:
-    - master
-  environment:
-    name: "k8sprod-02/jass-prod/${CI_COMMIT_REF_SLUG}"
-
-
-.log-fetcher:
-  stage: deploy
-  needs: []
-  when: manual
-  image: harbor.pasteur.fr/kube-system/helm-kubectl:3.12.0
-  variables:
-    GIT_STRATEGY: none # don't need to checkout sources
-    LAST_ROWS_COUNT: "400" # you can override it when triggering the job
-    CHART_LOCATION: "chart"
-  script:
-    - kubectl -n ${NAMESPACE} get quota
-    - mkdir logs
-    - |
-      for POD in $(kubectl -n ${NAMESPACE} get po -l="app.kubernetes.io/instance=${CI_COMMIT_REF_SLUG}" --output=jsonpath='{.items[*].metadata.name}'); do
-        echo "************************************************************"
-        echo "************************************************************"
-        echo "* ${POD}";
-        echo "************************************************************"
-        kubectl -n ${NAMESPACE} logs $POD --tail ${LAST_ROWS_COUNT} > logs/${POD}.log
-        cat logs/${POD}.log
-      done
-    - echo "Check Job artifacts to download or browse log files. See "Job artifacts">"Browse" on right panel"
-  artifacts:
-    when: always
-    paths:
-    - logs
-    expire_in: 1 month
-
-
-log-fetcher-in-dev:
-  except:
-    - master
-  extends: .log-fetcher
-  variables:
-    NAMESPACE: "jass-dev"
-  environment:
-    name: "k8sdev-01/${NAMESPACE}/${CI_COMMIT_REF_SLUG}"
-
-
-log-fetcher-in-prod:
-  only:
-    - master
-  extends: .log-fetcher
-  variables:
-    NAMESPACE: "jass-prod"
-  environment:
-    name: "k8sprod-02/${NAMESPACE}/${CI_COMMIT_REF_SLUG}"