diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 50154d48543a9de08cca684153e861805106e623..c3313f775668fc1d24d8909bf3de8091f579d170 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -40,7 +40,27 @@ prep-deploy:
            TF_VAR_data_volume="xdmod-staging-volume-$BUILD_DATE"
            openstack volume create --snapshot xdmod-staging-vol-snapshot --size 150 $TF_VAR_data_volume
       elif [ "$TARGET_ENV" = "production" ]; then
-           echo $TARGET_ENV
+           export prod_instance_id=$(openstack floating ip show $prod_floating_ip -c port_details -f value | awk -F', ' '{print $2}' | awk -F"'" '{print $2}')
+           export prod_volume=$(openstack server show $prod_instance_id -c volumes_attached -f value | awk -F"'" '{print $4}')
+           echo "Detaching prod_volume=${prod_volume} from prod_instance_id=${prod_instance_id} and creating a snapshot"
+           eval $(ssh-agent -s)
+           chmod 400 "${SSH_PRIV_KEY}"
+           ssh-add "${SSH_PRIV_KEY}"
+           mkdir ~/.ssh
+           chmod 700 ~/.ssh
+           ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$prod_floating_ip sudo systemctl stop mariadb
+           ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$prod_floating_ip sudo umount /var/lib/mysql && df -h
+           openstack server remove volume $prod_instance_id $prod_volume
+           openstack volume snapshot create --volume $prod_volume xdmod-prod-vol-snapshot-$BUILD_DATE
+
+           echo "Reattach the prod_volume=${prod_volume} to prod_instance_id=${prod_instance_id} after snapshot is created"
+           openstack server add volume $prod_instance_id $prod_volume --device /dev/vdb
+           ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$prod_floating_ip sudo mount /dev/vdb1 /var/lib/mysql && df -h
+           ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$prod_floating_ip sudo systemctl start mariadb
+
+           echo "Make a copy of prod volume $prod_volume to be used in tf-apply"
+           TF_VAR_data_volume="xdmod-prod-vol-$BUILD_DATE"
+           openstack volume create --snapshot xdmod-prod-vol-snapshot-$BUILD_DATE --size 150 $TF_VAR_data_volume
       else
            echo "Unknown TARGET_ENV: $TARGET_ENV"
            exit 1
@@ -126,41 +146,10 @@ production-deploy:
   stage: deploy
   tags: [build]
   script:
-    - |
-      eval $(ssh-agent -s)
-      chmod 400 "${SSH_PRIV_KEY}"
-      ssh-add "${SSH_PRIV_KEY}"
-      mkdir ~/.ssh
-      chmod 700 ~/.ssh
-    - export instance_volume=$(openstack server show $instance_id -c volumes_attached -f value | awk -F"'" '{print $4}')
-    - echo "Detaching instance_volume_id=${instance_volume} from new instance=${instance_id}"
-    - ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$instance_floating_ip sudo systemctl stop mariadb
-    - ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$instance_floating_ip sudo umount /var/lib/mysql && df -h
-    - openstack server remove volume $instance_id $instance_volume
-
-    - export prod_instance_id=$(openstack floating ip show $prod_floating_ip -c port_details -f value | awk -F', ' '{print $2}' | awk -F"'" '{print $2}')
-    - export prod_volume=$(openstack server show $prod_instance_id -c volumes_attached -f value | awk -F"'" '{print $4}')
-    - echo "Detaching prod_volume=${prod_volume} from prod_instance_id=${prod_instance_id} and creating a snapshot"
-    - ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$prod_floating_ip sudo systemctl stop mariadb
-    - ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$prod_floating_ip sudo umount /var/lib/mysql && df -h
-    - openstack server remove volume $prod_instance_id $prod_volume
-    - openstack volume snapshot create --volume $prod_volume xdmod-prod-data-vol-snapshot-$BUILD_DATE
-
-    - echo "Reattach the prod_volume=${prod_volume} to prod_instance_id=${prod_instance_id} after snapshot is created"
-    - openstack server add volume $prod_instance_id $prod_volume --device /dev/vdb
-    - ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$prod_floating_ip sudo mount /dev/vdb1 /var/lib/mysql && df -h
-    - ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$prod_floating_ip sudo systemctl start mariadb
-
     - echo "swap the floating IP between prod and newly deployed instances"
     - openstack server remove floating ip $prod_instance_id $prod_floating_ip
     - openstack server remove floating ip $instance_id $instance_floating_ip
     - openstack server add floating ip $instance_id $prod_floating_ip
-
-    - echo "Attach copy of prod volume $xdmod-prod-vol-$BUILD_DATE to newly deployed instance $instance_id"
-    - openstack volume create --snapshot xdmod-prod-data-vol-snapshot-$BUILD_DATE --size 150 xdmod-prod-vol-$BUILD_DATE
-    - openstack server add volume $instance_id xdmod-prod-vol-$BUILD_DATE --device /dev/vdb
-    - ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$prod_floating_ip sudo mount /dev/vdb1 /var/lib/mysql
-    - ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$prod_floating_ip sudo systemctl start mariadb
   needs:
     - job: tf-apply
       artifacts: true