diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index cd1c1b70508ca55fcaeb68233e0235a0ee393e60..22e0da880712d38d7a31d6c4fdc9f5166ae6cc1b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -74,23 +74,23 @@ behave-integration:
     - name: ${CI_REGISTRY_IMAGE}/login_logout:${CI_COMMIT_REF_NAME}
       alias: oauth
   variables:
-    # Gitlab CI does not propagate service names to service containers
-    # it assigns addresses incrementally starting from 172.17.0.2
-    # in the order that the services are started which is the order of
-    # the services listed in the job configuration
-    DATABASE_HOST: "172.17.0.2" # 172.17.0.2 -> postgres
-    URLS_LOGIN: "http://172.17.0.3:5000/login" # 172.17.0.3 -> login
-    URLS_LOGOUT: "http://172.17.0.3:5000/logout"
-    LOGOUT_URL: "http://172.17.0.3:5000/logout"
-    URLS_POST_LOGOUT_REDIRECT: "http://172.17.0.3:5000/"
-    URLS_CONSENT: "http://172.17.0.4:5001/consent" # 172.17.0.4 -> consent
-    URLS_SELF_ISSUER: "http://172.17.0.5:4444/" # 172.17.0.5 -> hydra
-    BASE_URL: "http://172.17.0.5:4444/"
-    HYDRA_ADMIN_URL: "http://172.17.0.5:4445"
-    ACCESS_TOKEN_URL: "http://172.17.0.5:4444/oauth2/token"
-    AUTHORIZE_URL: "http://172.17.0.5:4444/oauth2/auth"
-    USERINFO_URL: "http://172.17.0.5:4444/userinfo"
-    GRAPHQL_URL: "http://172.17.0.6:5000/graphql" # 172.17.0.6 -> backend
+    # Feature Flag FF_NETWORK_PER_BUILD Enables creation of a docker network per build
+    # with the docker executor of the gitlab-runner. This is required for service
+    # interconnection. Requires gitlab-runner v12.9.0
+    FF_NETWORK_PER_BUILD: 1
+    DATABASE_HOST: "postgres"
+    URLS_LOGIN: "http://login:5000/login"
+    URLS_LOGOUT: "http://login:5000/logout"
+    LOGOUT_URL: "http://login/logout"
+    URLS_POST_LOGOUT_REDIRECT: "http://login:5000/"
+    URLS_CONSENT: "http://consent:5001/consent"
+    URLS_SELF_ISSUER: "http://hydra:4444/"
+    BASE_URL: "http://hydra:4444/"
+    HYDRA_ADMIN_URL: "http://hydra:4445"
+    ACCESS_TOKEN_URL: "http://hydra:4444/oauth2/token"
+    AUTHORIZE_URL: "http://hydra:4444/oauth2/auth"
+    USERINFO_URL: "http://hydra:4444/userinfo"
+    GRAPHQL_URL: "http://backend:5000/graphql"
     GIT_SUBMODULE_STRATEGY: "recursive"
     TESTUSER_USERNAME: "testuser"
     TESTUSER_USERNAME2: "testuser2"
@@ -115,13 +115,15 @@ behave-integration:
     FLASK_ENV: "development"
   image: ${CI_REGISTRY_IMAGE}/integration_test:${CI_COMMIT_REF_NAME}
   script:
-    - echo "WAIT FOR SERVICES TO INITIALIZE" && sleep 20
+    # Create user and application objects
     - /bin/bash user-panel/backend/utils/create-user.bash ${TESTUSER_USERNAME} ${TESTUSER_PASSWORD} ${TESTUSER_EMAIL} backend:5000
     - /bin/bash user-panel/backend/utils/create-user.bash ${TESTUSER_USERNAME2} ${TESTUSER_PASSWORD} ${TESTUSER_EMAIL2} backend:5000
-    - /bin/bash user-panel/backend/utils/create-application.bash ${KEY} backend:5000
+    - /bin/bash user-panel/backend/utils/create-application.bash ${KEY} "Application used for testing" backend:5000
     - /bin/bash user-panel/backend/utils/create-role.bash ${ROLE} backend:5000
     - /bin/bash user-panel/backend/utils/grant-access.bash ${TESTUSER_USERNAME} ${KEY} backend:5000
     - /bin/bash user-panel/backend/utils/assign-role.bash ${TESTUSER_USERNAME} ${ROLE} backend:5000
+    # Wait for 60s for hydra to become available. Then create the oauth2 client object
+    - while [[ $HYDRASTATUS -ne "200" &&  60 -ge $TIMER ]]; do HYDRASTATUS=`curl http://hydra:4445/health/ready -o /dev/null -w "%{http_code}"` || TIMER=$TIMER+5 && sleep 5 ; done
     - /bin/bash test/create-hydra-client.bash ${KEY} ${SECRET} http://hydra:4445 http://oauth:5000/callback
     - cd test/login_logout/test/behave/
     - >