diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index af7db7e4f982ad5b421ec421c68d27efa48a154b..3b00bb0814e9e1333fa3a9be6872b8c1c094546e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,50 +1,47 @@
 ---
-stages:
-  - test
-  - build
-  - deploy-beta
-  - deploy-staging
-  - deploy-production
+# You can override the included template(s) by including variable overrides
+# See https://docs.gitlab.com/ee/user/application_security/sast/#customizing-the-sast-settings
+# Note that environment variables can be set in several places
+# See https://docs.gitlab.com/ee/ci/variables/#priority-of-environment-variables
 
+stages:
+- test
+- build
+- deploy-beta
+- deploy-staging
+- deploy-production
 
 image: registry.forgemia.inra.fr/urgi-is/docker-rare/docker-browsers:latest
 
-
 # Disable the Gradle daemon for Continuous Integration servers as correctness
 # is usually a priority over speed in CI environments. Using a fresh
 # runtime for each build is more reliable since the runtime is completely
 # isolated from any previous builds.
 variables:
   GRADLE_OPTS: "-Dorg.gradle.daemon=false"
-  GRADLE_USER_HOME: $CI_PROJECT_DIR/.gradle
+  GRADLE_USER_HOME: "$CI_PROJECT_DIR/.gradle"
   APP_NAME: faidare
-  JAR_PATH: "backend/build/libs/${APP_NAME}.jar"
+  JAR_PATH: backend/build/libs/${APP_NAME}.jar
   GIT_DEPTH: 0
 
-
 # Gradle cache for all jobs
 cache:
   key: "$CI_COMMIT_REF_NAME"
   paths:
-    - ".gradle"
-    - "frontend/.gradle/"
-    - "frontend/node_modules/"
-
-
-# TESTS
-
+  - ".gradle"
+  - frontend/.gradle/
+  - frontend/node_modules/
 
 lint:
   stage: test
   tags:
-   - openstack
+  - openstack
   script: "./gradlew lint"
 
-
 test-and-sonarqube:
   stage: test
   tags:
-    - openstack
+  - openstack
   # the backend tests need an elasticsearch instance
   services:
     # even if that would be ideal
@@ -52,171 +49,172 @@ test-and-sonarqube:
     # because we need to pass some variables, but they are passed to _all_ containers
     # so they fail the start of other docker images like urgi/docker-browsers
     # the only solution is to override the entrypoint of the service and pass the arguments manually
-    - name: docker.elastic.co/elasticsearch/elasticsearch:6.5.4
-      alias: elasticsearch
-      # discovery.type=single-node
-      # single-node is necessary to start in development mode
-      # so there will be no bootstrap checks that would fail on CI
-      # especially the error regarding
-      # `max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]`
-      command: ["bin/elasticsearch", "-Ediscovery.type=single-node"]
+  - name: docker.elastic.co/elasticsearch/elasticsearch:6.5.4
+    alias: elasticsearch
+    # discovery.type=single-node
+    # single-node is necessary to start in development mode
+    # so there will be no bootstrap checks that would fail on CI
+    # especially the error regarding
+    # `max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]`
+    command:
+    - bin/elasticsearch
+    - "-Ediscovery.type=single-node"
   variables:
     GRADLE_OPTS: "-Dorg.gradle.daemon=true"
     SONAR_BRANCH_OPTS: "-Dsonar.pullrequest.key=$CI_MERGE_REQUEST_ID -Dsonar.pullrequest.branch=$CI_COMMIT_REF_NAME"
   script:
-    - ./gradlew :frontend:test --parallel
-    - ./gradlew :backend:test --parallel
-    - find /tmp/node/*/bin -name node -exec ln -s {} /tmp/node/node \;
-    - export PATH="/tmp/node/:$PATH"
-    - ./gradlew -s sonarqube -x test $SONAR_BRANCH_OPTS
+  - "./gradlew :frontend:test --parallel"
+  - "./gradlew :backend:test --parallel"
+  - find /tmp/node/*/bin -name node -exec ln -s {} /tmp/node/node \;
+  - export PATH="/tmp/node/:$PATH"
+  - "./gradlew -s sonarqube -x test $SONAR_BRANCH_OPTS"
   artifacts:
     reports:
       junit:
-        - ./backend/build/test-results/test/TEST-*.xml
-        - ./frontend/karma-junit-tests-report/TEST*.xml
+      - "./backend/build/test-results/test/TEST-*.xml"
+      - "./frontend/karma-junit-tests-report/TEST*.xml"
   only:
     refs:
-      - merge_requests
-
+    - merge_requests
 
 test-and-sonarqube-master:
   extends: test-and-sonarqube
   variables:
-    SONAR_BRANCH_OPTS: ""
+    SONAR_BRANCH_OPTS: ''
   only:
     refs:
-      - master
-
+    - master
 
 # BUILD
 
-
 build:
   tags:
-   - openstack
+  - openstack
   stage: build
   script:
-    - ./gradlew assemble
+  - "./gradlew assemble"
   artifacts:
     paths:
-      - "$JAR_PATH"
+    - "$JAR_PATH"
     expire_in: 1 week
 
-
 # DEPLOY
 
-
 .deploy-to-vm-proxmox: &deploy_to_vm_proxmox
   # Hidden job which serves as template for executed jobs below.
   # See https://docs.gitlab.com/ee/ci/yaml/#anchors
   retry: 2
   script:
     ## SSH initialization
-    - eval $(ssh-agent -s)
-    - ssh-add <(echo "${SSH_PRIVATE_KEY}")
-    - ssh -o StrictHostKeyChecking=no ${SERVER_USER}@${SERVER_IP} 'echo "Successfully connected on $(hostname)"'
+  - eval $(ssh-agent -s)
+  - ssh-add <(echo "${SSH_PRIVATE_KEY}")
+  - ssh -o StrictHostKeyChecking=no ${SERVER_USER}@${SERVER_IP} 'echo "Successfully connected on $(hostname)"'
     # Copy jar
-    - scp ./backend/build/libs/${APP_NAME}.jar ${SERVER_USER}@${SERVER_IP}:/tmp/${APP_NAME}-${ENV}.jar
-    - ssh ${SERVER_USER}@${SERVER_IP} "sudo mv /tmp/${APP_NAME}-${ENV}.jar /opt/bootapp/${APP_NAME}-${ENV}.jar ; sudo chown -R bootapp:bootapp /opt/bootapp/"
-    # Restarting service with the updated jar and the according Spring profiles enabled
-    - ssh ${SERVER_USER}@${SERVER_IP} "sudo systemctl restart bootapp@${APP_NAME}-${ENV}"
-    - eval $(ssh-agent -k)
-    - echo "Deploy done. Application should be available at http://${SERVER_IP}:${APP_PORT}/${CONTEXT_PATH}"
+  - scp ./backend/build/libs/${APP_NAME}.jar ${SERVER_USER}@${SERVER_IP}:/tmp/${APP_NAME}-${ENV}.jar
+  - ssh ${SERVER_USER}@${SERVER_IP} "sudo mv /tmp/${APP_NAME}-${ENV}.jar /opt/bootapp/${APP_NAME}-${ENV}.jar ; sudo chown -R bootapp:bootapp /opt/bootapp/"
+  # Restarting service with the updated jar and the according Spring profiles enabled
+  - ssh ${SERVER_USER}@${SERVER_IP} "sudo systemctl restart bootapp@${APP_NAME}-${ENV}"
+  - eval $(ssh-agent -k)
+  - echo "Deploy done. Application should be available at http://${SERVER_IP}:${APP_PORT}/${CONTEXT_PATH}"
   only:
     changes:
-      - .gitlab-ci.yml
-      - backend/src/**/*
-      - frontend/**/*
-
+    - ".gitlab-ci.yml"
+    - backend/src/**/*
+    - frontend/**/*
 
 .deploy-to-vm-openstack: &deploy_to_vm_openstack
   # Hidden job which serves as template for executed jobs below.
   # See https://docs.gitlab.com/ee/ci/yaml/#anchors
   retry: 2
   tags:
-   - openstack
+  - openstack
   script:
     ## SSH initialization
-    - eval $(ssh-agent -s)
-    - ssh-add <(echo "${SSH_PRIVATE_KEY}")
-    - ssh -o StrictHostKeyChecking=no ${SERVER_USER_OPENSTACK}@${SERVER_IP_OPENSTACK} 'echo "Successfully connected on $(hostname)"'
-    # Copy jar
-    - scp ./backend/build/libs/${APP_NAME}.jar ${SERVER_USER_OPENSTACK}@${SERVER_IP_OPENSTACK}:/tmp/${APP_NAME}-${ENV}.jar
-    - ssh ${SERVER_USER_OPENSTACK}@${SERVER_IP_OPENSTACK} "sudo mv /tmp/${APP_NAME}-${ENV}.jar /opt/bootapp/${APP_NAME}-${ENV}.jar ; sudo chown -R bootapp:bootapp /opt/bootapp/"
-    # Restarting service with the updated jar and the according Spring profiles enabled
-    - ssh ${SERVER_USER_OPENSTACK}@${SERVER_IP_OPENSTACK} "sudo systemctl restart bootapp@${APP_NAME}-${ENV}"
-    - eval $(ssh-agent -k)
-    - echo "Deploy done. Application should be available at http://${SERVER_IP_OPENSTACK}:${APP_PORT}/${CONTEXT_PATH}"
+  - eval $(ssh-agent -s)
+  - ssh-add <(echo "${SSH_PRIVATE_KEY}")
+  - ssh -o StrictHostKeyChecking=no ${SERVER_USER_OPENSTACK}@${SERVER_IP_OPENSTACK} 'echo "Successfully connected on $(hostname)"'
+  # Copy jar
+  - scp ./backend/build/libs/${APP_NAME}.jar ${SERVER_USER_OPENSTACK}@${SERVER_IP_OPENSTACK}:/tmp/${APP_NAME}-${ENV}.jar
+  - ssh ${SERVER_USER_OPENSTACK}@${SERVER_IP_OPENSTACK} "sudo mv /tmp/${APP_NAME}-${ENV}.jar /opt/bootapp/${APP_NAME}-${ENV}.jar ; sudo chown -R bootapp:bootapp /opt/bootapp/"
+  # Restarting service with the updated jar and the according Spring profiles enabled
+  - ssh ${SERVER_USER_OPENSTACK}@${SERVER_IP_OPENSTACK} "sudo systemctl restart bootapp@${APP_NAME}-${ENV}"
+  - eval $(ssh-agent -k)
+  - echo "Deploy done. Application should be available at http://${SERVER_IP_OPENSTACK}:${APP_PORT}/${CONTEXT_PATH}"
   only:
     changes:
-      - .gitlab-ci.yml
-      - backend/src/**/*
-      - frontend/**/*
+    - ".gitlab-ci.yml"
+    - backend/src/**/*
+    - frontend/**/*
   when: manual
   allow_failure: false
 
 deploy-to-beta:
   stage: deploy-beta
-  extends: .deploy-to-vm-openstack
+  extends: ".deploy-to-vm-openstack"
   variables:
-    APP_PORT: ${BETA_FAIDARE_PORT}
+    APP_PORT: "${BETA_FAIDARE_PORT}"
     ENV: beta
     CONTEXT_PATH: faidare-beta
   except:
     refs:
-      - master
+    - master
   only:
     refs:
-      - branches
+    - branches
   when: always
 
 deploy-to-staging:
   stage: deploy-staging
-  extends: .deploy-to-vm-openstack
+  extends: ".deploy-to-vm-openstack"
   variables:
-    APP_PORT: ${STAGING_FAIDARE_PORT}
+    APP_PORT: "${STAGING_FAIDARE_PORT}"
     ENV: staging
     CONTEXT_PATH: faidare-staging
   only:
     refs:
-      - branches
+    - branches
   except:
     refs:
-      - master
+    - master
   when: manual
 
 deploy-to-int:
   stage: deploy-production
-  extends: .deploy-to-vm-proxmox
+  extends: ".deploy-to-vm-proxmox"
   variables:
-    APP_PORT: ${INT_FAIDARE_PORT}
+    APP_PORT: "${INT_FAIDARE_PORT}"
     ENV: int
     CONTEXT_PATH: faidare-int
   only:
     refs:
-      - master
+    - master
   when: manual
 
 deploy-to-prod-public:
   stage: deploy-production
-  extends: .deploy-to-vm-proxmox
+  extends: ".deploy-to-vm-proxmox"
   variables:
-    APP_PORT: ${PROD_PUBLIC_FAIDARE_PORT}
+    APP_PORT: "${PROD_PUBLIC_FAIDARE_PORT}"
     ENV: prod-public
     CONTEXT_PATH: faidare
   only:
     refs:
-      - master
+    - master
   when: manual
 
 deploy-to-prod-private:
   stage: deploy-production
-  extends: .deploy-to-vm-proxmox
+  extends: ".deploy-to-vm-proxmox"
   variables:
-    APP_PORT: ${PROD_PRIVATE_FAIDARE_PORT}
+    APP_PORT: "${PROD_PRIVATE_FAIDARE_PORT}"
     ENV: prod-private
     CONTEXT_PATH: faidare-private
   only:
     refs:
-      - master
+    - master
   when: manual
+
+sast:
+  stage: test
+include:
+- template: Security/SAST.gitlab-ci.yml
diff --git a/.secrets.baseline b/.secrets.baseline
index d3ef77762f5b265ef889ac52eb82c0c51f4bb108..432815a5902c26778e2cb810373afa7911cc5e74 100644
--- a/.secrets.baseline
+++ b/.secrets.baseline
@@ -3,7 +3,7 @@
     "files": "frontend/package-lock.json|^.secrets.baseline$",
     "lines": null
   },
-  "generated_at": "2020-11-30T10:19:27Z",
+  "generated_at": "2021-04-16T10:58:04Z",
   "plugins_used": [
     {
       "name": "AWSKeyDetector"
@@ -51,21 +51,21 @@
         "hashed_secret": "2907dcd1b70a82032e52be9b6b804abbb4a7525e",
         "is_secret": false,
         "is_verified": false,
-        "line_number": 83,
+        "line_number": 81,
         "type": "Base64 High Entropy String"
       },
       {
         "hashed_secret": "dd447c7c799dd4ebaacca8f0ad3da45a097d7211",
         "is_secret": false,
         "is_verified": false,
-        "line_number": 174,
+        "line_number": 167,
         "type": "Base64 High Entropy String"
       },
       {
         "hashed_secret": "8074db38f8a8acec1a147bc5daf2799ff6693fff",
         "is_secret": false,
         "is_verified": false,
-        "line_number": 189,
+        "line_number": 182,
         "type": "Base64 High Entropy String"
       }
     ],