diff --git a/src/service/.gitlab-ci.yml b/src/service/.gitlab-ci.yml
index e0ff82a125589a668db500f9eb49febb7d938412..0ca6cfa9bdabf3b997b79945c4c676864274b941 100644
--- a/src/service/.gitlab-ci.yml
+++ b/src/service/.gitlab-ci.yml
@@ -49,6 +49,7 @@ unit_test service:
   before_script:
     - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
     - if docker network list | grep teraflowbridge; then echo "teraflowbridge is already created"; else docker network create --driver=bridge teraflowbridge; fi
+    - pip install flask
     - |
       # Context-related cleanup
       if docker container ls | grep crdb; then docker rm -f crdb; else echo "CockroachDB container is not in the system"; fi
@@ -151,8 +152,9 @@ unit_test service:
       docker logs $IMAGE_NAME
 
     # Mock QKD Nodes Deployment
+    - echo "Starting stage: deploy_mock_nodes"
+    - pip install flask  # Install Flask to ensure it is available
     - |
-      echo "Starting stage: deploy_mock_nodes"
       for port in 11111 22222 33333; do
         if lsof -i:$port >/dev/null 2>&1; then
           echo "Freeing up port $port..."
@@ -162,7 +164,7 @@ unit_test service:
       MOCK_NODES_DIR="$PWD/src/tests/tools/mock_qkd_nodes"
       if [ -d "$MOCK_NODES_DIR" ]; then
         cd "$MOCK_NODES_DIR" || exit
-        ./start.sh &
+        ./start.sh &  # The start script that invokes flask commands
         MOCK_NODES_PID=$!
       else
         echo "Error: Mock QKD nodes directory '$MOCK_NODES_DIR' not found."
diff --git a/src/service/Dockerfile b/src/service/Dockerfile
index 6f23f0a89387e2db3802ee20e003ccb6482844ff..54cc46b9679f3f6e32a4d81c028a2879ebf0572f 100644
--- a/src/service/Dockerfile
+++ b/src/service/Dockerfile
@@ -32,6 +32,9 @@ RUN python3 -m pip install --upgrade pip
 RUN python3 -m pip install --upgrade setuptools wheel
 RUN python3 -m pip install --upgrade pip-tools
 
+# Install Flask
+RUN python3 -m pip install Flask
+
 # Get common Python packages
 # Note: this step enables sharing the previous Docker build steps among all the Python components
 WORKDIR /var/teraflow
diff --git a/src/tests/tools/mock_qkd_nodes/start.sh b/src/tests/tools/mock_qkd_nodes/start.sh
index 89797b9c9496cdf58061c406ad2886be0d9c47f6..cf7f340a35bd173ebcc08bff3825fc42a9d8f6ee 100755
--- a/src/tests/tools/mock_qkd_nodes/start.sh
+++ b/src/tests/tools/mock_qkd_nodes/start.sh
@@ -13,30 +13,28 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-#!/bin/bash
 cd "$(dirname "$0")"
 
 # Function to kill all background processes
 killbg() {
-    for p in "${pids[@]}" ; do
-        kill "$p";
+    for p in "${pids[@]}"; do
+        kill "$p" 2>/dev/null
     done
 }
 
+# Trap exit and ensure cleanup of Flask processes
 trap killbg EXIT
 pids=()
 
 # Set FLASK_APP and run the Flask instances on different ports
 export FLASK_APP=wsgi
-flask run --host 0.0.0.0 --port 11111 & 
-pids+=($!)
-
-flask run --host 0.0.0.0 --port 22222 & 
-pids+=($!)
 
-flask run --host 0.0.0.0 --port 33333 & 
-pids+=($!)
+# Starting Flask instances on different ports
+for port in 11111 22222 33333; do
+    flask run --host 0.0.0.0 --port "$port" &
+    pids+=($!)
+    sleep 2 # To avoid conflicts during startup, giving each Flask instance time to initialize
+done
 
 # Wait for all background processes to finish
 wait
-