diff --git a/tasks/update-service.yml b/tasks/update-service.yml
index 62705f74e4800cc422088a1a30a699d49bf1d190..0beddc017a5d57620143a196fffab35b926181d0 100644
--- a/tasks/update-service.yml
+++ b/tasks/update-service.yml
@@ -1,14 +1,27 @@
-# Update the keycloak installation
-- name: Checking for pre-existing installation
-  stat:
-    path: "{{ keycloak_base_path }}/keycloak-{{ keycloak_previous_version }}"
-  register: is_there_an_existing_keycloak
+# Check if there is a keycloak directory in the base_path
+- name: Check for existing keycloak installation
+  find:
+    paths: "{{ keycloak_base_path }}/keycloak-*"
+    file_type: "directory"
+    depth: 1
+  register: keycloak_existing_installations
 
-- name: Printing status of pre-existing installation
-  debug:
-    msg: "{{ is_there_an_existing_keycloak }}"
+- name: Checking if there is an existing installation that needs to be updated
+  block:
+    # We need to extract the version of each directory and add them to a list
+    # If so, what is it's version ? ( cut from  "keycloak-$version ")
+    - name: Check existing versions from directorie's names
+      set_fact: keycloak_list_of_versions="{{ keycloak_existing_installations.files | map(attribute='path') | regex_search('-([0-9]+\.[0-9]+\.[0-9]+\b)$') | list }}"
+    
+    # Compare such version to the one given
+    - name: Compare every version with the keycloak_version 
+      set_fact: keycloak_needs_an_update="keycloak_list_of_versions | version(keycloak_list_of_versions, "<") | reject(false, omit) | list"
+    # If the $old_version < $new_version, we need to update
+
+  # They may be multi keycloak directories
+  when: keycloak_existing_installations.matched >= 1
 
-- name: Updating if needed
+- name: Updating if keycloak needs an update
   block:
     # Stop the service
     - name: Stopping the service for the update.
@@ -28,12 +41,7 @@
     # Upgrade the server
     #- name: Upgrading the server with the new files
     # This is actually reinstalling the files.
-  when: is_there_an_existing_keycloak.stat.exists
-
-- name: Update state
-  debug:
-    msg: "No update done."
-  when: not is_there_an_existing_keycloak.stat.exists
+  when: true in keycloak_needs_an_update
 
 - name:  Force systemd to reread configs
   become: yes