diff --git a/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconciler.java b/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconciler.java
index eb935aa0c85d58745e312f0ee630e8689e8d91c3..4dc6903f855b85d0d91bf4646151cdc0aa412b9f 100644
--- a/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconciler.java
+++ b/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconciler.java
@@ -70,16 +70,19 @@ public class KeycloakRealmReconciler implements Reconciler<OzgKeycloakRealm>, Cl
 	}
 
 	@Override
-	public DeleteControl cleanup(OzgKeycloakRealm resource, Context<OzgKeycloakRealm> context) {
-
-		String realmName = resource.getMetadata().getNamespace();
+	public DeleteControl cleanup(OzgKeycloakRealm realm, Context<OzgKeycloakRealm> context) {
+		log.info("Realm reconciler, keep after delete is set to: " + realm.getSpec().isKeepAfterDelete());
+		if (realm.getSpec().isKeepAfterDelete()) {
+			return DeleteControl.defaultDelete();
+		}
+		return cleanup(realm);
+	}
 
+	DeleteControl cleanup(OzgKeycloakRealm realm) {
+		var realmName = realm.getMetadata().getNamespace();
 		try {
-
 			log.info("Deleting KeycloakRealm " + realmName);
-
 			service.deleteRealm(realmName);
-
 			return DeleteControl.defaultDelete();
 		} catch (Exception e) {
 			log.log(Level.SEVERE, "Could not delete KeycloakRealm " + realmName, e);
diff --git a/src/main/java/de/ozgcloud/operator/keycloak/realm/OzgKeycloakRealmSpec.java b/src/main/java/de/ozgcloud/operator/keycloak/realm/OzgKeycloakRealmSpec.java
index 6d5fdeaaa5fe8a02db8fcc3388474f1b0202940e..a3cd548780de7a5f7d6ab934fe100b6f5a4fa4de 100644
--- a/src/main/java/de/ozgcloud/operator/keycloak/realm/OzgKeycloakRealmSpec.java
+++ b/src/main/java/de/ozgcloud/operator/keycloak/realm/OzgKeycloakRealmSpec.java
@@ -24,6 +24,7 @@
 package de.ozgcloud.operator.keycloak.realm;
 
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
 
 import lombok.AllArgsConstructor;
 import lombok.Builder;
@@ -39,5 +40,8 @@ import lombok.Setter;
 @JsonIgnoreProperties(ignoreUnknown = true)
 class OzgKeycloakRealmSpec {
 
+	@JsonProperty("keep_after_delete")
+	private boolean keepAfterDelete;
+
 	private String displayName;
 }
diff --git a/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconcilerTest.java b/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconcilerTest.java
index 87b0020866b39895d02917345cda18d730d8159c..0dc7d458a9d6b86babd1e0ae01de1e84ace55373 100644
--- a/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconcilerTest.java
+++ b/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconcilerTest.java
@@ -26,6 +26,7 @@ package de.ozgcloud.operator.keycloak.realm;
 import static org.assertj.core.api.Assertions.*;
 import static org.mockito.Mockito.*;
 
+import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.mockito.InjectMocks;
@@ -33,6 +34,7 @@ import org.mockito.Mock;
 import org.mockito.Spy;
 
 import de.ozgcloud.operator.keycloak.OzgCustomResourceStatus;
+import io.javaoperatorsdk.operator.api.reconciler.DeleteControl;
 
 class KeycloakRealmReconcilerTest {
 
@@ -43,6 +45,7 @@ class KeycloakRealmReconcilerTest {
 	@Mock
 	private KeycloakRealmService service;
 
+	@DisplayName("Reconcile")
 	@Nested
 	class TestReconcile {
 
@@ -70,14 +73,37 @@ class KeycloakRealmReconcilerTest {
 		}
 	}
 
+	@DisplayName("Cleanup")
 	@Nested
-	class TestDelete {
+	class TestCleanup {
+
+		@DisplayName("with keep_after_delete")
+		@Nested
+		class TestWithKeepAfterDelete {
+
+			private final OzgKeycloakRealmSpec realmSpec = OzgKeycloakRealmSpecTestFactory.createBuilder().keepAfterDelete(true).build();
+			private final OzgKeycloakRealm realm = OzgKeycloakRealmTestFactory.create(realmSpec);
+
+			@Test
+			void shouldNotCallService() {
+				reconciler.cleanup(realm, null);
+
+				verify(service, never()).deleteRealm(OzgKeycloakRealmTestFactory.METADATA_NAMESPACE);
+			}
+
+			@Test
+			void shouldReturnDeleteControl() {
+				var control = reconciler.cleanup(realm, null);
+
+				assertThat(control).usingRecursiveComparison().isEqualTo(DeleteControl.defaultDelete());
+			}
+		}
 
 		@Test
 		void shouldCallServiceDelete() {
-			OzgKeycloakRealm realm = OzgKeycloakRealmTestFactory.create();
+			var realm = OzgKeycloakRealmTestFactory.create();
 
-			reconciler.cleanup(realm, null);
+			reconciler.cleanup(realm);
 
 			verify(service).deleteRealm(OzgKeycloakRealmTestFactory.METADATA_NAMESPACE);
 		}
diff --git a/src/test/java/de/ozgcloud/operator/keycloak/realm/OzgKeycloakRealmSpecTestFactory.java b/src/test/java/de/ozgcloud/operator/keycloak/realm/OzgKeycloakRealmSpecTestFactory.java
index 5918054dbd3a1c40906b5bface1dd30c7c082d56..52063fb17a6f1465f3a38cab0af5ffc8520628f1 100644
--- a/src/test/java/de/ozgcloud/operator/keycloak/realm/OzgKeycloakRealmSpecTestFactory.java
+++ b/src/test/java/de/ozgcloud/operator/keycloak/realm/OzgKeycloakRealmSpecTestFactory.java
@@ -26,6 +26,7 @@ package de.ozgcloud.operator.keycloak.realm;
 public class OzgKeycloakRealmSpecTestFactory {
 
 	public final static String DISPLAY_NAME = "TestDisplayName";
+	public final static boolean KEEP_AFTER_DELETE = false;
 
 	public static OzgKeycloakRealmSpec create() {
 		return createBuilder().build();
@@ -33,6 +34,7 @@ public class OzgKeycloakRealmSpecTestFactory {
 
 	public static OzgKeycloakRealmSpec.OzgKeycloakRealmSpecBuilder createBuilder() {
 		return OzgKeycloakRealmSpec.builder()
+				.keepAfterDelete(KEEP_AFTER_DELETE)
 				.displayName(DISPLAY_NAME);
 	}
 }
diff --git a/src/test/java/de/ozgcloud/operator/keycloak/realm/OzgKeycloakRealmTestFactory.java b/src/test/java/de/ozgcloud/operator/keycloak/realm/OzgKeycloakRealmTestFactory.java
index e23492a96a0eb9e9baac13c146e5b3c6442988aa..08df37af33ce01660554ce49115646d855b38c07 100644
--- a/src/test/java/de/ozgcloud/operator/keycloak/realm/OzgKeycloakRealmTestFactory.java
+++ b/src/test/java/de/ozgcloud/operator/keycloak/realm/OzgKeycloakRealmTestFactory.java
@@ -28,8 +28,16 @@ public class OzgKeycloakRealmTestFactory {
 	public static final String METADATA_NAMESPACE = "TestNamespace";
 
 	public static OzgKeycloakRealm create() {
+		return createWithSpec(OzgKeycloakRealmSpecTestFactory.create());
+	}
+
+	public static OzgKeycloakRealm create(OzgKeycloakRealmSpec spec) {
+		return createWithSpec(spec);
+	}
+
+	private static OzgKeycloakRealm createWithSpec(OzgKeycloakRealmSpec spec) {
 		var realm = new OzgKeycloakRealm();
-		realm.setSpec(OzgKeycloakRealmSpecTestFactory.create());
+		realm.setSpec(spec);
 		realm.setStatus(OzgKeycloakRealmStatusTestFactory.create());
 		realm.getMetadata().setNamespace(METADATA_NAMESPACE);