diff --git a/pom.xml b/pom.xml
index 9b17e3e8facbfb3f3a4be6291e7715230da13673..04d90dcfbdd02e2a5ee0bd6d73f8f9acc46f6b84 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,6 +29,13 @@
 <!--			<artifactId>spring-boot-starter-web-services</artifactId>-->
 <!--		</dependency>-->
 
+<!-- https://mvnrepository.com/artifact/org.keycloak/keycloak-admin-client -->
+<dependency>
+    <groupId>org.keycloak</groupId>
+    <artifactId>keycloak-admin-client</artifactId>
+    <version>21.1.1</version>
+</dependency>
+
 
 		<dependency>
 			<groupId>io.javaoperatorsdk</groupId>
diff --git a/src/main/java/de/ozgcloud/operator/Config.java b/src/main/java/de/ozgcloud/operator/Config.java
index a24156da4e1db5d8b66d011a0e20463a1420f7ef..bb7a11e52f2eab744da57031fd0896fbafe812e9 100644
--- a/src/main/java/de/ozgcloud/operator/Config.java
+++ b/src/main/java/de/ozgcloud/operator/Config.java
@@ -6,7 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
-import de.ozgcloud.operator.keycloak.KeycloakUserReconciler;
+import de.ozgcloud.operator.keycloak.user.KeycloakUserReconciler;
 import io.fabric8.kubernetes.client.KubernetesClient;
 import io.javaoperatorsdk.operator.Operator;
 import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
diff --git a/src/main/java/de/ozgcloud/operator/SpringNativeConfiguration.java b/src/main/java/de/ozgcloud/operator/SpringNativeConfiguration.java
index ea9651cf705036fd37a0cc096713582c284c4aa5..b55cfe1cf9ec5c4c64b6f73029c5b8f4b3004576 100644
--- a/src/main/java/de/ozgcloud/operator/SpringNativeConfiguration.java
+++ b/src/main/java/de/ozgcloud/operator/SpringNativeConfiguration.java
@@ -12,9 +12,9 @@ import org.springframework.aot.hint.RuntimeHintsRegistrar;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.ImportRuntimeHints;
 
-import de.ozgcloud.operator.keycloak.KeycloakUser;
-import de.ozgcloud.operator.keycloak.KeycloakUserSpec;
-import de.ozgcloud.operator.keycloak.KeycloakUserStatus;
+import de.ozgcloud.operator.keycloak.user.KeycloakUser;
+import de.ozgcloud.operator.keycloak.user.KeycloakUserSpec;
+import de.ozgcloud.operator.keycloak.user.KeycloakUserStatus;
 import io.fabric8.kubernetes.api.model.KubernetesResource;
 import io.fabric8.kubernetes.api.model.NamedCluster;
 import lombok.extern.slf4j.Slf4j;
diff --git a/src/main/java/de/ozgcloud/operator/keycloak/KeycloakClient.java b/src/main/java/de/ozgcloud/operator/keycloak/KeycloakClient.java
new file mode 100644
index 0000000000000000000000000000000000000000..cc9f184bc83ab0c0e86895ad748cf8ebd52f5f82
--- /dev/null
+++ b/src/main/java/de/ozgcloud/operator/keycloak/KeycloakClient.java
@@ -0,0 +1,33 @@
+package de.ozgcloud.operator.keycloak;
+
+import org.keycloak.admin.client.Keycloak;
+import org.keycloak.admin.client.KeycloakBuilder;
+import org.keycloak.representations.idm.UserRepresentation;
+import org.springframework.stereotype.Component;
+
+import lombok.extern.java.Log;
+
+@Log
+@Component
+public class KeycloakClient {
+
+	public Keycloak getKeycloak() {
+
+		Keycloak keycloak = KeycloakBuilder.builder() //
+				.serverUrl("https://sso.dev.by.ozg-cloud.de/") //
+				.realm("master") //
+//				.grantType(OAuth2Constants.PASSWORD) //
+				.username("admin") //
+				.password(" ") //
+				.clientId("admin-cli")
+				.build();
+
+		log.info(keycloak.realms().findAll().toString());
+
+		UserRepresentation user = new UserRepresentation();
+		user.setUsername("helge");
+		keycloak.realm("by-torsten-ozg-operator-dev").users().create(user);
+
+		return keycloak;
+	}
+}
diff --git a/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakClientUserRemoteService.java b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakClientUserRemoteService.java
new file mode 100644
index 0000000000000000000000000000000000000000..63ce46fe8969c8cea44a95dfab2dd76e449edff1
--- /dev/null
+++ b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakClientUserRemoteService.java
@@ -0,0 +1,19 @@
+package de.ozgcloud.operator.keycloak.user;
+
+import org.keycloak.representations.account.UserRepresentation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import de.ozgcloud.operator.keycloak.KeycloakClient;
+
+@Component
+public class KeycloakClientUserRemoteService {
+
+	@Autowired
+	private KeycloakClient keycloakClient;
+
+	void createUser(UserRepresentation user) {
+
+		keycloakClient.getKeycloak();
+	}
+}
diff --git a/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakClientUserService.java b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakClientUserService.java
new file mode 100644
index 0000000000000000000000000000000000000000..a87f0edb5edb01681e9b50182868747b93877d23
--- /dev/null
+++ b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakClientUserService.java
@@ -0,0 +1,15 @@
+package de.ozgcloud.operator.keycloak.user;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class KeycloakClientUserService {
+
+	@Autowired
+	KeycloakClientUserRemoteService remoteService;
+
+	void addUser(KeycloakUserSpec userSpec) {
+
+	}
+}
diff --git a/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUser.java b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUser.java
similarity index 89%
rename from src/main/java/de/ozgcloud/operator/keycloak/KeycloakUser.java
rename to src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUser.java
index bb3a997def5453b5037ef91b2b403c7b391deebd..5badf37be1fab149d988f0333c001e34c38e1d3e 100644
--- a/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUser.java
+++ b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUser.java
@@ -1,4 +1,4 @@
-package de.ozgcloud.operator.keycloak;
+package de.ozgcloud.operator.keycloak.user;
 
 import io.fabric8.kubernetes.api.model.Namespaced;
 import io.fabric8.kubernetes.client.CustomResource;
diff --git a/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserReconciler.java b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconciler.java
similarity index 94%
rename from src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserReconciler.java
rename to src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconciler.java
index d1155f94f082d3f66ddc096c3ea41fa6849c1a5b..3aff0f6c6213f426cabf24704025a89a913ff612 100644
--- a/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserReconciler.java
+++ b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconciler.java
@@ -1,4 +1,4 @@
-package de.ozgcloud.operator.keycloak;
+package de.ozgcloud.operator.keycloak.user;
 
 import java.time.LocalDate;
 import java.util.Base64;
@@ -31,7 +31,7 @@ public class KeycloakUserReconciler implements Reconciler<KeycloakUser> {
 		String namespace = crd.getMetadata().getNamespace();
 		log.warning("Reconciling: " + name + "/" + namespace);
 		log.warning("SecretTest:" + getKeycloakRealmAdminPassword(namespace));
-		crd.setStatus(KeycloakUserStatus.builder().status("Updated status for " + name + LocalDate.now().toString()).build());
+		crd.setStatus(KeycloakUserStatus.builder().status("Updated status for " + name + LocalDate.now().toString()).phase("Pending").build());
 		return UpdateControl.updateStatus(crd);
 	}
 
diff --git a/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserSpec.java b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserSpec.java
similarity index 97%
rename from src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserSpec.java
rename to src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserSpec.java
index e8c6bebf097b58cbf76c915cbb71c106a7316257..0c0ef4e6df02222a2b846a99a4bd4471184cf985 100644
--- a/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserSpec.java
+++ b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserSpec.java
@@ -1,4 +1,4 @@
-package de.ozgcloud.operator.keycloak;
+package de.ozgcloud.operator.keycloak.user;
 
 import java.util.List;
 
diff --git a/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserStatus.java b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserStatus.java
similarity index 84%
rename from src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserStatus.java
rename to src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserStatus.java
index 4d4dfd3231776d269c0a9a79e9294bb996435468..7e83e84b1c343b21c7009345ecc2b8f87d0fbf0f 100644
--- a/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserStatus.java
+++ b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserStatus.java
@@ -1,4 +1,4 @@
-package de.ozgcloud.operator.keycloak;
+package de.ozgcloud.operator.keycloak.user;
 
 import io.javaoperatorsdk.operator.api.ObservedGenerationAwareStatus;
 import lombok.AllArgsConstructor;
@@ -15,4 +15,6 @@ import lombok.Setter;
 public class KeycloakUserStatus extends ObservedGenerationAwareStatus {
 
 	private String status;
+
+	private String phase;
 }
diff --git a/src/test/java/de/ozgcloud/operator/keycloak/client/KeycloakClientTest.java b/src/test/java/de/ozgcloud/operator/keycloak/client/KeycloakClientTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..17303f76a48ea64fe59986511ca8e14390f3c836
--- /dev/null
+++ b/src/test/java/de/ozgcloud/operator/keycloak/client/KeycloakClientTest.java
@@ -0,0 +1,14 @@
+package de.ozgcloud.operator.keycloak.client;
+
+import org.junit.jupiter.api.Test;
+
+import de.ozgcloud.operator.keycloak.KeycloakClient;
+
+class KeycloakClientTest {
+
+	@Test
+	void test() {
+		KeycloakClient kc = new KeycloakClient();
+//		kc.test();
+	}
+}
diff --git a/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakClientUserRemoteServiceTest.java b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakClientUserRemoteServiceTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..86cd6ffbdd66d99c92465203acabe2b5a4267970
--- /dev/null
+++ b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakClientUserRemoteServiceTest.java
@@ -0,0 +1,31 @@
+package de.ozgcloud.operator.keycloak.user;
+
+import static org.mockito.Mockito.*;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Spy;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import de.ozgcloud.operator.keycloak.KeycloakClient;
+
+@ExtendWith(MockitoExtension.class)
+class KeycloakClientUserRemoteServiceTest {
+
+	@Spy
+	@InjectMocks
+	KeycloakClientUserRemoteService userRemoteService;
+
+	@Mock
+	KeycloakClient keycloakClient;
+
+	@Test
+	void test() {
+
+		userRemoteService.createUser(null);
+
+		verify(keycloakClient).getKeycloak();
+	}
+}
diff --git a/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserReconcilerTest.java b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconcilerTest.java
similarity index 86%
rename from src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserReconcilerTest.java
rename to src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconcilerTest.java
index 12a66bfc07b92d820c4c4473a3494ec230f3d852..9c66f82ec2bd241c639bdfed40d444ec28f1ed30 100644
--- a/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserReconcilerTest.java
+++ b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconcilerTest.java
@@ -1,4 +1,4 @@
-package de.ozgcloud.operator.keycloak;
+package de.ozgcloud.operator.keycloak.user;
 
 import static org.assertj.core.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.*;
@@ -12,6 +12,8 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
 
+import de.ozgcloud.operator.keycloak.user.KeycloakUser;
+import de.ozgcloud.operator.keycloak.user.KeycloakUserReconciler;
 import io.fabric8.kubernetes.client.KubernetesClient;
 import lombok.SneakyThrows;
 
diff --git a/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserSpecTestFactory.java b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserSpecTestFactory.java
similarity index 66%
rename from src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserSpecTestFactory.java
rename to src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserSpecTestFactory.java
index 847bde3f92c43b84b4d483ba636890eec80d0b46..cd0c9d0b9e397210b28c18384edb4f1e2323e792 100644
--- a/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserSpecTestFactory.java
+++ b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserSpecTestFactory.java
@@ -1,6 +1,7 @@
-package de.ozgcloud.operator.keycloak;
+package de.ozgcloud.operator.keycloak.user;
 
-import de.ozgcloud.operator.keycloak.KeycloakUserSpec.KeycloakUserSpecUser;
+import de.ozgcloud.operator.keycloak.user.KeycloakUserSpec;
+import de.ozgcloud.operator.keycloak.user.KeycloakUserSpec.KeycloakUserSpecUser;
 
 class KeycloakUserSpecTestFactory {
 
diff --git a/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserSpecUserTestFactory.java b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserSpecUserTestFactory.java
similarity index 72%
rename from src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserSpecUserTestFactory.java
rename to src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserSpecUserTestFactory.java
index e61e7872824efa4f8779e72def1dcbde098e831e..d38867135f29d59ed7d30b369925fa18b02a15d8 100644
--- a/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserSpecUserTestFactory.java
+++ b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserSpecUserTestFactory.java
@@ -1,6 +1,6 @@
-package de.ozgcloud.operator.keycloak;
+package de.ozgcloud.operator.keycloak.user;
 
-import de.ozgcloud.operator.keycloak.KeycloakUserSpec.KeycloakUserSpecUser;
+import de.ozgcloud.operator.keycloak.user.KeycloakUserSpec.KeycloakUserSpecUser;
 
 class KeycloakUserSpecUserTestFactory {
 
diff --git a/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserStatusTestFactory.java b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserStatusTestFactory.java
similarity index 69%
rename from src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserStatusTestFactory.java
rename to src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserStatusTestFactory.java
index d756b40733086146c41b877aad5890b6962ef0a6..89d42fb73fe42fde91ea7741aefb1a16b89a5fb7 100644
--- a/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserStatusTestFactory.java
+++ b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserStatusTestFactory.java
@@ -1,4 +1,6 @@
-package de.ozgcloud.operator.keycloak;
+package de.ozgcloud.operator.keycloak.user;
+
+import de.ozgcloud.operator.keycloak.user.KeycloakUserStatus;
 
 class KeycloakUserStatusTestFactory {
 
diff --git a/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserTestFactory.java b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserTestFactory.java
similarity index 66%
rename from src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserTestFactory.java
rename to src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserTestFactory.java
index 8e4f870d86b0dc12df5624c1b383dd487e7fd251..fd3a9fbeafc8fe6a4791bede46cd62188f3e2013 100644
--- a/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserTestFactory.java
+++ b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserTestFactory.java
@@ -1,4 +1,8 @@
-package de.ozgcloud.operator.keycloak;
+package de.ozgcloud.operator.keycloak.user;
+
+import de.ozgcloud.operator.keycloak.user.KeycloakUser;
+import de.ozgcloud.operator.keycloak.user.KeycloakUserSpec;
+import de.ozgcloud.operator.keycloak.user.KeycloakUserStatus;
 
 class KeycloakUserTestFactory {