diff --git a/src/main/java/sh/libre/scim/core/ScimDispatcher.java b/src/main/java/sh/libre/scim/core/ScimDispatcher.java
index 7db4e62938eba35d45540b77cc8bfdaceadc8196..c46740df9c67553ce8b0b8478fec997d3c938547 100644
--- a/src/main/java/sh/libre/scim/core/ScimDispatcher.java
+++ b/src/main/java/sh/libre/scim/core/ScimDispatcher.java
@@ -10,6 +10,7 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.function.Consumer;
 
 /**
@@ -19,7 +20,7 @@ public class ScimDispatcher {
 
     private static final Logger logger = Logger.getLogger(ScimDispatcher.class);
 
-    private static final Map<KeycloakSession, ScimDispatcher> sessionToScimDispatcher = new LinkedHashMap<>();
+    private static final Map<KeycloakSession, ScimDispatcher> sessionToScimDispatcher = new ConcurrentHashMap<>();
     private final KeycloakSession session;
     private boolean clientsInitialized = false;
     private final List<UserScimService> userScimServices = new ArrayList<>();