diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 74bd05b2fbd3e5bf5918b7ed441e0a145cfba169..0f42010d425352c72f18b5af529a816be9e1dc22 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -24,7 +24,6 @@ test:
 deploy-sites:
   cache: {}
   stage: deploy
-  needs: ["test"]
   script:
     - pip install -r requirements.txt
     - python frontend/createStatic.py -u "https://datacatalog.fz-juelich.de/"
@@ -36,13 +35,35 @@ deploy-sites:
     paths:
       - public
 
-deploy-production:
+
+light-deploy-testing:
+  stage: deploy 
+  # only run when master is updated, unless the pipeline was triggered via the web UI
+  only:
+    - master
+  except:
+    - tags
+    - web
+  environment: Testing
+  variables:
+    OS_AUTH_TYPE: v3applicationcredential
+    OS_AUTH_URL: https://hdf-cloud.fz-juelich.de:5000
+    OS_IDENTITY_API_VERSION: 3
+    OS_REGION_NAME: "HDFCloud"
+    OS_INTERFACE: public
+    TESTING_URL: https://zam10036.zam.kfa-juelich.de/
+    TESTING_DOMAIN: zam10036.zam.kfa-juelich.de
+  script:
+    # TODO insert private key in gitlab
+    - ssh apiserver@$TESTING_DOMAIN 'export API_URL=https://zam10036.zam.kfa-juelich.de/ && export SERVER_DOMAIN=zam10036.zam.kfa-juelich.de && sudo /bin/bash /home/apiserver/datacatalog/deploy_scripts/deployment.sh /home/apiserver/datacatalog'
+
+full-deploy-production:
   stage: deploy
-  # only run when stable tag is assigned
+  # only run when stable tag is assigned and the pipeline is triggered in the web UI
   only:
     - tags
+    - web
   tags: [stable]
-  needs: ["tag_release"]
   environment: Production
   variables:
     OS_AUTH_TYPE: v3applicationcredential
@@ -52,28 +73,30 @@ deploy-production:
     OS_INTERFACE: public
     PRODUCTION_URL: https://datacatalog.fz-juelich.de/
     PRODUCTION_DOMAIN: datacatalog.fz-juelich.de
+    VOLUME_ID: 07a93071-5be7-4cc0-8ff3-cb34e7ed2b80
+    FLOATING_IP: 134.94.199.59
   script:
-    - echo "Doing nothing for now. This will become a production deployment."
-    - sed -i 's_/app/mnt/data_/app/mnt && mount /dev/vdb1 /app/mnt_g' deploy_scripts/cloudinit.yml
+    - echo "Starting the full production deployment."
+    - sed -i 's_datacatalog.fz_zam10036.zam.kfa_g' deploy_scripts/cloudinit.yml
     - pip install python-openstackclient
-    - openstack image list
-    # - openstack server create --flavor s1 --image 149a65b5-aeb8-499f-aaa6-ec966bd28dd6 pipeline-inst
-    # - reassign floating ip
-    # - login on the new instance pipeline-inst
-    # - sudo docker network create net #net is the docker internal network.. put it in a Variable?
-    # - sudo docker-compose up -d
-    # - docker build --no-cache=true --pull -f ./apiserver/Dockerfile -t api-test . #pull from $CI_REGISTRY
-    # - sudo docker run --name api-test-cloud --network net -e VIRTUAL_HOST="zam10028.zam.kfa-juelich.de" -e LETSENCRYPT_HOST="zam10028.zam.kfa-juelich.de" -d api-test
-    # - openstack server destroy pipeline-inst #old
+    - OLD_ID=`openstack server show testing-deployment -f value -c id`
+    # TODO create snapshot copy of old instance
+    - openstack server remove floating ip $OLD_ID $FLOATING_IP
+    - openstack server remove volume $OLD_ID $VOLUME_ID
+    - INSTANCE_ID=`openstack server create -f value -c id --prefix IMAGE_ --flavor s2 --image 149a65b5-aeb8-499f-aaa6-ec966bd28dd6 --user-data deploy_scripts/cloudinit.yml --security-group ssh --security-group www --security-group https testing-deployment`
+    - while [ "`openstack server show $INSTANCE_ID -c addresses -f value`" = "{}" ]; do sleep 5; done # wait until an address is available to attach the floating ip
+    - openstack server add floating ip $INSTANCE_ID $FLOATING_IP
+    - openstack server add volume $INSTANCE_ID $VOLUME_ID
+    - openstack server delete $OLD_ID
 
-deploy-testing:
+full-deploy-testing:
   stage: deploy 
-  # only run when master is updated
+  # only run when master is updated and the pipeline is triggered in the web UI
   only:
     - master
+    - web
   except:
     - tags
-  needs: ["transfer_image"]
   environment: Testing
   variables:
     OS_AUTH_TYPE: v3applicationcredential
@@ -83,20 +106,16 @@ deploy-testing:
     OS_INTERFACE: public
     TESTING_URL: https://zam10036.zam.kfa-juelich.de/
     TESTING_DOMAIN: zam10036.zam.kfa-juelich.de
-    VOLUME_ID: 07a93071-5be7-4cc0-8ff3-cb34e7ed2b80
     FLOATING_IP: 134.94.199.36
   script:
-    - echo "Starting the testing deployment."
+    - echo "Starting the full testing deployment."
     - sed -i 's_datacatalog.fz_zam10036.zam.kfa_g' deploy_scripts/cloudinit.yml
     - pip install python-openstackclient
     - OLD_ID=`openstack server show testing-deployment -f value -c id`
-    # TODO create snapshot copy of old instance
     - openstack server remove floating ip $OLD_ID $FLOATING_IP
-    # NO VOLUME IN TESTING DEPLOYMENT - openstack server remove volume $OLD_ID $VOLUME_ID
     - INSTANCE_ID=`openstack server create -f value -c id --prefix IMAGE_ --flavor s2 --image 149a65b5-aeb8-499f-aaa6-ec966bd28dd6 --user-data deploy_scripts/cloudinit.yml --security-group ssh --security-group www --security-group https testing-deployment`
     - while [ "`openstack server show $INSTANCE_ID -c addresses -f value`" = "{}" ]; do sleep 5; done # wait until an address is available to attach the floating ip
     - openstack server add floating ip $INSTANCE_ID $FLOATING_IP
-    # NO VOLUME IN TESTING DEPLOYMENT - openstack server add volume $INSTANCE_ID $VOLUME_ID
     - openstack server delete $OLD_ID
 
   
@@ -107,7 +126,6 @@ test-testing:
     - master
   except:
     - tags
-  needs: ["deploy-testing"]
   variables:
     TESTING_URL: https://zam10036.zam.kfa-juelich.de/
   script:
@@ -122,7 +140,6 @@ test-production:
   only:
     - tags
   tags: [stable]
-  needs: ["deploy-production"]
   environment: Production
   variables:
     PRODUCTION_URL: https://datacatalog.fz-juelich.de/
@@ -135,7 +152,6 @@ test-production:
 publishgit-do:
   image: python:3-slim
   stage: publish
-  needs: ["test"]
   only:
     - tags
   tags: [stable]
@@ -152,7 +168,6 @@ publishgit-do:
 # This is an automatic push of the docker image into gitLab container repository
 transfer_image:
   stage: build
-  needs: ["test"]
   image: docker:latest
   services:
     - docker:dind
@@ -168,7 +183,6 @@ transfer_image:
 
 tag_release:
   stage: publish
-  needs: ["transfer_image"]
   image: docker:latest
   services:
     - docker:dind