diff --git a/server-spi-private/src/main/java/org/keycloak/models/utils/RepresentationToModel.java b/server-spi-private/src/main/java/org/keycloak/models/utils/RepresentationToModel.java
index e3e3557..2fc5136 100755
--- a/server-spi-private/src/main/java/org/keycloak/models/utils/RepresentationToModel.java
+++ b/server-spi-private/src/main/java/org/keycloak/models/utils/RepresentationToModel.java
@@ -1727,6 +1727,7 @@ public class RepresentationToModel {
public static ComponentModel toModel(KeycloakSession session, ComponentRepresentation rep) {
ComponentModel model = new ComponentModel();
+ model.setId(rep.getId());
model.setParentId(rep.getParentId());
model.setProviderType(rep.getProviderType());
model.setProviderId(rep.getProviderId());
diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/ComponentsTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/ComponentsTest.java
index 6902dac..16a6ff3 100644
--- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/ComponentsTest.java
+++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/ComponentsTest.java
@@ -99,6 +99,26 @@ public class ComponentsTest extends AbstractAdminTest {
}
@Test
+ public void testCreateWithoutGivenId() {
+ ComponentRepresentation rep = createComponentRepresentation("mycomponent");
+ rep.getConfig().addFirst("required", "foo");
+ rep.setId(null);
+
+ String id = createComponent(rep);
+ assertNotNull(id);
+ }
+
+ @Test
+ public void testCreateWithGivenId() {
+ ComponentRepresentation rep = createComponentRepresentation("mycomponent");
+ rep.getConfig().addFirst("required", "foo");
+ rep.setId("fixed-id");
+
+ String id = createComponent(rep);
+ assertEquals("fixed-id", id);
+ }
+
+ @Test
public void testUpdate() {
ComponentRepresentation rep = createComponentRepresentation("mycomponent");