diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index cadedd5ab4b0d8b53164d8e4fd83583b47be5844..086851bf0d88533d0c31a7b0167f60d47b3b7101 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -60,11 +60,25 @@ deploy_ood_proxy_node:
         --column id \
         $OOD_PROXY_NAME)
       
-      # Log the created instance ID for debugging
       echo "Created PROXY_INSTANCE_ID: $PROXY_INSTANCE_ID"
 
-      # Add a floating IP to the created server
-      openstack server add floating ip $OOD_PROXY_NAME $PROXY_IP
+      # Check if the PROXY_IP is set and exists
+      if [ -z "$PROXY_IP" ]; then
+        echo "ERROR: PROXY_IP variable is not set"
+        exit 1
+      fi
+
+      # Check if the floating IP is available
+      FLOATING_IP=$(openstack floating ip list --format value --column Floating_IP_Address | grep -w "$PROXY_IP")
+
+      if [ -z "$FLOATING_IP" ]; then
+        echo "ERROR: No Floating IP found for ${PROXY_IP}"
+        exit 1
+      else
+        # Add the floating IP to the created server
+        openstack server add floating ip $OOD_PROXY_NAME $PROXY_IP
+        echo "Successfully assigned Floating IP: $PROXY_IP to the server"
+      fi
 
       # Store the instance ID in variables.env for later use
       echo "PROXY_INSTANCE_ID=$PROXY_INSTANCE_ID" >> $CI_PROJECT_DIR/variables.env
@@ -72,3 +86,4 @@ deploy_ood_proxy_node:
     - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
     - if: $CI_PIPELINE_SOURCE == 'schedule'
     - when: manual
+