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 c17da17a68ff9510cbd0a20831847e13df594b56..81de63995e71d8a25b4daf159964b07bcde0a8f2 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
@@ -26,6 +26,7 @@ package de.ozgcloud.operator.keycloak.realm;
 import org.springframework.stereotype.Component;
 
 import de.ozgcloud.operator.Config;
+import de.ozgcloud.operator.keycloak.KeycloakGenericRemoteService;
 import de.ozgcloud.operator.keycloak.OzgCloudCustomResourceStatus;
 import io.javaoperatorsdk.operator.api.reconciler.Cleaner;
 import io.javaoperatorsdk.operator.api.reconciler.Context;
@@ -43,6 +44,7 @@ import lombok.extern.log4j.Log4j2;
 public class KeycloakRealmReconciler implements Reconciler<OzgCloudKeycloakRealm>, Cleaner<OzgCloudKeycloakRealm> {
 
 	private final KeycloakRealmService service;
+	private final KeycloakGenericRemoteService keycloakGenericRemoteService;
 
 	@Override
 	public UpdateControl<OzgCloudKeycloakRealm> reconcile(OzgCloudKeycloakRealm resource, Context<OzgCloudKeycloakRealm> context) {
@@ -69,6 +71,9 @@ public class KeycloakRealmReconciler implements Reconciler<OzgCloudKeycloakRealm
 			LOG.info("keep data");
 			return DeleteControl.defaultDelete();
 		}
+		if (!keycloakGenericRemoteService.realmExists(realm.getMetadata().getName())) {
+			return DeleteControl.defaultDelete();
+		}
 		return deleteRealm(realm);
 	}
 
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 06e758f079a0e46cf2b1ceba00381683a700258f..d2c2d8b06b1a0638cea9228496b6066f918fa70d 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
@@ -24,6 +24,7 @@
 package de.ozgcloud.operator.keycloak.realm;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
@@ -37,6 +38,7 @@ import org.mockito.Mock;
 import org.mockito.Spy;
 
 import de.ozgcloud.operator.Config;
+import de.ozgcloud.operator.keycloak.KeycloakGenericRemoteService;
 import de.ozgcloud.operator.keycloak.OzgCloudCustomResourceStatus;
 import io.javaoperatorsdk.operator.api.reconciler.DeleteControl;
 
@@ -49,17 +51,22 @@ class KeycloakRealmReconcilerTest {
 	@Mock
 	private KeycloakRealmService service;
 
+	@Mock
+	private KeycloakGenericRemoteService keycloakGenericRemoteService;
+
+	private final String REALM = OzgCloudKeycloakRealmTestFactory.METADATA_NAMESPACE;
+
 	@DisplayName("Reconcile")
 	@Nested
 	class TestReconcile {
-
+		
 		@Test
 		void shouldCallServiceCreateOrUpdateRealm() {
 			OzgCloudKeycloakRealm realm = OzgCloudKeycloakRealmTestFactory.create();
 
 			reconciler.reconcile(realm, null);
 
-			verify(service).createOrUpdateRealm(realm.getSpec(), OzgCloudKeycloakRealmTestFactory.METADATA_NAMESPACE);
+			verify(service).createOrUpdateRealm(realm.getSpec(), REALM);
 		}
 
 		@Test
@@ -93,7 +100,7 @@ class KeycloakRealmReconcilerTest {
 			void shouldNotCallService() {
 				reconciler.cleanup(realm, null);
 
-				verify(service, never()).deleteRealm(OzgCloudKeycloakRealmTestFactory.METADATA_NAMESPACE);
+				verify(service, never()).deleteRealm(REALM);
 			}
 
 			@Test
@@ -111,21 +118,38 @@ class KeycloakRealmReconcilerTest {
 			private final OzgCloudKeycloakRealm realm = OzgCloudKeycloakRealmTestFactory.create();
 
 			@Test
-			void shouldCallDeleteRealm() {
+			void shouldDeleteRealmIfRealmExists() {
+				when(keycloakGenericRemoteService.realmExists(any())).thenReturn(true);
 				reconciler.cleanup(realm, null);
 
 				verify(reconciler).deleteRealm(realm);
 			}
 
 			@Test
-			void shouldReturnValueFromDeleteUser() {
+			void shouldReturnValueFromDeleteRealm() {
 				DeleteControl expected = DeleteControl.defaultDelete();
 				when(reconciler.deleteRealm(realm)).thenReturn(expected);
+				when(keycloakGenericRemoteService.realmExists(any())).thenReturn(true);
 
 				DeleteControl response = reconciler.cleanup(realm, null);
 
 				assertThat(response).isEqualTo(expected);
 			}
+			@Test
+			void shouldCallRealmExists() {
+				reconciler.cleanup(realm, null);
+
+				verify(keycloakGenericRemoteService).realmExists(null);
+			}
+
+			@Test
+			void shouldNotDeleteRealmIfRealmNotExists() {
+				when(keycloakGenericRemoteService.realmExists(any())).thenReturn(false);
+
+				reconciler.cleanup(realm, null);
+
+				verify(reconciler, never()).deleteRealm(realm);
+			}
 		}
 
 		@DisplayName("test delete")
@@ -138,7 +162,7 @@ class KeycloakRealmReconcilerTest {
 			void shouldCallServiceDelete() {
 				reconciler.deleteRealm(realm);
 
-				verify(service).deleteRealm(OzgCloudKeycloakRealmTestFactory.METADATA_NAMESPACE);
+				verify(service).deleteRealm(REALM);
 			}
 
 			@Test
@@ -151,7 +175,7 @@ class KeycloakRealmReconcilerTest {
 			@Test
 			void shouldRescheduleOnError() {
 				doThrow(RuntimeException.class).when(service)
-						.deleteRealm(OzgCloudKeycloakRealmTestFactory.METADATA_NAMESPACE);
+						.deleteRealm(REALM);
 
 				var control = reconciler.deleteRealm(realm);