diff --git a/src/main/java/sh/libre/scim/core/GroupScimService.java b/src/main/java/sh/libre/scim/core/GroupScimService.java
index 4245b247c5cc9779b0eb49c72b9173c37e2ed8c0..e5b23155523e64d0aa27caba48b4c895b25630dc 100644
--- a/src/main/java/sh/libre/scim/core/GroupScimService.java
+++ b/src/main/java/sh/libre/scim/core/GroupScimService.java
@@ -41,10 +41,14 @@ public class GroupScimService extends AbstractScimService<GroupModel, Group> {
         Set<String> names = new TreeSet<>();
         resource.getId().ifPresent(names::add);
         resource.getDisplayName().ifPresent(names::add);
-        Optional<GroupModel> group = getKeycloakDao().getGroupsStream()
-                .filter(groupModel -> names.contains(groupModel.getName()))
-                .findFirst();
-        return group.map(GroupModel::getId).map(KeycloakId::new);
+        try (Stream<GroupModel> groupsStream = getKeycloakDao().getGroupsStream()) {
+            Optional<GroupModel> group = groupsStream
+                    .filter(groupModel -> names.contains(groupModel.getName()))
+                    .findFirst();
+            return group
+                    .map(GroupModel::getId)
+                    .map(KeycloakId::new);
+        }
     }
 
     @Override