diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/UserProfileUrlProvider.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/UserProfileUrlProvider.java
deleted file mode 100644
index 100dd420eb21777a28dae8e70688493017a73756..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/UserProfileUrlProvider.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import java.util.Objects;
-
-import org.springframework.beans.BeansException;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
-import org.springframework.stereotype.Component;
-
-import com.google.common.base.Preconditions;
-
-@Component
-public class UserProfileUrlProvider implements ApplicationContextAware {
-	// TODO auf javax.validation umstellen
-	private static final String ERROR_MESSAGE = "Key %s missing, please add it to the application.yml";
-	// TODO applicationContext darf nicht static abgelegt werden - es sollte möglich
-	// sein, dass eine andere Konfiguration in der jvm läuft.
-	private static ApplicationContext applicationContext;
-	static final String URL_ROOT_KEY = "ozgcloud.user-manager.url";
-	static final String USER_PROFILES_TEMPLATE_KEY = "ozgcloud.user-manager.profile-template";
-
-	@Override
-	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
-		UserProfileUrlProvider.setSpringContext(applicationContext);
-	}
-
-	private static void setSpringContext(ApplicationContext context) {
-		applicationContext = context;
-	}
-
-	public static boolean isConfigured() {
-		return Objects.nonNull(applicationContext.getEnvironment().getProperty(URL_ROOT_KEY))
-				&& Objects.nonNull(applicationContext.getEnvironment().getProperty(USER_PROFILES_TEMPLATE_KEY));
-	}
-
-	public static String getUrl(Object val) {
-		// TODO Abhängingkeit zu com.google.common ausbauen
-		Preconditions.checkNotNull(applicationContext, "ApplicationContext not initialized");
-
-		// TODO parameter lieber injezieren und validation verwenden
-		var rootUrl = applicationContext.getEnvironment().getProperty(URL_ROOT_KEY);
-		Preconditions.checkNotNull(rootUrl, ERROR_MESSAGE, URL_ROOT_KEY);
-
-		var template = applicationContext.getEnvironment().getProperty(USER_PROFILES_TEMPLATE_KEY);
-		Preconditions.checkNotNull(template, ERROR_MESSAGE, USER_PROFILES_TEMPLATE_KEY);
-
-		// TODO UriComponent Builder verwenden
-		var profilesUrl = rootUrl + template;
-		return String.format(profilesUrl, val);
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangController.java
index 3b6facda1bdca1ad3dd53fa54f250e4df2cbda93..865d83fb59e4bad69534ca0a5ef52a2e686ef193 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangController.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangController.java
@@ -25,8 +25,9 @@ package de.ozgcloud.alfa.vorgang;
 
 import java.util.Optional;
 
+import jakarta.servlet.http.HttpServletResponse;
+
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.hateoas.EntityModel;
 import org.springframework.hateoas.RepresentationModel;
 import org.springframework.http.HttpStatus;
@@ -44,10 +45,11 @@ import de.ozgcloud.alfa.common.clientattribute.ClientAttributeService;
 import de.ozgcloud.alfa.common.user.UserId;
 import de.ozgcloud.alfa.statistic.StatisticController;
 import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-import jakarta.servlet.http.HttpServletResponse;
+import lombok.RequiredArgsConstructor;
 
 @RestController
 @RequestMapping(VorgangController.PATH)
+@RequiredArgsConstructor
 public class VorgangController {
 
 	static final String PATH = "/api/vorgangs"; // NOSONAR
@@ -62,16 +64,12 @@ public class VorgangController {
 	public static final String PARAM_NEXT_WIEDERVORLAGE_FRIST_EXISTS = "exists";
 	public static final String PARAM_NACHRICHTEN_UNGELESENE = "ungelesene";
 
-	@Autowired
-	private VorgangService vorgangService;
-	@Autowired
-	private VorgangModelAssembler modelAssembler;
+	private final VorgangService vorgangService;
+	private final VorgangModelAssembler modelAssembler;
 
-	@Autowired
-	private ClientAttributeService clientAttributeService;
+	private final ClientAttributeService clientAttributeService;
 
-	@Autowired
-	private StatisticController statisticController;
+	private final StatisticController statisticController;
 
 	@GetMapping(params = { PARAM_PAGE, PARAM_LIMIT })
 	public RepresentationModel<EntityModel<EnhancedVorgang>> getAll(@RequestParam int page, @RequestParam Integer limit) {
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/aktenzeichen/AktenzeichenModelProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/aktenzeichen/AktenzeichenModelProcessorTest.java
index 6c0447d5e009e8c7bf894a1ce93dc464b075f834..db2df608d44e0e6fefafdc20604cf2a1e868d084 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/aktenzeichen/AktenzeichenModelProcessorTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/aktenzeichen/AktenzeichenModelProcessorTest.java
@@ -36,7 +36,6 @@ import org.springframework.hateoas.EntityModel;
 import org.springframework.hateoas.Link;
 import org.springframework.hateoas.UriTemplate;
 
-import de.ozgcloud.alfa.common.UserProfileUrlProvider;
 import de.ozgcloud.alfa.common.command.CommandController;
 import de.ozgcloud.alfa.vorgang.Vorgang;
 import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
@@ -45,8 +44,6 @@ import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
 
 class AktenzeichenModelProcessorTest {
 
-	private final UserProfileUrlProvider urlProvider = new UserProfileUrlProvider();
-
 	@InjectMocks
 	private AktenzeichenModelProcessor processor;
 
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/UserProfileUrlProviderTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/UserProfileUrlProviderTestFactory.java
deleted file mode 100644
index 9498db2b673db8e3d7e171e35a6c87871913aded..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/UserProfileUrlProviderTestFactory.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import static org.mockito.Mockito.*;
-
-import org.springframework.context.ApplicationContext;
-import org.springframework.core.env.Environment;
-
-public class UserProfileUrlProviderTestFactory {
-	public static final String ROOT_URL = "https://localhost";
-	public static final String USER_PROFILES_API_PATH = "/api/userProfiles/";
-	public static final String OZGCLOUD_USER_MANAGER_PROFILE_TEMPLATE = "ozgcloud.user-manager.profile-template";
-	public static final String OZGCLOUD_USER_MANAGER_URL = "ozgcloud.user-manager.url";
-
-	public static void initUserProfileUrlProvider(UserProfileUrlProvider urlProvider) {
-		ApplicationContext context = mock(ApplicationContext.class);
-		Environment environment = mock(Environment.class);
-		when(environment.getProperty(OZGCLOUD_USER_MANAGER_URL)).thenReturn(ROOT_URL);
-		when(environment.getProperty(OZGCLOUD_USER_MANAGER_PROFILE_TEMPLATE)).thenReturn(USER_PROFILES_API_PATH + "%s");
-		when(context.getEnvironment()).thenReturn(environment);
-		urlProvider.setApplicationContext(context);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandModelAssemblerTest.java
index 01567b0ff4b2aadac73038fcec78b3ba327a479c..cdc84e3c2bb10c6620376542e304399ff8ea0cfb 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandModelAssemblerTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandModelAssemblerTest.java
@@ -27,9 +27,7 @@ import static de.ozgcloud.alfa.common.command.CommandModelAssembler.*;
 import static de.ozgcloud.alfa.common.command.CommandTestFactory.*;
 import static org.assertj.core.api.Assertions.*;
 import static org.junit.jupiter.api.Assertions.*;
-import static org.mockito.Mockito.*;
 
-import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
@@ -38,13 +36,10 @@ import org.junit.jupiter.params.provider.EnumSource;
 import org.junit.jupiter.params.provider.EnumSource.Mode;
 import org.junit.jupiter.params.provider.ValueSource;
 import org.mockito.InjectMocks;
-import org.springframework.context.ApplicationContext;
-import org.springframework.core.env.Environment;
 import org.springframework.hateoas.EntityModel;
 import org.springframework.hateoas.IanaLinkRelations;
 import org.springframework.hateoas.Link;
 
-import de.ozgcloud.alfa.common.UserProfileUrlProvider;
 import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
 
 class CommandModelAssemblerTest {
@@ -54,13 +49,6 @@ class CommandModelAssemblerTest {
 	@InjectMocks
 	private CommandModelAssembler modelAssembler;
 
-	@BeforeEach
-	void init() {
-		var applicationContext = mock(ApplicationContext.class);
-		lenient().when(applicationContext.getEnvironment()).thenReturn(mock(Environment.class));
-		new UserProfileUrlProvider().setApplicationContext(applicationContext);
-	}
-
 	@Test
 	void shouldHaveSelfLink() {
 		var model = modelAssembler.toModel(CommandTestFactory.create());
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/HistorieModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/HistorieModelAssemblerTest.java
index 4122969ffbce6e408d19fe31ec962b7f94fe886c..cd840fb170494f5fdb61121b9623210ea834d550 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/HistorieModelAssemblerTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/HistorieModelAssemblerTest.java
@@ -23,7 +23,6 @@
  */
 package de.ozgcloud.alfa.historie;
 
-import static de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory.*;
 import static org.assertj.core.api.Assertions.*;
 import static org.mockito.Mockito.*;
 
@@ -121,6 +120,9 @@ class HistorieModelAssemblerTest {
 	@Nested
 	class TestCreatedByLink {
 
+		private static final String ROOT_URL = LoremIpsum.getInstance().getUrl();
+		private static final String USER_PROFILES_API_PATH = "/api/user-profiles/";
+
 		@Mock
 		private UserManagerUrlProvider userManagerUrlProvider;
 
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarModelAssemblerTest.java
index db7c591bad74ecd8aa794161c3c4c38ba89ba561..61309f2595749b072aa7b64c8f2df88b0a3e5dfd 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarModelAssemblerTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarModelAssemblerTest.java
@@ -23,7 +23,6 @@
  */
 package de.ozgcloud.alfa.kommentar;
 
-import static de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory.*;
 import static org.assertj.core.api.Assertions.*;
 import static org.mockito.Mockito.*;
 
@@ -41,8 +40,9 @@ import org.springframework.hateoas.IanaLinkRelations;
 import org.springframework.hateoas.Link;
 import org.springframework.hateoas.server.EntityLinks;
 
+import com.thedeanda.lorem.LoremIpsum;
+
 import de.ozgcloud.alfa.common.LinkedResourceTestUtils;
-import de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory;
 import de.ozgcloud.alfa.common.user.UserManagerUrlProvider;
 import de.ozgcloud.alfa.vorgang.VorgangController;
 import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
@@ -53,8 +53,7 @@ class KommentarModelAssemblerTest {
 
 	private static final String PATH = KommentarController.KOMMENTAR_PATH + "/";
 	private static final String REL_CREATED_BY = "createdBy";
-	private static final String USER_MANAGER_URL = UserProfileUrlProviderTestFactory.ROOT_URL
-			+ UserProfileUrlProviderTestFactory.USER_PROFILES_API_PATH;
+	private static final String USER_MANAGER_URL = LoremIpsum.getInstance().getUrl();
 
 	@Spy
 	@InjectMocks
@@ -130,7 +129,7 @@ class KommentarModelAssemblerTest {
 
 		@Test
 		void shouldHaveCreatedByLink() {
-			when(userManagerUrlProvider.getUserProfileTemplate()).thenReturn(ROOT_URL + USER_PROFILES_API_PATH + "%s");
+			when(userManagerUrlProvider.getUserProfileTemplate()).thenReturn(USER_MANAGER_URL + "%s");
 
 			var model = LinkedResourceTestUtils.processUserProfileResource(buildModel(), userManagerUrlProvider);
 
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungControllerTest.java
index a1d67f14c2f6c985fb1c0613cf00c71c86030202..b1a466fa645437424ae754aa470b0126ea93b4e6 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungControllerTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungControllerTest.java
@@ -23,7 +23,6 @@
  */
 package de.ozgcloud.alfa.loeschanforderung;
 
-import static de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory.*;
 import static org.mockito.Mockito.*;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
@@ -38,7 +37,6 @@ import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.ResultActions;
 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
 
-import de.ozgcloud.alfa.common.UserProfileUrlProvider;
 import de.ozgcloud.alfa.common.errorhandling.ExceptionController;
 import de.ozgcloud.alfa.common.errorhandling.ProblemDetailMapper;
 import lombok.SneakyThrows;
@@ -91,8 +89,6 @@ class LoeschAnforderungControllerTest {
 
 		@Test
 		void shouldReturn200() throws Exception {
-			initUserProfileUrlProvider(new UserProfileUrlProvider());
-
 			var response = doRequest();
 
 			response.andExpect(status().isOk());
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangControllerTest.java
index 77a63407f2c188a1a84653ffe35eb17bf1354cd1..609ea5ccf1b83f33ecb2db97b2f4ff90652d2470 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangControllerTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangControllerTest.java
@@ -42,8 +42,6 @@ import org.mockito.Captor;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
-import org.springframework.context.ApplicationContext;
-import org.springframework.core.env.Environment;
 import org.springframework.hateoas.EntityModel;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
@@ -52,7 +50,6 @@ import org.springframework.test.web.servlet.assertj.MockMvcTester.MockMvcRequest
 import org.springframework.test.web.servlet.assertj.MvcTestResultAssert;
 import org.springframework.web.util.UriComponentsBuilder;
 
-import de.ozgcloud.alfa.common.UserProfileUrlProvider;
 import de.ozgcloud.alfa.common.clientattribute.ClientAttributeService;
 import de.ozgcloud.alfa.common.user.UserId;
 import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
@@ -814,18 +811,10 @@ class VorgangControllerTest {
 	@Nested
 	class TestVorgangWithEingang {
 
-		private UserProfileUrlProvider urlProvider = new UserProfileUrlProvider();
-
 		@BeforeEach
 		void initTest() {
 			when(vorgangService.findVorgangWithEingang(any())).thenReturn(VorgangWithEingangTestFactory.create());
 			when(modelAssembler.toModel(any())).then(i -> EntityModel.of(i.getArgument(0)));
-
-			ApplicationContext context = mock(ApplicationContext.class);
-			Environment environment = mock(Environment.class);
-			when(environment.getProperty(anyString())).thenReturn("test/");
-			when(context.getEnvironment()).thenReturn(environment);
-			urlProvider.setApplicationContext(context);
 		}
 
 		@Test