diff --git a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapper.java b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapper.java
index 1c93aa31cc071537b9109ae9d30c752cb32b7c4c..177747c34358e19236fa2483ba064f105e6f6736 100644
--- a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapper.java
+++ b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapper.java
@@ -56,6 +56,7 @@ interface KeycloakRealmMapper {
 	@Mapping(target = "actionTokenGeneratedByUserLifespan", constant = ACTION_TOKEN_GENERATED_BY_USER_LIFE_SPAN)
 	@Mapping(target = "smtpServer", source = "smtpServer", qualifiedByName = "smtpServer")
 	@Mapping(target = "roles.realm", source = "realmRoles")
+	@Mapping(target = "loginTheme", source = ".", qualifiedByName = "bundeslandToTheme")
 	public RealmRepresentation map(OzgCloudKeycloakRealmSpec realm);
 
 	@Mapping(target = "enabled", constant = ENABLED)
@@ -67,11 +68,15 @@ interface KeycloakRealmMapper {
 	@Mapping(target = "actionTokenGeneratedByUserLifespan", constant = ACTION_TOKEN_GENERATED_BY_USER_LIFE_SPAN)
 	@Mapping(target = "smtpServer", source = "smtpServer", qualifiedByName = "smtpServer")
 	@Mapping(target = "roles.realm", source = "realmRoles")
+	@Mapping(target = "loginTheme", source = ".", qualifiedByName = "bundeslandToTheme")
 	RealmRepresentation update(@MappingTarget RealmRepresentation existingRealm, OzgCloudKeycloakRealmSpec spec);
 
 	@Mapping(target = "name", source = "name")
 	RoleRepresentation map(OzgCloudKeycloakRealmSpec.RealmRole role);
 
+	@Named("bundeslandToTheme")
+	default String mapBundeslandToTheme(OzgCloudKeycloakRealmSpec spec) { return "ozg-" + spec.getBundesland(); }
+
 	@Named("supportedLocales")
 	default Set<String> mapPassword(OzgCloudKeycloakRealmSpec spec) {
 		return Set.of("de");
diff --git a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmService.java b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmService.java
index 43cff3483a19f89dfa29d55916a155e5fdbfd411..6eb9892724db1493d2b88b222e673647bbbd83e9 100644
--- a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmService.java
+++ b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmService.java
@@ -25,10 +25,7 @@ package de.ozgcloud.operator.keycloak.realm;
 
 import java.util.Optional;
 import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 
-import org.apache.commons.lang3.StringUtils;
 import org.keycloak.representations.idm.RealmRepresentation;
 import org.keycloak.representations.userprofile.config.UPAttribute;
 import org.keycloak.representations.userprofile.config.UPAttributePermissions;
@@ -45,8 +42,6 @@ import lombok.extern.log4j.Log4j2;
 class KeycloakRealmService {
 
 	public static final String USER_PROFILE_CONFIG_OZGCLOUD_ATTRIBUTE_NAME = "ozgCloudUserId";
-	public static final String LOGIN_THEME_PREFIX = "ozg-";
-	public static final Pattern STANDARD_OZGCLOUD_NAMESPACE_PATTERN = Pattern.compile("^([a-zA-Z]{2})-.*$");
 
 	private final KeycloakRealmRemoteService remoteService;
 
@@ -65,7 +60,6 @@ class KeycloakRealmService {
 		try {
 			LOG.debug("{}: Updating existing realm...", existingRealm);
 			var realmRepresentation = mapper.update(existingRealm, spec);
-			addRealmTheme(realmRepresentation);
 			remoteService.updateRealm(realmRepresentation);
 			addUserProfileAttributes(realmRepresentation);
 		} catch (Exception e) {
@@ -79,7 +73,6 @@ class KeycloakRealmService {
 		Optional.of(realm)
 				.map(mapper::map)
 				.map(realmRepresentation -> addRealmName(realmRepresentation, realmName))
-				.map(realmRepresentation -> addRealmTheme(realmRepresentation))
 				.ifPresent(realmRepresentation -> {
 					remoteService.createRealm(realmRepresentation);
 					addUserProfileAttributes(realmRepresentation);
@@ -99,33 +92,6 @@ class KeycloakRealmService {
 		return realm;
 	}
 
-	RealmRepresentation addRealmTheme(RealmRepresentation realm) {
-		if (realm == null || StringUtils.isEmpty(realm.getRealm())) {
-			LOG.warn("Realm has no valid value to resolve theme");
-		} else {
-			String realmName = realm.getRealm();
-			realm.setLoginTheme(createRealmLoginThemeName(getBundesland(realmName)));
-		}
-		return realm;
-	}
-
-	String getBundesland(String realmName) {
-		if (realmName != null) {
-			Matcher matcher = STANDARD_OZGCLOUD_NAMESPACE_PATTERN.matcher(realmName);
-			if (matcher.matches()) {
-				return matcher.group(1);
-			}
-		}
-		return "";
-	}
-
-	String createRealmLoginThemeName(String bundesland) {
-		if (!StringUtils.isEmpty(bundesland)) {
-			return LOGIN_THEME_PREFIX + bundesland;
-		}
-		return "";
-	}
-
 	public void deleteRealm(String realmName) {
 		remoteService.deleteRealm(realmName);
 	}
diff --git a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/OzgCloudKeycloakRealmSpec.java b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/OzgCloudKeycloakRealmSpec.java
index d1332813f2dbe03f85a71f075a34eed4ceb230c0..b3d1eef6e0c05bc13991878ba5bc7120995849a0 100644
--- a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/OzgCloudKeycloakRealmSpec.java
+++ b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/OzgCloudKeycloakRealmSpec.java
@@ -48,6 +48,8 @@ class OzgCloudKeycloakRealmSpec {
 
 	private String displayName;
 
+	private String bundesland;
+
 	private KeycloakRealmSMTPServer smtpServer;
 
 	@Getter
diff --git a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapperTest.java b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapperTest.java
index bd951e01b9d51919cc258b7b5316589c18a0cc99..80cb9c1f3b97225a99f41d7de4d3120f8d801fee 100644
--- a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapperTest.java
+++ b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapperTest.java
@@ -78,6 +78,13 @@ class KeycloakRealmMapperTest {
 		assertThat(mapped.getDefaultLocale()).isEqualTo("de");
 	}
 
+	@Test
+	void shouldHaveLoginTheme() {
+		var mapped = mapRealm();
+
+		assertThat(mapped.getLoginTheme()).isEqualTo("ozg-sh");
+	}
+
 	@Test
 	void shouldBeInternationalizationEnabled() {
 		var mapped = mapRealm();
diff --git a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmServiceThemeTest.java b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmServiceThemeTest.java
deleted file mode 100644
index ee49812e321ec42c107249d900147b9636709e64..0000000000000000000000000000000000000000
--- a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmServiceThemeTest.java
+++ /dev/null
@@ -1,205 +0,0 @@
-package de.ozgcloud.operator.keycloak.realm;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.keycloak.representations.idm.RealmRepresentation;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-public class KeycloakRealmServiceThemeTest {
-
-	public static final LoremIpsum LOREM_IPSUM = LoremIpsum.getInstance();
-	private static final String TARGET_BUNDESLAND = "by";
-	private static final String BUNDESLAND_NAMESPACE_NAME = TARGET_BUNDESLAND + "-" + LOREM_IPSUM.getWords(1);
-	private static final String RESOLVED_THEME_NAME = "ozg-" + TARGET_BUNDESLAND;
-
-	@Spy
-	@InjectMocks
-	private KeycloakRealmService service;
-
-	@Mock
-	private KeycloakRealmRemoteService remoteService;
-
-	@Mock
-	private KeycloakRealmMapper mapper;
-
-	private RealmRepresentation realm;
-
-	private final OzgCloudKeycloakRealmSpec spec = OzgCloudKeycloakRealmSpecTestFactory.create();
-
-	public static final String REALM_FIELD_LOGIN_THEME = "loginTheme";
-
-	@Nested
-	class CreateRealmWithThemeTest {
-
-		@Test
-		void shouldCreateRealmUseAddTheme() {
-			prepareMocksWithRealm(BUNDESLAND_NAMESPACE_NAME);
-
-			callCreateRealm(BUNDESLAND_NAMESPACE_NAME);
-
-			verify(service).addRealmTheme(realm);
-		}
-
-		@Test
-		void shouldRealmHaveTheme() {
-			prepareMocksWithRealm(BUNDESLAND_NAMESPACE_NAME);
-
-			callCreateRealm(BUNDESLAND_NAMESPACE_NAME);
-
-			assertThat(realm).extracting(REALM_FIELD_LOGIN_THEME).isEqualTo(RESOLVED_THEME_NAME);
-		}
-
-		@Test
-		void shouldHaveNoThemeForAnyName(){
-			String nonBundeslandNamespaceName = LOREM_IPSUM.getWords(1);
-			prepareMocksWithRealm(nonBundeslandNamespaceName);
-
-			callCreateRealm(nonBundeslandNamespaceName);
-
-			assertThat(realm).extracting(REALM_FIELD_LOGIN_THEME).isEqualTo("");
-		}
-
-		void prepareMocksWithRealm(String namespaceName) {
-			realm = RealmRepresentationTestFactory.create(namespaceName);
-			when(mapper.map(spec)).thenReturn(realm);
-			doNothing().when(remoteService).createRealm(realm);
-			doNothing().when(service).addUserProfileAttributes(realm);
-		}
-
-		void callCreateRealm(String namespaceName) {
-			service.createRealm(spec, namespaceName);
-		}
-	}
-
-	@Nested
-	class UpdateRealmWithThemeTest {
-		@Test
-		void shouldCallAddRealmTheme() {
-			prepareMocksWithRealm();
-
-			callService();
-
-			verify(service).addRealmTheme(realm);
-		}
-
-		@Test
-		void shouldRealmHaveTheme() {
-			prepareMocksWithRealm();
-
-			callService();
-
-			assertThat(realm).extracting(REALM_FIELD_LOGIN_THEME).isEqualTo(RESOLVED_THEME_NAME);
-		}
-
-		void prepareMocksWithRealm() {
-			realm = RealmRepresentationTestFactory.create(BUNDESLAND_NAMESPACE_NAME);
-			when(mapper.update(realm, spec)).thenReturn(realm);
-			doNothing().when(remoteService).updateRealm(realm);
-			doNothing().when(service).addUserProfileAttributes(realm);
-		}
-
-		void callService() {
-			service.updateRealm(realm, spec);
-		}
-
-	}
-
-	@Nested
-	class CreateThemeTest {
-		@Test
-		void shouldReturnSameObject() {
-			RealmRepresentation mock = mock(RealmRepresentation.class);
-
-			var result = callService(mock);
-
-			assertThat(result).isSameAs(mock);
-		}
-
-		@Test
-		void shouldCallGetBundesland() {
-			realm = RealmRepresentationTestFactory.create(BUNDESLAND_NAMESPACE_NAME);
-
-			callService(realm);
-
-			verify(service).getBundesland(BUNDESLAND_NAMESPACE_NAME);
-		}
-
-		@Test
-		void shouldCallCreateRealmLoginTheme() {
-			realm = RealmRepresentationTestFactory.create(BUNDESLAND_NAMESPACE_NAME);
-
-			callService(realm);
-
-			verify(service).createRealmLoginThemeName(TARGET_BUNDESLAND);
-		}
-
-		RealmRepresentation callService(RealmRepresentation realm) {
-			return service.addRealmTheme(realm);
-		}
-	}
-
-	@Nested
-	class GetBundeslandThemeTest {
-		@Test
-		void shouldReturnTheme() {
-			var result = service.getBundesland(BUNDESLAND_NAMESPACE_NAME);
-
-			assertThat(result).isEqualTo(TARGET_BUNDESLAND);
-		}
-
-		@Test
-		void shouldReturnEmptyThemeIfNull() {
-			var result = service.getBundesland(null);
-
-			assertThat(result).isEqualTo("");
-		}
-
-		@Test
-		void shouldReturnEmptyThemeIfEmpty() {
-			var result = service.getBundesland("");
-
-			assertThat(result).isEqualTo("");
-		}
-
-		@Test
-		void shouldReturnEmptyThemeIfGarbage() {
-			var result = service.getBundesland(LOREM_IPSUM.getWords(20));
-
-			assertThat(result).isEqualTo("");
-		}
-
-	}
-
-	@Nested
-	class CreateRealmLoginThemeNameTest {
-
-		@Test
-		void shouldCreateRealmLoginTheme() {
-			var realmLoginThemeName = service.createRealmLoginThemeName(TARGET_BUNDESLAND);
-
-			assertThat(realmLoginThemeName).isEqualTo(RESOLVED_THEME_NAME);
-		}
-
-		@Test
-		void shouldReturnEmptyThemeIfEmpty() {
-			var realmLoginThemeName = service.createRealmLoginThemeName("");
-
-			assertThat(realmLoginThemeName).isEqualTo("");
-		}
-
-		@Test
-		void shouldReturnEmptyThemeIfNull() {
-			var realmLoginThemeName = service.createRealmLoginThemeName(null);
-
-			assertThat(realmLoginThemeName).isEqualTo("");
-		}
-	}
-
-}
diff --git a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/OzgCloudKeycloakRealmSpecTestFactory.java b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/OzgCloudKeycloakRealmSpecTestFactory.java
index 5c27b298f4f21487701334bbd9f0be3c1ccfd7d1..9d7ec9af90b9b51f08cf44b8987c1f5bb34a146d 100644
--- a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/OzgCloudKeycloakRealmSpecTestFactory.java
+++ b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/OzgCloudKeycloakRealmSpecTestFactory.java
@@ -30,6 +30,7 @@ import de.ozgcloud.operator.keycloak.realm.OzgCloudKeycloakRealmSpec.RealmRole;
 public class OzgCloudKeycloakRealmSpecTestFactory {
 
 	public final static String DISPLAY_NAME = "TestDisplayName";
+	public final static String BUNDESLAND = "sh";
 	public final static boolean KEEP_AFTER_DELETE = false;
 
 	public static final String ROLE_NAME_1 = "RoleName1";
@@ -46,6 +47,7 @@ public class OzgCloudKeycloakRealmSpecTestFactory {
 		return OzgCloudKeycloakRealmSpec.builder()
 				.keepAfterDelete(KEEP_AFTER_DELETE)
 				.displayName(DISPLAY_NAME)
+				.bundesland(BUNDESLAND)
 				.smtpServer(KeycloakRealmSmtpServerTestFactory.create())
 				.realmRoles(ROLES);
 	}