diff --git a/ad-connector/src/main/java/net/jami/jams/ad/connector/service/UserProfileService.java b/ad-connector/src/main/java/net/jami/jams/ad/connector/service/UserProfileService.java
index c38cd92a9a1a6e073da157c9ad7fc7c917fe87db..39685be4b90713033f0573035de2b05579312a28 100644
--- a/ad-connector/src/main/java/net/jami/jams/ad/connector/service/UserProfileService.java
+++ b/ad-connector/src/main/java/net/jami/jams/ad/connector/service/UserProfileService.java
@@ -200,19 +200,23 @@ public class UserProfileService {
     public void synchronizeUsersWithAD() {
         log.info("Synchronizing Active Directory user profiles");
         // Fetch all users from the Active Directory
-        List<UserProfile> profilesFromResponse =
+        List<UserProfile> profilesFromAD =
                 getUserProfile("*", "LOGON_NAME", false, Optional.empty());
-        // There is a use case where a user is not in the LDAP directory but is in the database.
-        // When this happens, we need to revoke the user from the database.
-        List<UserProfile> profilesFromDatabase = dataStore.getUserProfileDao().getAllUserProfile();
-        for (UserProfile p : profilesFromDatabase) {
-            if (profilesFromResponse.stream()
-                    .noneMatch(r -> r.getUsername().equals(p.getUsername()))) {
-                log.info("Revoking user " + p.getUsername() + " from the database.");
-                RevokeUserFlow.revokeUser(p.getUsername());
-                // We also remove the user from the local_directory table to avoid duplicate
-                // revocations
-                dataStore.getUserProfileDao().deleteUserProfile(p.getUsername());
+        // Do not revoke users if there is an error, the AD server could be down.
+        if (profilesFromAD != null) {
+            // There is a use case where a user is not in the AD server but is in the database.
+            // When this happens, we need to revoke the user from the database.
+            List<UserProfile> profilesFromDatabase =
+                    dataStore.getUserProfileDao().getAllUserProfile();
+            for (UserProfile p : profilesFromDatabase) {
+                if (profilesFromAD.stream()
+                        .noneMatch(r -> r.getUsername().equals(p.getUsername()))) {
+                    log.info("Revoking user " + p.getUsername() + " from the database.");
+                    RevokeUserFlow.revokeUser(p.getUsername());
+                    // We also remove the user from the local_directory table to avoid duplicate
+                    // revocations
+                    dataStore.getUserProfileDao().deleteUserProfile(p.getUsername());
+                }
             }
         }
     }
diff --git a/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/UserProfileService.java b/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/UserProfileService.java
index c4c9917c83c6675adae39f866f1fcda245ac9286..47c16bc2f399344432d23bb068320fdaf57028c3 100644
--- a/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/UserProfileService.java
+++ b/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/UserProfileService.java
@@ -152,16 +152,21 @@ public class UserProfileService {
         // Fetcg all users from the LDAP
         List<UserProfile> profilesFromLDAP =
                 getUserProfile("*", "LOGON_NAME", false, Optional.empty());
-        // There is a use case where a user is not in the LDAP directory but is in the database.
-        // When this happens, we need to revoke the user from the database.
-        List<UserProfile> profilesFromDatabase = dataStore.getUserProfileDao().getAllUserProfile();
-        for (UserProfile p : profilesFromDatabase) {
-            if (profilesFromLDAP.stream().noneMatch(r -> r.getUsername().equals(p.getUsername()))) {
-                log.info("Revoking user " + p.getUsername() + " from the database.");
-                RevokeUserFlow.revokeUser(p.getUsername());
-                // We also remove the user from the local_directory table to avoid duplicate
-                // revocations
-                dataStore.getUserProfileDao().deleteUserProfile(p.getUsername());
+        // Do not revoke users if there is an error, the LDAP server could be down.
+        if (profilesFromLDAP != null) {
+            // There is a use case where a user is not in the LDAP server but is in the database.
+            // When this happens, we need to revoke the user from the database.
+            List<UserProfile> profilesFromDatabase =
+                    dataStore.getUserProfileDao().getAllUserProfile();
+            for (UserProfile p : profilesFromDatabase) {
+                if (profilesFromLDAP.stream()
+                        .noneMatch(r -> r.getUsername().equals(p.getUsername()))) {
+                    log.info("Revoking user " + p.getUsername() + " from the database.");
+                    RevokeUserFlow.revokeUser(p.getUsername());
+                    // We also remove the user from the local_directory table to avoid duplicate
+                    // revocations
+                    dataStore.getUserProfileDao().deleteUserProfile(p.getUsername());
+                }
             }
         }
     }