diff --git a/ozgcloud-elasticsearch-operator/src/main/java/de/ozgcloud/operator/OzgCloudElasticsearchCustomResourceStatus.java b/ozgcloud-elasticsearch-operator/src/main/java/de/ozgcloud/operator/OzgCloudElasticsearchCustomResourceStatus.java
index b1e8dc7ef9df3f13d45d1e44fc86f97b37e984b6..202f29339059abc2a58a86211be539970480e525 100644
--- a/ozgcloud-elasticsearch-operator/src/main/java/de/ozgcloud/operator/OzgCloudElasticsearchCustomResourceStatus.java
+++ b/ozgcloud-elasticsearch-operator/src/main/java/de/ozgcloud/operator/OzgCloudElasticsearchCustomResourceStatus.java
@@ -25,7 +25,6 @@ package de.ozgcloud.operator;
 
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 
-import io.javaoperatorsdk.operator.api.ObservedGenerationAwareStatus;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Getter;
@@ -38,9 +37,8 @@ import lombok.Setter;
 @NoArgsConstructor
 @AllArgsConstructor
 @JsonIgnoreProperties(ignoreUnknown = true)
-public class OzgCloudElasticsearchCustomResourceStatus extends ObservedGenerationAwareStatus {
-
+public class OzgCloudElasticsearchCustomResourceStatus {
+	private Long observedGeneration;
 	private CustomResourceStatus status;
-
 	private String message;
 }
diff --git a/ozgcloud-elasticsearch-operator/src/main/java/de/ozgcloud/operator/OzgCloudElasticsearchUpdateControlBuilder.java b/ozgcloud-elasticsearch-operator/src/main/java/de/ozgcloud/operator/OzgCloudElasticsearchUpdateControlBuilder.java
index 93f3cb625c70c834a329cce3ea7cfa3832521ca7..a487918d442a6ccebbf086f03f1902d6fbb481af 100644
--- a/ozgcloud-elasticsearch-operator/src/main/java/de/ozgcloud/operator/OzgCloudElasticsearchUpdateControlBuilder.java
+++ b/ozgcloud-elasticsearch-operator/src/main/java/de/ozgcloud/operator/OzgCloudElasticsearchUpdateControlBuilder.java
@@ -69,7 +69,8 @@ class OzgCloudElasticsearchUpdateControlBuilder {
 	}
 
 	private OzgCloudElasticsearchCustomResourceStatus buildElasticCustomResourceStatus() {
-		var userStatus = OzgCloudElasticsearchCustomResourceStatus.builder().status(status);
+		var userStatus = OzgCloudElasticsearchCustomResourceStatus.builder().status(status)
+				.observedGeneration(resource.getMetadata().getGeneration());
 		message.ifPresent(userStatus::message);
 
 		return userStatus.build();
@@ -77,8 +78,8 @@ class OzgCloudElasticsearchUpdateControlBuilder {
 
 	private UpdateControl<OzgCloudElasticsearchCustomResource> buildUpdateControl() {
 		if (reschedule) {
-			return UpdateControl.updateStatus(resource).rescheduleAfter(scheduleDuration);
+			return UpdateControl.patchResourceAndStatus(resource).rescheduleAfter(scheduleDuration);
 		}
-		return UpdateControl.updateStatus(resource);
+		return UpdateControl.patchResourceAndStatus(resource);
 	}
 }
diff --git a/ozgcloud-elasticsearch-operator/src/test/java/de/ozgcloud/operator/ElasticsearchReconcilerTest.java b/ozgcloud-elasticsearch-operator/src/test/java/de/ozgcloud/operator/ElasticsearchReconcilerTest.java
index 904ead4d747afec3409b795556bcb76f7441ff3f..9185d001aa8cdd49058dfa8feedc15f72d8839c0 100644
--- a/ozgcloud-elasticsearch-operator/src/test/java/de/ozgcloud/operator/ElasticsearchReconcilerTest.java
+++ b/ozgcloud-elasticsearch-operator/src/test/java/de/ozgcloud/operator/ElasticsearchReconcilerTest.java
@@ -155,14 +155,14 @@ class ElasticsearchReconcilerTest {
 			void shouldContainResource() {
 				var updateControl = buildExceptionUpdateControl();
 
-				assertThat(updateControl.getResource()).isEqualTo(resource);
+				assertThat(updateControl.getResource().get()).isEqualTo(resource);
 			}
 
 			@Test
 			void shouldContainUpdateStatus() {
 				var updateControl = buildExceptionUpdateControl();
 
-				assertThat(updateControl.getResource().getStatus().getStatus()).isEqualTo(CustomResourceStatus.ERROR);
+				assertThat(updateControl.getResource().get().getStatus().getStatus()).isEqualTo(CustomResourceStatus.ERROR);
 			}
 
 			@Test
@@ -176,7 +176,7 @@ class ElasticsearchReconcilerTest {
 			void shouldContainMessage() {
 				var updateControl = buildExceptionUpdateControl();
 
-				assertThat(updateControl.getResource().getStatus().getMessage()).isEqualTo(EXCEPTION_MESSAGE);
+				assertThat(updateControl.getResource().get().getStatus().getMessage()).isEqualTo(EXCEPTION_MESSAGE);
 			}
 
 			private UpdateControl<OzgCloudElasticsearchCustomResource> buildExceptionUpdateControl() {
diff --git a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/client/KeycloakClientReconciler.java b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/client/KeycloakClientReconciler.java
index 178645ecaf6102783e7c93662a9c0c8ecf474824..0be76609e7cc738c5a6c2c98536f0d6a3daac10d 100644
--- a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/client/KeycloakClientReconciler.java
+++ b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/client/KeycloakClientReconciler.java
@@ -63,19 +63,19 @@ public class KeycloakClientReconciler implements Reconciler<OzgCloudKeycloakClie
 		} catch (Exception e) {
 			LOG.error(resource.getMetadata().getName() + " could not reconcile in namespace " + resource.getMetadata().getNamespace(), e);
 			resource.setStatus(OzgCloudKeycloakClientStatus.builder().status(OzgCloudCustomResourceStatus.ERROR).message(e.getMessage()).build());
-			return UpdateControl.updateStatus(resource).rescheduleAfter(Config.RECONCILER_RETRY_SECONDS);
+			return UpdateControl.patchResourceAndStatus(resource).rescheduleAfter(Config.RECONCILER_RETRY_SECONDS);
 		}
 	}
 
 	private UpdateControl<OzgCloudKeycloakClient> buildStatusOk(OzgCloudKeycloakClient resource) {
 		resource.setStatus(OzgCloudKeycloakClientStatus.builder().status(OzgCloudCustomResourceStatus.OK).message(null).build());
-		return UpdateControl.updateStatus(resource);
+		return UpdateControl.patchResourceAndStatus(resource);
 	}
 
 	private UpdateControl<OzgCloudKeycloakClient> buildStatusInProgress(OzgCloudKeycloakClient resource, String errorMessage) {
 		LOG.info("{} could not yet reconcile in namespace {}: {}", resource.getMetadata().getName(), resource.getMetadata().getNamespace(),
 				errorMessage);
 		resource.setStatus(OzgCloudKeycloakClientStatus.builder().status(OzgCloudCustomResourceStatus.IN_PROGRESS).message(errorMessage).build());
-		return UpdateControl.updateStatus(resource).rescheduleAfter(Config.RECONCILER_RETRY_SECONDS);
+		return UpdateControl.patchResourceAndStatus(resource).rescheduleAfter(Config.RECONCILER_RETRY_SECONDS);
 	}
 }
diff --git a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/client/OzgCloudKeycloakClientStatus.java b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/client/OzgCloudKeycloakClientStatus.java
index 56c6f8ad92ad10815f4b6a029c87ef97bfd88610..5aaf7abcf2e1973fa9789ccd44dcdbe550bf1261 100644
--- a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/client/OzgCloudKeycloakClientStatus.java
+++ b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/client/OzgCloudKeycloakClientStatus.java
@@ -39,8 +39,7 @@ import lombok.Setter;
 @AllArgsConstructor
 @JsonIgnoreProperties(ignoreUnknown = true)
 class OzgCloudKeycloakClientStatus {
-
+	private Long observedGeneration;
 	private OzgCloudCustomResourceStatus status;
-
 	private String message;
 }
diff --git a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/group/KeycloakGroupReconciler.java b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/group/KeycloakGroupReconciler.java
index c7ad20e19de8670ddd0094be35650e24730278f1..6c0f7938566db11255ce636bab9e8c24b82e7f63 100644
--- a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/group/KeycloakGroupReconciler.java
+++ b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/group/KeycloakGroupReconciler.java
@@ -62,19 +62,19 @@ public class KeycloakGroupReconciler implements Reconciler<OzgCloudKeycloakGroup
 		} catch (Exception e) {
 			LOG.warn(resource.getMetadata().getName() + " could not reconcile in namespace " + resource.getMetadata().getNamespace(), e);
 			resource.setStatus(OzgCloudKeycloakGroupStatus.builder().status(OzgCloudCustomResourceStatus.ERROR).message(e.getMessage()).build());
-			return UpdateControl.updateStatus(resource).rescheduleAfter(Config.RECONCILER_RETRY_SECONDS);
+			return UpdateControl.patchResourceAndStatus(resource).rescheduleAfter(Config.RECONCILER_RETRY_SECONDS);
 		}
 	}
 
 	private UpdateControl<OzgCloudKeycloakGroup> buildStatusOk(OzgCloudKeycloakGroup resource) {
 		resource.setStatus(OzgCloudKeycloakGroupStatus.builder().status(OzgCloudCustomResourceStatus.OK).message(null).build());
-		return UpdateControl.updateStatus(resource);
+		return UpdateControl.patchResourceAndStatus(resource);
 	}
 
 	private UpdateControl<OzgCloudKeycloakGroup> buildStatusInProgress(OzgCloudKeycloakGroup resource, String errorMessage) {
 		LOG.warn("{} could not yet reconcile group in namespace {}: {}", resource.getMetadata().getName(), resource.getMetadata().getNamespace(),
 				errorMessage);
 		resource.setStatus(OzgCloudKeycloakGroupStatus.builder().status(OzgCloudCustomResourceStatus.IN_PROGRESS).message(errorMessage).build());
-		return UpdateControl.updateStatus(resource).rescheduleAfter(Config.RECONCILER_RETRY_SECONDS);
+		return UpdateControl.patchResourceAndStatus(resource).rescheduleAfter(Config.RECONCILER_RETRY_SECONDS);
 	}
 }
\ No newline at end of file
diff --git a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconciler.java b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconciler.java
index 3f2e8fefffbf1018db4c41271640e841410a0c0a..96d75914ed1f932699358839a6f8f3d371c6f30e 100644
--- a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconciler.java
+++ b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconciler.java
@@ -52,13 +52,15 @@ public class KeycloakRealmReconciler implements Reconciler<OzgCloudKeycloakRealm
 
 			service.createOrUpdateRealm(resource.getSpec(), realmName);
 
-			resource.setStatus(OzgCloudKeycloakRealmStatus.builder().status(OzgCloudCustomResourceStatus.OK).message(null).build());
-			return UpdateControl.updateStatus(resource);
+			resource.setStatus(OzgCloudKeycloakRealmStatus.builder().status(OzgCloudCustomResourceStatus.OK).message(null)
+					.observedGeneration(resource.getMetadata().getGeneration())
+					.build());
+			return UpdateControl.patchResourceAndStatus(resource);
 
 		} catch (Exception e) {
 			LOG.warn(resource.getMetadata().getName() + " could not reconcile in namespace " + resource.getMetadata().getNamespace(), e);
 			resource.setStatus(OzgCloudKeycloakRealmStatus.builder().status(OzgCloudCustomResourceStatus.ERROR).message(e.getMessage()).build());
-			return UpdateControl.updateStatus(resource).rescheduleAfter(Config.RECONCILER_RETRY_SECONDS);
+			return UpdateControl.patchResourceAndStatus(resource).rescheduleAfter(Config.RECONCILER_RETRY_SECONDS);
 		}
 	}
 
diff --git a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/OzgCloudKeycloakRealmStatus.java b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/OzgCloudKeycloakRealmStatus.java
index 9b3a40c131e281d76590f45cfbbd79efa7a05ff3..924f30cb28828a84c76cbde011414e7d44d36a11 100644
--- a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/OzgCloudKeycloakRealmStatus.java
+++ b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/OzgCloudKeycloakRealmStatus.java
@@ -39,8 +39,7 @@ import lombok.Setter;
 @AllArgsConstructor
 @JsonIgnoreProperties(ignoreUnknown = true)
 class OzgCloudKeycloakRealmStatus {
-
+	private Long observedGeneration;
 	private OzgCloudCustomResourceStatus status;
-
 	private String message;
 }
diff --git a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/user/OzgCloudKeycloakUserStatus.java b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/user/OzgCloudKeycloakUserStatus.java
index a57162fe0d95f1c76cb8fdac4b378f8f1699023f..fa03102c0ea43d3a3052bb2fff554aae02090779 100644
--- a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/user/OzgCloudKeycloakUserStatus.java
+++ b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/user/OzgCloudKeycloakUserStatus.java
@@ -26,7 +26,6 @@ package de.ozgcloud.operator.keycloak.user;
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 
 import de.ozgcloud.operator.keycloak.OzgCloudCustomResourceStatus;
-import io.javaoperatorsdk.operator.api.ObservedGenerationAwareStatus;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Getter;
@@ -39,9 +38,8 @@ import lombok.Setter;
 @NoArgsConstructor
 @AllArgsConstructor
 @JsonIgnoreProperties(ignoreUnknown = true)
-class OzgCloudKeycloakUserStatus extends ObservedGenerationAwareStatus {
-
+class OzgCloudKeycloakUserStatus {
+	private Long observedGeneration;
 	private OzgCloudCustomResourceStatus status;
-
 	private String message;
 }
diff --git a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/user/UserUpdateControlBuilder.java b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/user/UserUpdateControlBuilder.java
index 9ca47e07146ffbe768d923604a2b89199831c8f5..0301c7fcd7040daf43230c9d8de8524ad6f5f496 100644
--- a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/user/UserUpdateControlBuilder.java
+++ b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/user/UserUpdateControlBuilder.java
@@ -70,7 +70,7 @@ class UserUpdateControlBuilder {
 	}
 
 	private OzgCloudKeycloakUserStatus buildOzgCloudKeycloakUserStatus() {
-		var userStatus = OzgCloudKeycloakUserStatus.builder().status(status);
+		var userStatus = OzgCloudKeycloakUserStatus.builder().status(status).observedGeneration(resource.getMetadata().getGeneration());
 		message.ifPresent(userStatus::message);
 
 		return userStatus.build();
@@ -78,8 +78,8 @@ class UserUpdateControlBuilder {
 
 	private UpdateControl<OzgCloudKeycloakUser> buildUpdateControl() {
 		if (reschedule) {
-			return UpdateControl.updateStatus(resource).rescheduleAfter(scheduleDuration);
+			return UpdateControl.patchResourceAndStatus(resource).rescheduleAfter(scheduleDuration);
 		}
-		return UpdateControl.updateStatus(resource);
+		return UpdateControl.patchResourceAndStatus(resource);
 	}
 }
diff --git a/ozgcloud-keycloak-operator/src/main/resources/application.yml b/ozgcloud-keycloak-operator/src/main/resources/application.yml
index 16145789ecb0afaee2cbd8aa7053f7e3dba9f377..34d078e11545e748a8e7e2e2e1c4d8977e40c03b 100644
--- a/ozgcloud-keycloak-operator/src/main/resources/application.yml
+++ b/ozgcloud-keycloak-operator/src/main/resources/application.yml
@@ -1,4 +1,6 @@
-
+logging:
+  level:
+    ROOT: WARN
 management:
   server:
     port: 8081
diff --git a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/client/KeycloakClientReconcilerTest.java b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/client/KeycloakClientReconcilerTest.java
index a7ddbd8a018a013041cb8c45bc3fae3edd8d657a..8e8b45879b2fee7fff56e2d117e15288a8f756bc 100644
--- a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/client/KeycloakClientReconcilerTest.java
+++ b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/client/KeycloakClientReconcilerTest.java
@@ -74,7 +74,7 @@ class KeycloakClientReconcilerTest {
 		void shouldSetStatusOk() {
 			var response = reconciler.reconcile(OzgCloudKeycloakClientTestFactory.create(), null);
 
-			assertThat(response.getResource().getStatus().getStatus()).isEqualTo(OzgCloudCustomResourceStatus.OK);
+			assertThat(response.getResource().get().getStatus().getStatus()).isEqualTo(OzgCloudCustomResourceStatus.OK);
 		}
 
 		@Test
@@ -83,7 +83,7 @@ class KeycloakClientReconcilerTest {
 
 			var response = reconciler.reconcile(OzgCloudKeycloakClientTestFactory.create(), null);
 
-			assertThat(response.getResource().getStatus().getStatus()).isEqualTo(OzgCloudCustomResourceStatus.IN_PROGRESS);
+			assertThat(response.getResource().get().getStatus().getStatus()).isEqualTo(OzgCloudCustomResourceStatus.IN_PROGRESS);
 		}
 	}
 }
diff --git a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/group/KeycloakGroupReconcilerTest.java b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/group/KeycloakGroupReconcilerTest.java
index bb568f7c430b6a2130dfe330331922a77d318356..e7390c7cf80ae3038bb847b4c4e850e7ae8d25ad 100644
--- a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/group/KeycloakGroupReconcilerTest.java
+++ b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/group/KeycloakGroupReconcilerTest.java
@@ -73,7 +73,7 @@ class KeycloakGroupReconcilerTest {
 		void shouldSetStatusOk() {
 			var response = reconciler.reconcile(KEYCLOAK_GROUP, null);
 
-			assertThat(response.getResource().getStatus().getStatus()).isEqualTo(OzgCloudCustomResourceStatus.OK);
+			assertThat(response.getResource().get().getStatus().getStatus()).isEqualTo(OzgCloudCustomResourceStatus.OK);
 		}
 
 		@Test
@@ -82,7 +82,7 @@ class KeycloakGroupReconcilerTest {
 
 			var response = reconciler.reconcile(KEYCLOAK_GROUP, null);
 
-			assertThat(response.getResource().getStatus().getStatus()).isEqualTo(OzgCloudCustomResourceStatus.IN_PROGRESS);
+			assertThat(response.getResource().get().getStatus().getStatus()).isEqualTo(OzgCloudCustomResourceStatus.IN_PROGRESS);
 		}
 	}
 }
diff --git a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconcilerTest.java b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconcilerTest.java
index 986de5307e05a9623af7c47ba6fa1fc4abee26d3..bf3848c600f1266c065782f5479a128c55a0eafb 100644
--- a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconcilerTest.java
+++ b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconcilerTest.java
@@ -73,7 +73,7 @@ class KeycloakRealmReconcilerTest {
 		void shouldSetStatusOk() {
 			var response = reconciler.reconcile(OzgCloudKeycloakRealmTestFactory.create(), null);
 
-			assertThat(response.getResource().getStatus().getStatus()).isEqualTo(OzgCloudCustomResourceStatus.OK);
+			assertThat(response.getResource().get().getStatus().getStatus()).isEqualTo(OzgCloudCustomResourceStatus.OK);
 		}
 
 	}
diff --git a/pom.xml b/pom.xml
index 573bdde4a9193ee25f71d077a38221cd3388c2d2..c252a0a093496f6d03eba2244402e0301a09d917 100644
--- a/pom.xml
+++ b/pom.xml
@@ -30,7 +30,7 @@
 	<parent>
 		<groupId>de.ozgcloud.common</groupId>
 		<artifactId>ozgcloud-common-parent</artifactId>
-		<version>4.9.0</version>
+		<version>4.11.0</version>
 	</parent>
 
 	<groupId>de.ozgcloud</groupId>
@@ -48,7 +48,7 @@
 	</modules>
 
 	<properties>
-		<operator-sdk.version>5.6.0</operator-sdk.version>
+		<operator-sdk.version>6.0.0</operator-sdk.version>
 
 		<!-- tools -->
 		<reflections.version>0.10.2</reflections.version>