diff --git a/Jenkinsfile b/Jenkinsfile
index 2c55b3a51a189f5cdd52c7a99f839df4d7661021..12edbbf46e724df8640cdec02de2d86aea39bedd 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -137,7 +137,7 @@ pipeline {
                     FAILED_STAGE=env.STAGE_NAME
                     HELM_CHART_VERSION = generateHelmChartVersion()
 
-                    //sh "./run_helm_test.sh"
+                    sh "./run_helm_test.sh"
 
                     dir('src/main/helm') {
 
@@ -175,23 +175,20 @@ pipeline {
                 }
             }
         }
-
-        stage ('OWASP Dependency-Check Vulnerabilities') {
+        stage ('Deploy SBOM to DependencyTrack') {
             steps {
-                dependencyCheck additionalArguments: ''' 
-                    -o "./" 
-                    -s "./"
-                    -f "ALL" 
-                    -d /dependency-check-data
-                    --suppression dependency-check-supressions.xml
-                    --disableKnownExploited
-                    --noupdate
-                    --disableArchive
-                    --prettyPrint''', odcInstallation: 'dependency-check-owasp'
-
-                dependencyCheckPublisher( 
-                    pattern: 'dependency-check-report.xml'
-                )           
+                script {
+                    IMAGE_TAG = generateImageTag()
+
+                    configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
+                        withCredentials([string(credentialsId: 'dependency-track-api-key', variable: 'API_KEY')]) {
+
+                            catchError(buildResult: 'UNSTABLE', stageResult: 'FAILURE') {
+                                sh "mvn  --no-transfer-progress -s $MAVEN_SETTINGS io.github.pmckeown:dependency-track-maven-plugin:upload-bom -Ddependency-track.apiKey=$API_KEY -Ddependency-track.projectVersion=${IMAGE_TAG} -Ddependency-track.dependencyTrackBaseUrl=https://dependency-track.ozg-sh.de"
+                            }
+                        }
+                    }
+                }
             }
         }
     }
diff --git a/src/main/java/de/ozgcloud/operator/elstertransfer/user/ConfigMapUserList.java b/src/main/java/de/ozgcloud/operator/elstertransfer/user/ConfigMapUserList.java
index 10dfb0b03ba03073628347cb2d6c43b6a0c0a47c..f0e1b13d4cedc1fdcb25034126ba44befd8deb68 100644
--- a/src/main/java/de/ozgcloud/operator/elstertransfer/user/ConfigMapUserList.java
+++ b/src/main/java/de/ozgcloud/operator/elstertransfer/user/ConfigMapUserList.java
@@ -1,18 +1,23 @@
 package de.ozgcloud.operator.elstertransfer.user;
 
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
+import lombok.Builder;
+import lombok.NoArgsConstructor;
+
+@NoArgsConstructor
+@Builder
 public class ConfigMapUserList {
 
 	private List<Map<String, Object>> usersList;
 
 	public ConfigMapUserList(List<Map<String, Object>> usersList) {
-		this.usersList = usersList;
+        this.usersList = usersList;
 	}
 
-
 	boolean existsUser(String login){
 		for (Map<String, Object> existingUser : usersList) {
 			if (login.equals(existingUser.get("login"))) {
diff --git a/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserReconciler.java b/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserReconciler.java
index 155d807796803bb6a1f58c929c85db1306366168..404c701c6e4770f8c0bddd22ef561eb49120dc42 100644
--- a/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserReconciler.java
+++ b/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserReconciler.java
@@ -20,11 +20,7 @@ import lombok.extern.log4j.Log4j2;
 public class OzgCloudElsterTransferUserReconciler implements Reconciler<OzgCloudElsterTransferUser>, Cleaner<OzgCloudElsterTransferUser> {
 
 	private final OzgCloudElsterTransferUserService elsterTransferUserService;
-	private static final String CONFIG_MAP_NAME = "etr-user-config";
-	private static final String ETR_DEPLOYMENT_NAME = "elster-transfer";
-	// todo
-	private static final String ETR_NAMESPACE = "etr-user-creation";
-
+	
 	@Override
 	public UpdateControl<OzgCloudElsterTransferUser> reconcile(OzgCloudElsterTransferUser elsterTransferUser,
 			Context<OzgCloudElsterTransferUser> context) {
diff --git a/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserService.java b/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserService.java
index 2ca1b1372a0b3091983950c38ad1e2cbe6de4519..d87e27004cafd5f2f9f09c2b4c1ad5b44c35daa5 100644
--- a/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserService.java
+++ b/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserService.java
@@ -9,7 +9,6 @@ import org.springframework.stereotype.Component;
 import org.yaml.snakeyaml.Yaml;
 
 import io.fabric8.kubernetes.api.model.ConfigMap;
-import io.javaoperatorsdk.operator.api.reconciler.DeleteControl;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.log4j.Log4j2;
 
@@ -20,6 +19,7 @@ public class OzgCloudElsterTransferUserService {
 
 	private final OzgCloudElsterTransferUserRemoteService remoteService;
 	private static final String USERS_KEY = "users.yaml";
+	// todo
 	private static final String ETR_NAMESPACE = "etr-user-creation";
 	public static final String USER_ROLE = "USER";
 	private static final String CONFIG_MAP_NAME = "etr-user-config";
@@ -28,15 +28,11 @@ public class OzgCloudElsterTransferUserService {
 
 	public void updateConfigMapAndRestartDeploymentAndCreateSecret(String namespace) {
 		LOG.info("Updating Configmap");
-		String userPassword = updateConfigMap(namespace, ETR_NAMESPACE, CONFIG_MAP_NAME);
-
-		// userPassword will not be generated if the user "login" already exist in configmap
-		if (!userPassword.isEmpty()) {
-			LOG.info("Restarting Deployment");
-			restartDeployment(ETR_NAMESPACE, ETR_DEPLOYMENT_NAME);
-			LOG.info("Creating Secret");
-			createOrUpdateSecret(namespace, userPassword,MUK_USER_SECRET_NAME);
-		}
+		String userPassword = generateUsersYamlAndUpdateConfigMap(namespace, ETR_NAMESPACE, CONFIG_MAP_NAME);
+		LOG.info("Restarting Deployment");
+		restartDeployment(ETR_NAMESPACE, ETR_DEPLOYMENT_NAME);
+		LOG.info("Creating Secret");
+		createOrUpdateSecret(namespace, userPassword, MUK_USER_SECRET_NAME);
 	}
 
 	public void deleteUserAndRestartDeploymentIfNotKeepUserAndUserExists(OzgCloudElsterTransferUser user) {
@@ -51,36 +47,40 @@ public class OzgCloudElsterTransferUserService {
 		}
 		LOG.info("{} do cleanup...", user.getMetadata());
 		deleteUser(user.getMetadata().getNamespace(), CONFIG_MAP_NAME);
-		restartDeployment(ETR_NAMESPACE,ETR_DEPLOYMENT_NAME);
+		restartDeployment(ETR_NAMESPACE, ETR_DEPLOYMENT_NAME);
 	}
 
-	
-	String updateConfigMap(String namespace, String configmapNamespace, String configMapName) {
-		String userPassword = "";
+	String generateUsersYamlAndUpdateConfigMap(String namespace, String configmapNamespace, String configMapName) {
+		String userPassword = generatePassword();
 		ConfigMap configMap = remoteService.getConfigMap(configmapNamespace, configMapName);
 
-		if (configMap == null) {
-			LOG.debug("Creating ConfigMap '{}' in namespace '{}'", configMapName, namespace);
-			configMap = remoteService.createConfigMap(configmapNamespace, configMapName);
-		}
+		String usersYaml = addUserToUserYaml(namespace, configMap, userPassword);
 
-		ConfigMapUserList users = getUsersFromYaml(configMap);
+		createOrUpdateConfigMap(configmapNamespace, configMapName, configMap, usersYaml);
+		return userPassword;
+	}
+
+	String addUserToUserYaml(String namespace, ConfigMap configMap, String userPassword) {
+		String usersYaml = "";
+		ConfigMapUserList users = getUsersFromConfigMap(configMap);
 
 		// use namespace as user "login" and "group"
 		if (userExistsInList(users, namespace)) {
-			LOG.warn("User with login '{}' already exists in ConfigMap '{}'.", namespace, configMapName);
+			LOG.warn("User with login '{}' already exists in ConfigMap.", namespace);
 		} else {
-			userPassword = generatePassword();
-			String passwordHash = hashPassword(userPassword);
-			addUserToList(users, namespace, passwordHash);
-
-			String usersYaml = constructYamlEntries(users);
-
-			remoteService.updateConfigMapData(configMap, USERS_KEY, usersYaml);
-			LOG.debug("ConfigMap updated successfully: {}", configMapName);
+			addNewUserToList(users, namespace, hashPassword(userPassword));
+			usersYaml = constructYamlEntries(users);
+		}
+		return usersYaml;
+	}
 
+	void createOrUpdateConfigMap(String configmapNamespace, String configMapName, ConfigMap configMap, String usersYaml) {
+		if (configMap == null) {
+			LOG.debug("Creating ConfigMap '{}' in namespace '{}'", configMapName, configmapNamespace);
+			configMap = remoteService.createConfigMap(configmapNamespace, configMapName);
 		}
-		return userPassword;
+		remoteService.updateConfigMapData(configMap, USERS_KEY, usersYaml);
+		LOG.debug("ConfigMap updated successfully: {}", configMapName);
 	}
 
 	void restartDeployment(String etrNamespace, String deploymentName) {
@@ -90,48 +90,21 @@ public class OzgCloudElsterTransferUserService {
 
 	boolean userExists(String userLogin, String configMapNamespace, String configMapName) {
 		ConfigMap configMap = remoteService.getConfigMap(configMapNamespace, configMapName);
-
-		if (configMap == null) {
-			LOG.warn("ConfigMap '{}' not found", configMapName);
-			return false;
-		}
-
-		if (!configMap.getData().containsKey(USERS_KEY)) {
-			LOG.warn("Key '{}' not found in ConfigMap '{}'", USERS_KEY, configMapName);
-			return false;
-		}
-
-		ConfigMapUserList users1 = getUsersFromYaml(configMap);
-		boolean userExists = users1.existsUser(userLogin);
+		ConfigMapUserList users = getUsersFromConfigMap(configMap);
+		boolean userExists = users.existsUser(userLogin);
 		LOG.info("User with login '{}' exists in ConfigMap '{}'", userLogin, configMapName);
 		return userExists;
-
 	}
 
 	void deleteUser(String userLogin, String configMapName) {
-		try {
-			ConfigMap configMap = remoteService.getConfigMap(ETR_NAMESPACE, configMapName);
+		ConfigMap configMap = remoteService.getConfigMap(ETR_NAMESPACE, configMapName);
 
-			if (configMap == null) {
-				LOG.debug("ConfigMap '{}' not found in namespace '{}'", configMapName, ETR_NAMESPACE);
-				return;
-			}
+		ConfigMapUserList usersList = getUsersFromConfigMap(configMap);
+		usersList.removeDeleted(userLogin);
+		String updatedUsersYaml = constructYamlEntries(usersList);
 
-			if (!configMap.getData().containsKey(USERS_KEY)) {
-				LOG.warn("Key '{}' not found in ConfigMap '{}'", USERS_KEY, configMapName);
-				return;
-			}
-
-			ConfigMapUserList usersList = getUsersFromYaml(configMap);
-			usersList.removeDeleted(userLogin);
-			String updatedUsersYaml = constructYamlEntries(usersList);
-
-			remoteService.updateConfigMapData(configMap, USERS_KEY, updatedUsersYaml);
-			LOG.info("User with login '{}' removed from configmap successfully", userLogin);
-
-		} catch (Exception e) {
-			LOG.error("Error while deleting user", e);
-		}
+		remoteService.updateConfigMapData(configMap, USERS_KEY, updatedUsersYaml);
+		LOG.info("User with login '{}' removed from configmap successfully", userLogin);
 	}
 
 	void createOrUpdateSecret(String namespace, String userPassword, String secretName) {
@@ -139,8 +112,7 @@ public class OzgCloudElsterTransferUserService {
 		LOG.info("Secret for user in namespace '{}' created successfully", namespace);
 	}
 
-
-	ConfigMapUserList getUsersFromYaml(ConfigMap configMap) {
+	ConfigMapUserList getUsersFromConfigMap(ConfigMap configMap) {
 		String usersYaml = configMap.getData().get(USERS_KEY);
 		Map<String, Object> load = new Yaml().load(usersYaml);
 		List<Map<String, Object>> usersList = (List<Map<String, Object>>) load.get("users");
@@ -151,18 +123,10 @@ public class OzgCloudElsterTransferUserService {
 		return usersList.existsUser(login);
 	}
 
-	void addUserToList(ConfigMapUserList usersList, String login, String passwordHash) {
+	void addNewUserToList(ConfigMapUserList usersList, String login, String passwordHash) {
 		usersList.addUserToList(login, passwordHash, USER_ROLE);
 	}
 
-	private String generatePassword() {
-		return UUID.randomUUID().toString();
-	}
-
-	private String hashPassword(String password) {
-		return BCrypt.hashpw(password, BCrypt.gensalt());
-	}
-
 	String constructYamlEntries(ConfigMapUserList userList) {
 		List<Map<String, Object>> usersList = userList.getUsersList();
 		StringBuilder usersYaml = new StringBuilder();
@@ -184,4 +148,12 @@ public class OzgCloudElsterTransferUserService {
 		return sb.toString();
 	}
 
+	private String generatePassword() {
+		return UUID.randomUUID().toString();
+	}
+
+	private String hashPassword(String password) {
+		return BCrypt.hashpw(password, BCrypt.gensalt());
+	}
+
 }
diff --git a/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserRemoteServiceTest.java b/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserRemoteServiceTest.java
index 9688d94036ba21e8a9cc8eedf06d68bb8a5437bc..b30da1b02c1ba34af33ffbefba1260357da7c547 100644
--- a/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserRemoteServiceTest.java
+++ b/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserRemoteServiceTest.java
@@ -1,6 +1,5 @@
 package de.ozgcloud.operator.elstertransfer.user;
 
-import static org.assertj.core.api.Assertions.*;
 import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
@@ -72,6 +71,7 @@ class OzgCloudElsterTransferUserRemoteServiceTest {
 	private static final String configMapName = OzgCloudElsterTransferUserTestFactory.CONFIG_MAP_NAME;
 	private static final String deploymentName = OzgCloudElsterTransferUserTestFactory.ETR_DEPLOYMENT_NAME;
 	private static final String secretName = OzgCloudElsterTransferUserTestFactory.MUK_USER_SECRET_NAME;
+	//todo
 	private static final String configmapNamespace = "etr-user-creation";
 
 	@DisplayName("test ConfigMap")
diff --git a/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserServiceTest.java b/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserServiceTest.java
index ad2e148edbd93bfb8bdcd4396c3bfba37a78bf16..ebcfd0cdb9e9400b27e91779293468f45edf19c0 100644
--- a/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserServiceTest.java
+++ b/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserServiceTest.java
@@ -1,5 +1,577 @@
 package de.ozgcloud.operator.elstertransfer.user;
 
-public class OzgCloudElsterTransferUserServiceTest {
-    
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.*;
+import static org.mockito.Mockito.*;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Spy;
+
+import io.fabric8.kubernetes.api.model.ConfigMap;
+
+class OzgCloudElsterTransferUserServiceTest {
+
+	@Mock
+	private OzgCloudElsterTransferUserRemoteService remoteService;
+
+	@Spy
+	@InjectMocks
+	private OzgCloudElsterTransferUserService service;
+
+	@Mock
+	private ConfigMap configMap;
+
+	@Mock
+	private ConfigMapUserList users;
+
+	private static final String namespace = OzgCloudElsterTransferUserTestFactory.METADATA_NAMESPACE;
+	private static final String configMapName = OzgCloudElsterTransferUserTestFactory.CONFIG_MAP_NAME;
+	private static final String deploymentName = OzgCloudElsterTransferUserTestFactory.ETR_DEPLOYMENT_NAME;
+	private static final String secretName = OzgCloudElsterTransferUserTestFactory.MUK_USER_SECRET_NAME;
+	private static final String configMapNamespace = "etr-user-creation";
+	private static final String usersKey = "users.yaml";
+
+	@Nested
+	class TestUpdateConfigMapAndRestartDeploymentAndCreateSecret {
+
+		@BeforeEach
+		void setUp() {
+			String mockedUsersYaml = "fileFormat: 1\nusers:\n  - login: testUser\n";
+			when(configMap.getData()).thenReturn(Map.of(usersKey, mockedUsersYaml));
+			when(remoteService.getConfigMap(anyString(), anyString())).thenReturn(configMap);
+			when(users.getUsersList()).thenReturn(List.of(Map.of(
+					"login", "testUser",
+					"rolle", "USER",
+					"credentials", Map.of("passwortHash", "hashedPassword"),
+					"gruppe", "testGroup")));
+			when(service.getUsersFromConfigMap(configMap)).thenReturn(users);
+		}
+
+		@Test
+		void shouldCallGenerateUsersYamlAndUpdateConfigMap() {
+
+			service.updateConfigMapAndRestartDeploymentAndCreateSecret(namespace);
+
+			verify(service).generateUsersYamlAndUpdateConfigMap(namespace, configMapNamespace, configMapName);
+		}
+
+		@Test
+		void shouldCallRestartDeployment() {
+
+			service.updateConfigMapAndRestartDeploymentAndCreateSecret(namespace);
+
+			verify(service).restartDeployment(configMapNamespace, deploymentName);
+		}
+
+		@Test
+		void shouldCallCreateOrUpdateSecret() {
+			String psw = "password";
+			when(service.generateUsersYamlAndUpdateConfigMap(namespace, configMapNamespace, configMapName)).thenReturn(psw);
+
+			service.updateConfigMapAndRestartDeploymentAndCreateSecret(namespace);
+
+			verify(service).createOrUpdateSecret(namespace, psw, secretName);
+		}
+
+	}
+
+	@Nested
+	class TestDeleteUserAndRestartDeploymentIfNotKeepUserAndUserExists {
+
+		@Test
+		void keepAfterDeleteShouldReturnFalseAsDefault() {
+
+			String mockedUsersYaml = "fileFormat: 1\nusers:\n  - login: testUser\n";
+			when(configMap.getData()).thenReturn(Map.of("users.yaml", mockedUsersYaml));
+			when(remoteService.getConfigMap(anyString(), anyString())).thenReturn(configMap);
+
+			OzgCloudElsterTransferUser user = OzgCloudElsterTransferUserTestFactory.create();
+
+			service.deleteUserAndRestartDeploymentIfNotKeepUserAndUserExists(user);
+
+			assertFalse(user.getSpec().isKeepAfterDelete());
+
+		}
+
+		@Test
+		void shouldCallUserExists() {
+			String mockedUsersYaml = "fileFormat: 1\nusers:\n  - login: testUser\n";
+			when(configMap.getData()).thenReturn(Map.of("users.yaml", mockedUsersYaml));
+			when(remoteService.getConfigMap(anyString(), anyString())).thenReturn(configMap);
+
+			OzgCloudElsterTransferUser user = OzgCloudElsterTransferUserTestFactory.create();
+
+			service.deleteUserAndRestartDeploymentIfNotKeepUserAndUserExists(user);
+
+			verify(service).userExists(namespace, configMapNamespace, configMapName);
+
+		}
+
+		@Test
+		void shouldNotCallUserExists() {
+
+			OzgCloudElsterTransferUser user = OzgCloudElsterTransferUserTestFactory.create();
+			user.getSpec().setKeepAfterDelete(true);
+
+			service.deleteUserAndRestartDeploymentIfNotKeepUserAndUserExists(user);
+
+			verify(service, never()).userExists(any(), any(), any());
+
+		}
+
+		@Test
+		void shouldCallDeleteUser() {
+			String mockedUsersYaml = "fileFormat: 1\nusers:\n  - login: testUser\n";
+			when(configMap.getData()).thenReturn(Map.of("users.yaml", mockedUsersYaml));
+			when(remoteService.getConfigMap(anyString(), anyString())).thenReturn(configMap);
+
+			when(users.getUsersList()).thenReturn(List.of(Map.of(
+					"login", "testUser",
+					"rolle", "USER",
+					"credentials", Map.of("passwortHash", "hashedPassword"),
+					"gruppe", "testGroup")));
+			when(service.getUsersFromConfigMap(configMap)).thenReturn(users);
+
+			OzgCloudElsterTransferUser user = OzgCloudElsterTransferUserTestFactory.create();
+			when(service.userExists(namespace, configMapNamespace, configMapName)).thenReturn(true);
+
+			service.deleteUserAndRestartDeploymentIfNotKeepUserAndUserExists(user);
+
+			verify(service).deleteUser(user.getMetadata().getNamespace(), configMapName);
+		}
+
+		@Test
+		void shouldNotCallDeleteUserOrRestartDeploymentIfKeepAfterDelete() {
+			OzgCloudElsterTransferUser user = OzgCloudElsterTransferUserTestFactory.create();
+			user.getSpec().setKeepAfterDelete(true);
+
+			service.deleteUserAndRestartDeploymentIfNotKeepUserAndUserExists(user);
+
+			verify(service, never()).deleteUser(any(), any());
+			verify(service, never()).restartDeployment(any(), any());
+		}
+
+		@Test
+		void shouldNotCallDeleteUserOrRestartDeploymentIfUserNotExists() {
+			String mockedUsersYaml = "fileFormat: 1\nusers:\n  - login: testUser\n";
+			when(configMap.getData()).thenReturn(Map.of("users.yaml", mockedUsersYaml));
+			when(remoteService.getConfigMap(anyString(), anyString())).thenReturn(configMap);
+
+			OzgCloudElsterTransferUser user = OzgCloudElsterTransferUserTestFactory.create();
+			when(service.userExists(namespace, configMapNamespace, configMapName)).thenReturn(false);
+
+			service.deleteUserAndRestartDeploymentIfNotKeepUserAndUserExists(user);
+
+			verify(service, never()).deleteUser(any(), any());
+			verify(service, never()).restartDeployment(any(), any());
+		}
+
+		@Test
+		void shouldCallRestartDeployment() {
+			String mockedUsersYaml = "fileFormat: 1\nusers:\n  - login: testUser\n";
+			when(configMap.getData()).thenReturn(Map.of("users.yaml", mockedUsersYaml));
+			when(remoteService.getConfigMap(anyString(), anyString())).thenReturn(configMap);
+
+			when(users.getUsersList()).thenReturn(List.of(Map.of(
+					"login", "testUser",
+					"rolle", "USER",
+					"credentials", Map.of("passwortHash", "hashedPassword"),
+					"gruppe", "testGroup")));
+			when(service.getUsersFromConfigMap(configMap)).thenReturn(users);
+
+			OzgCloudElsterTransferUser user = OzgCloudElsterTransferUserTestFactory.create();
+			when(service.userExists(namespace, configMapNamespace, configMapName)).thenReturn(true);
+
+			service.deleteUserAndRestartDeploymentIfNotKeepUserAndUserExists(user);
+
+			verify(service).restartDeployment(configMapNamespace, deploymentName);
+		}
+	}
+
+	@Nested
+	@DisplayName("generateUsersYamlAndUpdateConfigMap")
+	class TestGenerateUsersYamlAndUpdateConfigMap {
+
+		@BeforeEach
+		public void setUp() {
+			Map<String, String> mockData = new HashMap<>();
+			mockData.put("users.yaml", "users: []");
+			when(configMap.getData()).thenReturn(mockData);
+			when(remoteService.getConfigMap(anyString(), anyString())).thenReturn(configMap);
+		}
+
+		@Test
+		void shouldCallGetConfigMap() {
+			service.generateUsersYamlAndUpdateConfigMap(namespace, configMapNamespace, configMapName);
+
+			verify(remoteService).getConfigMap(configMapNamespace, configMapName);
+		}
+
+		@Test
+		void shouldReturnGeneratedPassword() {
+			String userPassword = service.generateUsersYamlAndUpdateConfigMap(namespace, configMapNamespace, configMapName);
+
+			assertNotNull(userPassword);
+		}
+
+		@Test
+		void shouldCallCreateOrUpdateConfigMap() {
+			service.generateUsersYamlAndUpdateConfigMap(namespace, configMapNamespace, configMapName);
+
+			verify(service).createOrUpdateConfigMap(eq(configMapNamespace), eq(configMapName), eq(configMap), anyString());
+		}
+
+		@Test
+		void shouldCalladdUserToUserYaml() {
+			service.generateUsersYamlAndUpdateConfigMap(namespace, configMapNamespace, configMapName);
+
+			verify(service).addUserToUserYaml(eq(namespace), eq(configMap), anyString());
+		}
+
+	}
+
+	@Nested
+	class addUserToUserYamlTests {
+
+		@BeforeEach
+		public void setUp() {
+			Map<String, String> mockData = new HashMap<>();
+			mockData.put("users.yaml", "users: []");
+			when(configMap.getData()).thenReturn(mockData);
+		}
+
+		@Test
+		void shouldCallgetUsersFromConfigMap() {
+			service.addUserToUserYaml(namespace, configMap, "password");
+
+			verify(service).getUsersFromConfigMap(configMap);
+		}
+
+		@Test
+		void shouldCallUserExistsInList() {
+			when(service.getUsersFromConfigMap(configMap)).thenReturn(users);
+			when(users.getUsersList()).thenReturn(List.of(Map.of(
+					"login", "testUser",
+					"rolle", "USER",
+					"credentials", Map.of("passwortHash", "hashedPassword"),
+					"gruppe", "testGroup")));
+
+			service.addUserToUserYaml(namespace, configMap, "password");
+
+			verify(service).userExistsInList(users, namespace);
+		}
+
+		@Test
+		void shouldCallAddNewUserToListWhenUserNotExists() {
+			when(service.getUsersFromConfigMap(configMap)).thenReturn(users);
+
+			service.addUserToUserYaml(namespace, configMap, "password");
+
+			verify(service).addNewUserToList(eq(users), eq(namespace), anyString());
+		}
+
+		@Test
+		void shouldCallconstructYamlEntries() {
+			when(service.getUsersFromConfigMap(configMap)).thenReturn(users);
+
+			service.addUserToUserYaml(namespace, configMap, "password");
+
+			verify(service).constructYamlEntries(users);
+		}
+
+		@Test
+		void TestUserYamlShouldNotBeEmpty() {
+			// when(service.getUsersFromConfigMap(configMap)).thenReturn(users);
+
+			String userYaml = service.addUserToUserYaml(namespace, configMap, "password");
+
+			assertFalse(userYaml.isEmpty());
+		}
+
+		@Test
+		void TestUserYamlShouldBeEmpty() {
+			when(service.getUsersFromConfigMap(configMap)).thenReturn(users);
+			when(service.userExistsInList(users, namespace)).thenReturn(true);
+
+			String userYaml = service.addUserToUserYaml(namespace, configMap, "password");
+
+			assertTrue(userYaml.isEmpty());
+		}
+	}
+
+	@Nested
+	class CreateOrUpdateConfigMapTests {
+
+		@Test
+		void shouldCallCreateConfigMap() {
+			ConfigMap configMap = null;
+
+			service.createOrUpdateConfigMap(configMapNamespace, configMapName, configMap, "mockedUsersYaml");
+
+			verify(remoteService).createConfigMap(configMapNamespace, configMapName);
+		}
+
+		@Test
+		void shouldCallUpdateConfigMapData() {
+			service.createOrUpdateConfigMap(configMapNamespace, configMapName, configMap, "mockedUsersYaml");
+
+			verify(remoteService).updateConfigMapData(configMap, usersKey, "mockedUsersYaml");
+			verify(remoteService, never()).createConfigMap(any(), any());
+		}
+
+	}
+
+	@Nested
+	class RestartDeploymentTests {
+		@Test
+		void shouldCallCreateConfigMap() {
+			service.restartDeployment(configMapNamespace, deploymentName);
+
+			verify(remoteService).restartDeployment(configMapNamespace, deploymentName);
+		}
+	}
+
+	@Nested
+	class UserExistsTests {
+
+		@BeforeEach
+		public void setUp() {
+			Map<String, String> mockData = new HashMap<>();
+			mockData.put("users.yaml", "users: []");
+			when(configMap.getData()).thenReturn(mockData);
+			when(remoteService.getConfigMap(configMapNamespace, configMapName)).thenReturn(configMap);
+		}
+
+		@Test
+		void shouldCallGetConfigMap() {
+			//
+			service.userExists(namespace, configMapNamespace, configMapName);
+
+			verify(remoteService).getConfigMap(configMapNamespace, configMapName);
+		}
+
+		@Test
+		void shouldReturnUserExistsTrueIfUserExists() {
+			when(service.getUsersFromConfigMap(configMap)).thenReturn(users);
+			when(users.existsUser(namespace)).thenReturn(true);
+
+			boolean userExists = service.userExists(namespace, configMapNamespace, configMapName);
+
+			assertTrue(userExists);
+		}
+
+		@Test
+		void shouldReturnUserExistsTrueIfUserNotExists() {
+			boolean userExists = service.userExists(namespace, configMapNamespace, configMapName);
+
+			assertFalse(userExists);
+		}
+
+		@Test
+		void shouldCallgetUsersFromConfigMap() {
+			service.userExists(namespace, configMapNamespace, configMapName);
+
+			verify(service).getUsersFromConfigMap(configMap);
+		}
+
+		@Test
+		void shouldCallExistsUser() {
+			when(service.getUsersFromConfigMap(configMap)).thenReturn(users);
+
+			service.userExists(namespace, configMapNamespace, configMapName);
+
+			verify(users).existsUser(namespace);
+		}
+
+	}
+
+	@Nested
+	class DeleteUserTests {
+		@BeforeEach
+		public void setUp() {
+			Map<String, String> mockData = new HashMap<>();
+			mockData.put("users.yaml", "users: []");
+			when(configMap.getData()).thenReturn(mockData);
+			when(remoteService.getConfigMap(configMapNamespace, configMapName)).thenReturn(configMap);
+		}
+
+		@Test
+		void shouldCallGetConfigMap() {
+			service.deleteUser(namespace, configMapName);
+
+			verify(remoteService).getConfigMap(configMapNamespace, configMapName);
+		}
+
+		@Test
+		void shouldCallGetUsersFromConfigMap() {
+			service.deleteUser(namespace, configMapName);
+
+			verify(service).getUsersFromConfigMap(configMap);
+		}
+
+		@Test
+		void shouldCallremoveDeleted() {
+			when(service.getUsersFromConfigMap(configMap)).thenReturn(users);
+
+			service.deleteUser(namespace, configMapName);
+
+			verify(users).removeDeleted(namespace);
+		}
+
+		@Test
+		void ShouldCallConstructYamlEntries() {
+			when(service.getUsersFromConfigMap(configMap)).thenReturn(users);
+
+			service.deleteUser(namespace, configMapName);
+
+			verify(service).constructYamlEntries(users);
+		}
+
+		@Test
+		void ShouldCallUpdateConfigMapData() {
+			when(service.getUsersFromConfigMap(configMap)).thenReturn(users);
+			when(service.constructYamlEntries(users)).thenReturn("updatedUsersYaml");
+
+			service.deleteUser(namespace, configMapName);
+
+			verify(remoteService).updateConfigMapData(configMap, usersKey, "updatedUsersYaml");
+		}
+	}
+
+	@Nested
+	class CreateOrUpdateSecretTests {
+		@Test
+		void shouldCallCreateOrUpdateSecret() {
+			service.createOrUpdateSecret(namespace, "psw", secretName);
+
+			verify(remoteService).createOrUpdateSecret(namespace, "psw", secretName);
+		}
+
+	}
+
+	@Nested
+	class GetUsersFromConfigMapTests {
+		@BeforeEach
+		public void setUp() {
+			String usersYaml = "fileFormat: 1\n" +
+					"users:\n" +
+					"  - login: \"admin\"\n" +
+					"    rolle: \"ADMIN\"\n" +
+					"    credentials:\n" +
+					"      passwortHash: \"$2a$12$cqKZMcwTUe/tju7PIFGhperWdV2Xa9o4fVw5eClbzatRhvxZphE1a\"\n" +
+					"    gruppe: \"Administratoren\"\n";
+
+			Map<String, String> mockData = new HashMap<>();
+			mockData.put(usersKey, usersYaml);
+			when(configMap.getData()).thenReturn(mockData);
+		}
+
+		@Test
+		void shouldReturnObjectConfigMapUserList() {
+
+			ConfigMapUserList result = service.getUsersFromConfigMap(configMap);
+
+			assertNotNull(result);
+			assertInstanceOf(ConfigMapUserList.class, result);
+		}
+
+		@Test
+		void shouldReturnConfigMapUserListWithContent() {
+
+			ConfigMapUserList result = service.getUsersFromConfigMap(configMap);
+
+			List<Map<String, Object>> usersList = result.getUsersList();
+			assertEquals(1, usersList.size());
+		}
+
+	}
+
+	@Nested
+	class UserExistsInListTests {
+		@Test
+		void shouldCallExistsUser() {
+			service.userExistsInList(users, namespace);
+
+			verify(users).existsUser(namespace);
+		}
+
+	}
+
+	@Nested
+	class AddNewUserToListTests {
+		@Test
+		void shouldCallAddUserToList() {
+			service.addNewUserToList(users, namespace, "pswHash");
+
+			verify(users).addUserToList(namespace, "pswHash", "USER");
+		}
+
+	}
+
+	@Nested
+	class ConstructYamlEntriesTests {
+		@Test
+		void shouldHaveResultWithCorrectContentStart() {
+			String result = service.constructYamlEntries(users);
+
+			assertTrue(result.startsWith("fileFormat: 1\nusers:\n"));
+		}
+
+		@Test
+		void shouldHaveResultWithCorrectContent() {
+			Map<String, Object> user1 = new HashMap<>();
+			user1.put("login", "admin");
+			user1.put("rolle", "ADMIN");
+			Map<String, Object> user2 = new HashMap<>();
+			user2.put("login", "user");
+			user2.put("rolle", "USER");
+
+			List<Map<String, Object>> usersList = Arrays.asList(user1, user2);
+			when(users.getUsersList()).thenReturn(usersList);
+			doReturn("  - login: admin\n    rolle: ADMIN\n").when(service).getYamlForUser(user1);
+			doReturn("  - login: user\n    rolle: USER\n").when(service).getYamlForUser(user2);
+
+			String result = service.constructYamlEntries(users);
+
+			String expectedYaml = "fileFormat: 1\n" +
+					"users:\n" +
+					"  - login: admin\n" +
+					"    rolle: ADMIN\n" +
+					"  - login: user\n" +
+					"    rolle: USER\n";
+
+			assertEquals(expectedYaml, result);
+		}
+	}
+
+	@Nested
+	class GetYamlForUserTests {
+		@Test
+		void shouldReturnExpectedYamlForUser() {
+			Map<String, Object> userEntry = new HashMap<>();
+			userEntry.put("login", "admin");
+			userEntry.put("rolle", "ADMIN");
+			userEntry.put("gruppe", "Administratoren");
+			Map<String, String> credentials = new HashMap<>();
+			credentials.put("passwortHash", "$2a$12$cqKZMcwTUe/tju7PIFGhperWdV2Xa9o4fVw5eClbzatRhvxZphE1a");
+			userEntry.put("credentials", credentials);
+
+			String result = service.getYamlForUser(userEntry);
+
+			String expectedYaml = "  - { login: \"admin\", rolle: \"ADMIN\", credentials: { passwortHash: \"$2a$12$cqKZMcwTUe/tju7PIFGhperWdV2Xa9o4fVw5eClbzatRhvxZphE1a\" }, gruppe: \"Administratoren\" }\n";
+
+			assertEquals(expectedYaml, result);
+		}
+
+	}
 }