diff --git a/src/main/java/sh/libre/scim/core/Adapter.java b/src/main/java/sh/libre/scim/core/Adapter.java
index 913ef09d03cf578bc3bbf484241a5f8030c018c5..7eada911234c507bf1e79c4510daeded5a85f307 100644
--- a/src/main/java/sh/libre/scim/core/Adapter.java
+++ b/src/main/java/sh/libre/scim/core/Adapter.java
@@ -25,6 +25,7 @@ public abstract class Adapter<M extends RoleMapperModel, S extends com.unboundid
 
     protected String id;
     protected String externalId;
+    protected Boolean skip = false;
 
     public Adapter(KeycloakSession session, String componentId, String type, Logger logger) {
         this.session = session;
diff --git a/src/main/java/sh/libre/scim/core/GroupAdapter.java b/src/main/java/sh/libre/scim/core/GroupAdapter.java
index 8cdced67cea9e80358c80f1343e50cea608537e1..33039c5904217721a4225e33c6fbde0758fca968 100644
--- a/src/main/java/sh/libre/scim/core/GroupAdapter.java
+++ b/src/main/java/sh/libre/scim/core/GroupAdapter.java
@@ -14,6 +14,7 @@ import com.unboundid.scim2.common.types.GroupResource;
 import com.unboundid.scim2.common.types.Member;
 import com.unboundid.scim2.common.types.Meta;
 
+import org.apache.commons.lang.StringUtils;
 import org.jboss.logging.Logger;
 import org.keycloak.models.GroupModel;
 import org.keycloak.models.KeycloakSession;
@@ -50,6 +51,7 @@ public class GroupAdapter extends Adapter<GroupModel, GroupResource> {
                 .getGroupMembersStream(session.getContext().getRealm(), group)
                 .map(x -> x.getId())
                 .collect(Collectors.toSet());
+        this.skip = StringUtils.equals(group.getFirstAttribute("scim-skip"), "true");
     }
 
     @Override
diff --git a/src/main/java/sh/libre/scim/core/ScimClient.java b/src/main/java/sh/libre/scim/core/ScimClient.java
index 702ff39ba2317ee877670c870fb87c221815de56..fc2610c13ad66ae2c28406bbf69fc44b2228a7f6 100644
--- a/src/main/java/sh/libre/scim/core/ScimClient.java
+++ b/src/main/java/sh/libre/scim/core/ScimClient.java
@@ -78,6 +78,7 @@ public class ScimClient {
             M kcModel) {
         var adapter = getAdapter(aClass);
         adapter.apply(kcModel);
+        if (adapter.skip) return;
         // If mapping exist then it was created by import so skip.
         if (adapter.query("findById", adapter.getId()).getResultList().size() != 0) {
             return;
@@ -102,6 +103,7 @@ public class ScimClient {
         var adapter = getAdapter(aClass);
         try {
             adapter.apply(kcModel);
+            if (adapter.skip) return;
             var resource = adapter.query("findById", adapter.getId()).getSingleResult();
             adapter.apply(resource);
             var retry = registry.retry("replace-" + adapter.getId());
diff --git a/src/main/java/sh/libre/scim/core/UserAdapter.java b/src/main/java/sh/libre/scim/core/UserAdapter.java
index dbfd2f0b09c23fb50651bdfd6fe337b85a8132a4..df6676e628e3c240d7a44d88a412f30694464f51 100644
--- a/src/main/java/sh/libre/scim/core/UserAdapter.java
+++ b/src/main/java/sh/libre/scim/core/UserAdapter.java
@@ -110,6 +110,7 @@ public class UserAdapter extends Adapter<UserModel, UserResource> {
         var roles = new String[rolesSet.size()];
         rolesSet.toArray(roles);
         setRoles(roles);
+        this.skip = StringUtils.equals(user.getFirstAttribute("scim-skip"), "true");
     }
 
     @Override