diff --git a/src/main/java/sh/libre/scim/core/AbstractScimService.java b/src/main/java/sh/libre/scim/core/AbstractScimService.java
index 1bad0d8cfee764953191cb1f6650ad8ccd97f714..4e42351c242cb69b307ccdadea8bbd3f75cb0e45 100644
--- a/src/main/java/sh/libre/scim/core/AbstractScimService.java
+++ b/src/main/java/sh/libre/scim/core/AbstractScimService.java
@@ -44,12 +44,12 @@ public abstract class AbstractScimService<RMM extends RoleMapperModel, S extends
         if (findById(id).isPresent()) {
             return;
         }
-        ResourceNode scimForCreation = toScimForCreation(roleMapperModel);
+        S scimForCreation = toScimForCreation(roleMapperModel);
         EntityOnRemoteScimId externalId = scimClient.create(id, scimForCreation);
         createMapping(id, externalId);
     }
 
-    protected abstract ResourceNode toScimForCreation(RMM roleMapperModel);
+    protected abstract S toScimForCreation(RMM roleMapperModel);
 
     protected abstract KeycloakId getId(RMM roleMapperModel);
 
diff --git a/src/main/java/sh/libre/scim/core/ScimClient.java b/src/main/java/sh/libre/scim/core/ScimClient.java
index ac635bcd14d3cd1d721374d7c2ffd8f31196ae94..35ab5620bc1fd44e08535d0afa21217059d8f7a6 100644
--- a/src/main/java/sh/libre/scim/core/ScimClient.java
+++ b/src/main/java/sh/libre/scim/core/ScimClient.java
@@ -4,7 +4,6 @@ import com.google.common.net.HttpHeaders;
 import de.captaingoldfish.scim.sdk.client.ScimClientConfig;
 import de.captaingoldfish.scim.sdk.client.ScimRequestBuilder;
 import de.captaingoldfish.scim.sdk.client.response.ServerResponse;
-import de.captaingoldfish.scim.sdk.common.exceptions.ResponseException;
 import de.captaingoldfish.scim.sdk.common.resources.ResourceNode;
 import de.captaingoldfish.scim.sdk.common.response.ListResponse;
 import io.github.resilience4j.core.IntervalFunction;
@@ -63,7 +62,7 @@ public class ScimClient<S extends ResourceNode> implements AutoCloseable {
         return new ScimClient(scimRequestBuilder, scimResourceType);
     }
 
-    public EntityOnRemoteScimId create(KeycloakId id, ResourceNode scimForCreation) {
+    public EntityOnRemoteScimId create(KeycloakId id, S scimForCreation) {
         if (scimForCreation.getId().isPresent()) {
             throw new IllegalArgumentException(
                     "%s is already created on remote with id %s".formatted(id, scimForCreation.getId().get())
@@ -97,8 +96,9 @@ public class ScimClient<S extends ResourceNode> implements AutoCloseable {
         return scimResourceType.getResourceClass();
     }
 
-    public void replace(EntityOnRemoteScimId externalId, ResourceNode scimForReplace) {
+    public void replace(EntityOnRemoteScimId externalId, S scimForReplace) {
         Retry retry = retryRegistry.retry("replace-%s".formatted(externalId.asString()));
+        logger.warn(scimForReplace);
         ServerResponse<S> response = retry.executeSupplier(() -> scimRequestBuilder
                 .update(getResourceClass(), getScimEndpoint(), externalId.asString())
                 .setResource(scimForReplace)
diff --git a/src/main/java/sh/libre/scim/core/ScimPropagationException.java b/src/main/java/sh/libre/scim/core/ScimPropagationException.java
new file mode 100644
index 0000000000000000000000000000000000000000..145c7c4c0aac9c85413c19dfc415a09b1cd35410
--- /dev/null
+++ b/src/main/java/sh/libre/scim/core/ScimPropagationException.java
@@ -0,0 +1,4 @@
+package sh.libre.scim.core;
+
+public class ScimPropagationException {
+}