diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidManagerConfiguration.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidManagerConfiguration.java
new file mode 100644
index 0000000000000000000000000000000000000000..8bae9d91b16146f523285f2580ba8c8a8c87fc0e
--- /dev/null
+++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidManagerConfiguration.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2024 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.bescheid;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import de.ozgcloud.apilib.common.command.OzgCloudCommandService;
+import de.ozgcloud.apilib.common.command.grpc.CommandMapper;
+import de.ozgcloud.apilib.common.command.grpc.GrpcOzgCloudCommandService;
+import de.ozgcloud.bescheid.common.callcontext.BescheidManagerCallContextProvider;
+import de.ozgcloud.vorgang.grpc.command.CommandServiceGrpc;
+import net.devh.boot.grpc.client.inject.GrpcClient;
+
+@Configuration
+public class BescheidManagerConfiguration {
+
+	@GrpcClient("ozgcloud-command-manager")
+	private CommandServiceGrpc.CommandServiceBlockingStub commandServiceStub;
+
+	@Bean("bescheid_OzgCloudCommandService")
+	OzgCloudCommandService grpcOzgCloudCommandService(CommandMapper commandMapper, BescheidManagerCallContextProvider contextProvider) {
+		return new GrpcOzgCloudCommandService(commandServiceStub, commandMapper, contextProvider,
+				GrpcOzgCloudCommandService.DEFAULT_COMMAND_REQUEST_THRESHOLD_MILLIS);
+	}
+}
diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/attacheditem/AttachedItemService.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/attacheditem/AttachedItemService.java
index 7a3e82b746121e49326e8d24d2484f41693c912a..a35cfba56298f590a86a02eeb4cddfae30945aaa 100644
--- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/attacheditem/AttachedItemService.java
+++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/attacheditem/AttachedItemService.java
@@ -35,6 +35,8 @@ import java.util.stream.Collectors;
 
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang3.ArrayUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 
 import de.ozgcloud.apilib.common.command.OzgCloudCommand;
@@ -45,11 +47,9 @@ import de.ozgcloud.bescheid.BescheidCallContextAttachingInterceptor;
 import de.ozgcloud.bescheid.vorgang.VorgangId;
 import de.ozgcloud.command.Command;
 import de.ozgcloud.common.errorhandling.TechnicalException;
-import lombok.RequiredArgsConstructor;
 import lombok.extern.log4j.Log4j2;
 
 @Service
-@RequiredArgsConstructor
 @Log4j2
 public class AttachedItemService {
 
@@ -61,9 +61,13 @@ public class AttachedItemService {
 
 	private static final Predicate<String> notExpectedSendByValue = sendBy -> !ArrayUtils.contains(Bescheid.SendBy.values(), sendBy);
 
-	private final OzgCloudCommandService commandService;
-	private final VorgangAttachedItemRemoteService remoteService;
-	private final CommandMapper commandMapper;
+	@Autowired
+	@Qualifier("bescheid_OzgCloudCommandService")
+	private OzgCloudCommandService commandService;
+	@Autowired
+	private VorgangAttachedItemRemoteService remoteService;
+	@Autowired
+	private CommandMapper commandMapper;
 
 	public Optional<AttachedItem> findBescheidItem(String vorgangId) {
 		return remoteService.findBescheidDraft(vorgangId);
@@ -179,7 +183,7 @@ public class AttachedItemService {
 	void validateBescheidStatus(AttachedItem bescheid) {
 		var bescheidStatus = MapUtils.getString(bescheid.getItem(), Bescheid.FIELD_STATUS);
 		if (Bescheid.Status.DRAFT.not(bescheidStatus)) {
-			throw new TechnicalException("Bescheid draft with ID '%s' has an unexpected status: '%s'" .formatted(bescheid.getId(), bescheidStatus));
+			throw new TechnicalException("Bescheid draft with ID '%s' has an unexpected status: '%s'".formatted(bescheid.getId(), bescheidStatus));
 		}
 	}
 
diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/callcontext/BescheidManagerCallContextProvider.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/callcontext/BescheidManagerCallContextProvider.java
index 05f2b049540dcefe2b95ce22898e038b6ea9e646..40cbdaffe962730c81d9c95239babda672aac989 100644
--- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/callcontext/BescheidManagerCallContextProvider.java
+++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/callcontext/BescheidManagerCallContextProvider.java
@@ -23,15 +23,17 @@
  */
 package de.ozgcloud.bescheid.common.callcontext;
 
+import java.util.Optional;
+
 import org.springframework.stereotype.Component;
 
 import de.ozgcloud.apilib.common.callcontext.CallContext;
 import de.ozgcloud.apilib.common.callcontext.OzgCloudCallContextProvider;
 import de.ozgcloud.apilib.user.OzgCloudUserId;
-import de.ozgcloud.common.errorhandling.TechnicalException;
+import de.ozgcloud.bescheid.BescheidCallContextAttachingInterceptor;
 import lombok.RequiredArgsConstructor;
 
-@Component("bescheid_BescheidManagerCallContextProvider")
+@Component
 @RequiredArgsConstructor
 public class BescheidManagerCallContextProvider implements OzgCloudCallContextProvider {
 
@@ -39,14 +41,12 @@ public class BescheidManagerCallContextProvider implements OzgCloudCallContextPr
 
 	@Override
 	public CallContext provideContext() {
-		return CallContext.builder()
-				.userId(getUserId())
-				.clientName(currentUserService.getUser().getClientName())
-				.build();
+		var callContextBuilder = CallContext.builder().clientName(BescheidCallContextAttachingInterceptor.BESCHEID_MANAGER_CLIENT_NAME);
+		getUserId().ifPresent(callContextBuilder::userId);
+		return callContextBuilder.build();
 	}
 
-	OzgCloudUserId getUserId() {
-		return currentUserService.getUser().getUserId().map(OzgCloudUserId::from)
-				.orElseThrow(() -> new TechnicalException("No user id found in current user profile"));
+	Optional<OzgCloudUserId> getUserId() {
+		return currentUserService.getUser().getUserId().map(OzgCloudUserId::from);
 	}
 }
diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/nachricht/NachrichtService.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/nachricht/NachrichtService.java
index 49dbcf4a62be1cd1de9be68c57eb857b86559163..12268d4e0a14d3a4605f60f2b849033b00b91171 100644
--- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/nachricht/NachrichtService.java
+++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/nachricht/NachrichtService.java
@@ -8,6 +8,8 @@ import java.util.Optional;
 
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 
 import de.ozgcloud.apilib.common.command.OzgCloudCommand;
@@ -19,12 +21,10 @@ import de.ozgcloud.common.errorhandling.TechnicalException;
 import freemarker.template.Configuration;
 import freemarker.template.Template;
 import freemarker.template.TemplateException;
-import lombok.RequiredArgsConstructor;
 import lombok.extern.log4j.Log4j2;
 
 @Service
 @Log4j2
-@RequiredArgsConstructor
 public class NachrichtService {
 
 	public static final String SEND_POSTFACH_NACHRICHT_ORDER = "SEND_POSTFACH_NACHRICHT";
@@ -35,10 +35,15 @@ public class NachrichtService {
 	static final String FIELD_MAIL_BODY = "mailBody";
 	static final String FIELD_ATTACHMENTS = "attachments";
 
-	private final NachrichtRemoteService remoteService;
-	private final Configuration freemarkerCfg;
-	private final OzgCloudCommandService commandService;
-	private final CommandMapper commandMapper;
+	@Autowired
+	private NachrichtRemoteService remoteService;
+	@Autowired
+	private Configuration freemarkerCfg;
+	@Autowired
+	@Qualifier("bescheid_OzgCloudCommandService")
+	private OzgCloudCommandService commandService;
+	@Autowired
+	private CommandMapper commandMapper;
 
 	static final String SUBJECT = "Ihr Antrag";
 
diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/vorgang/VorgangService.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/vorgang/VorgangService.java
index 8afc3d2ba7b37ed2b79a2574c946473bcf9ae7e6..09b366285262b009acc54f131611760025ef1c5d 100644
--- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/vorgang/VorgangService.java
+++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/vorgang/VorgangService.java
@@ -1,22 +1,26 @@
 package de.ozgcloud.bescheid.vorgang;
 
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 
 import de.ozgcloud.apilib.common.command.OzgCloudCommand;
 import de.ozgcloud.apilib.common.command.OzgCloudCommandService;
 import de.ozgcloud.apilib.common.command.grpc.CommandMapper;
 import lombok.NonNull;
-import lombok.RequiredArgsConstructor;
 
 @Service("bescheid_VorgangService")
-@RequiredArgsConstructor
 public class VorgangService {
 
 	static final String VORGANG_BESCHEIDEN = "VORGANG_BESCHEIDEN";
 
-	private final VorgangRemoteService remoteService;
-	private final OzgCloudCommandService commandService;
-	private final CommandMapper commandMapper;
+	@Autowired
+	private VorgangRemoteService remoteService;
+	@Autowired
+	@Qualifier("bescheid_OzgCloudCommandService")
+	private OzgCloudCommandService commandService;
+	@Autowired
+	private CommandMapper commandMapper;
 
 	public Vorgang getById(@NonNull VorgangId id) {
 		return remoteService.getById(id);
diff --git a/bescheid-manager/src/main/java/de/ozgcloud/document/DocumentService.java b/bescheid-manager/src/main/java/de/ozgcloud/document/DocumentService.java
index 905af6829977ceeeff99a5b6830f9f8c9a59bb71..54d398b8c5d55ce78f57da999f09df3326d23d99 100644
--- a/bescheid-manager/src/main/java/de/ozgcloud/document/DocumentService.java
+++ b/bescheid-manager/src/main/java/de/ozgcloud/document/DocumentService.java
@@ -31,6 +31,8 @@ import java.util.Optional;
 
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 
 import de.ozgcloud.apilib.common.command.OzgCloudCommand;
@@ -42,10 +44,8 @@ import de.ozgcloud.bescheid.attacheditem.AttachedItem;
 import de.ozgcloud.bescheid.attacheditem.AttachedItemService;
 import de.ozgcloud.command.Command;
 import de.ozgcloud.common.errorhandling.TechnicalException;
-import lombok.RequiredArgsConstructor;
 
 @Service
-@RequiredArgsConstructor
 public class DocumentService {
 
 	public static final String DOCUMENT_ITEM_NAME = "Document";
@@ -56,10 +56,15 @@ public class DocumentService {
 	public static final String FIELD_DOCUMENT_FILE = "documentFile";
 	public static final String FIELD_NACHRICHT_TEXT = "nachrichtText";
 
-	private final AttachedItemService attachedItemService;
-	private final OzgCloudCommandService commandService;
-	private final CommandMapper commandMapper;
-	private final DocumentMapper documentMapper;
+	@Autowired
+	private AttachedItemService attachedItemService;
+	@Autowired
+	@Qualifier("bescheid_OzgCloudCommandService")
+	private OzgCloudCommandService commandService;
+	@Autowired
+	private CommandMapper commandMapper;
+	@Autowired
+	private DocumentMapper documentMapper;
 
 	public String createBescheidDocument(Command command) {
 		return createBescheidDocument(command, buildItemMap(command));
diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/common/callcontext/BescheidManagerCallContextProviderTest.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/common/callcontext/BescheidManagerCallContextProviderTest.java
index cfcf4559761f622b57483a05d63f96f2a9b92cb4..ec9d3dee4685bb202d88fe617c8235ad2270b717 100644
--- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/common/callcontext/BescheidManagerCallContextProviderTest.java
+++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/common/callcontext/BescheidManagerCallContextProviderTest.java
@@ -28,7 +28,6 @@ import static org.mockito.Mockito.*;
 
 import java.util.Optional;
 
-import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
@@ -37,7 +36,7 @@ import org.mockito.Mock;
 import org.mockito.Spy;
 
 import de.ozgcloud.apilib.user.OzgCloudUserId;
-import de.ozgcloud.common.errorhandling.TechnicalException;
+import de.ozgcloud.bescheid.BescheidCallContextAttachingInterceptor;
 
 class BescheidManagerCallContextProviderTest {
 
@@ -52,20 +51,12 @@ class BescheidManagerCallContextProviderTest {
 	@Mock
 	private OzgCloudUserId userId;
 
-	@BeforeEach
-	void init() {
-		when(currentUserService.getUser()).thenReturn(contextUser);
-	}
-
 	@Nested
 	class TestProvideContext {
 
-		private static final String CLIENT_NAME = "clientName";
-
 		@BeforeEach
 		void init() {
-			doReturn(userId).when(provider).getUserId();
-			when(contextUser.getClientName()).thenReturn(CLIENT_NAME);
+			doReturn(Optional.of(userId)).when(provider).getUserId();
 		}
 
 		@Test
@@ -86,7 +77,7 @@ class BescheidManagerCallContextProviderTest {
 		void shouldSetClientName() {
 			var result = provider.provideContext();
 
-			assertThat(result.getClientName()).isEqualTo(CLIENT_NAME);
+			assertThat(result.getClientName()).isEqualTo(BescheidCallContextAttachingInterceptor.BESCHEID_MANAGER_CLIENT_NAME);
 		}
 	}
 
@@ -95,18 +86,19 @@ class BescheidManagerCallContextProviderTest {
 
 		private static final String USER_ID = "userId";
 
+		@BeforeEach
+		void init() {
+			when(currentUserService.getUser()).thenReturn(contextUser);
+		}
+
 		@Test
 		void shouldReturnUserId() {
 			when(contextUser.getUserId()).thenReturn(Optional.of(USER_ID));
 
 			var result = provider.getUserId();
 
-			assertThat(result).hasToString(USER_ID);
+			assertThat(result).isPresent().get().hasToString(USER_ID);
 		}
 
-		@Test
-		void shouldThrowExceptionWhenUserIdMissing() {
-			Assertions.assertThrows(TechnicalException.class, provider::getUserId);
-		}
 	}
 }
\ No newline at end of file
diff --git a/vorgang-manager-base/src/test/java/de/ozgcloud/vorgang/callcontext/WithMockCustomUser.java b/vorgang-manager-base/src/test/java/de/ozgcloud/vorgang/callcontext/WithMockCustomUser.java
new file mode 100644
index 0000000000000000000000000000000000000000..ecdab688eae1bfd7127f1bf5f220bcf0dc05676a
--- /dev/null
+++ b/vorgang-manager-base/src/test/java/de/ozgcloud/vorgang/callcontext/WithMockCustomUser.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2024 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.vorgang.callcontext;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+import org.springframework.security.test.context.support.WithSecurityContext;
+
+@Retention(RetentionPolicy.RUNTIME)
+@WithSecurityContext(factory = WithMockCustomUserSecurityContextFactory.class)
+public @interface WithMockCustomUser {
+
+	String userId() default "default-user-id-0";
+
+	String clientName() default CallContextTestFactory.CLIENT;
+
+	String username() default UserTestFactory.NAME;
+
+	boolean organisationEinheitenIdCheckNecessary() default false;
+}
diff --git a/vorgang-manager-base/src/test/java/de/ozgcloud/vorgang/callcontext/WithMockCustomUserSecurityContextFactory.java b/vorgang-manager-base/src/test/java/de/ozgcloud/vorgang/callcontext/WithMockCustomUserSecurityContextFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..f88a2454a4d4902772a759c7e54f620ca0d32ac2
--- /dev/null
+++ b/vorgang-manager-base/src/test/java/de/ozgcloud/vorgang/callcontext/WithMockCustomUserSecurityContextFactory.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2024 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.vorgang.callcontext;
+
+import java.util.Optional;
+
+import org.springframework.security.core.context.SecurityContext;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.test.context.support.WithSecurityContextFactory;
+
+public class WithMockCustomUserSecurityContextFactory implements WithSecurityContextFactory<WithMockCustomUser> {
+
+	@Override
+	public SecurityContext createSecurityContext(WithMockCustomUser annotation) {
+		SecurityContext context = SecurityContextHolder.getContext();
+		context.setAuthentication(CallContextAuthenticationToken.authenticate(createUser(annotation)));
+		return context;
+	}
+
+	CallContextUser createUser(WithMockCustomUser mockCustomUser) {
+		var builder = CallContextUser.builder()
+				.userId(Optional.ofNullable(mockCustomUser.userId()))
+				.userName(Optional.ofNullable(mockCustomUser.username()))
+				.clientName(mockCustomUser.clientName())
+				.organisationEinheitenIdCheckNecessary(mockCustomUser.organisationEinheitenIdCheckNecessary());
+
+		return builder.build();
+	}
+}
diff --git a/vorgang-manager-server/pom.xml b/vorgang-manager-server/pom.xml
index 157251c1a1f3de988bc1466ff78316d304ff583c..c8f90d5eada01439f5c476210b2d754fa203f527 100644
--- a/vorgang-manager-server/pom.xml
+++ b/vorgang-manager-server/pom.xml
@@ -53,9 +53,9 @@
 		<zufi-manager-interface.version>1.0.0-SNAPSHOT</zufi-manager-interface.version>
 
 		<user-manager-interface.version>2.1.0</user-manager-interface.version>
-		<bescheid-manager.version>1.11.0</bescheid-manager.version>
+		<bescheid-manager.version>1.12.0-SNAPSHOT</bescheid-manager.version>
 		<processor-manager.version>0.4.0</processor-manager.version>
-		<ozgcloud-starter.version>0.7.0</ozgcloud-starter.version>
+		<ozgcloud-starter.version>0.9.0-SNAPSHOT</ozgcloud-starter.version>
 		<nachrichten-manager.version>2.7.0</nachrichten-manager.version>
 		<notification-manager.version>2.7.0</notification-manager.version>
 
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/VorgangManagerCallContextProvider.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/VorgangManagerCallContextProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..62811097900c5e6daee5d06831962184579d63b8
--- /dev/null
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/VorgangManagerCallContextProvider.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2024 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.vorgang;
+
+import java.util.Optional;
+
+import org.springframework.context.annotation.Primary;
+import org.springframework.stereotype.Component;
+
+import de.ozgcloud.apilib.common.callcontext.CallContext;
+import de.ozgcloud.apilib.common.callcontext.OzgCloudCallContextProvider;
+import de.ozgcloud.apilib.user.OzgCloudUserId;
+import de.ozgcloud.vorgang.callcontext.CurrentUserService;
+import de.ozgcloud.vorgang.callcontext.VorgangManagerClientCallContextAttachingInterceptor;
+import lombok.RequiredArgsConstructor;
+
+@Component
+@RequiredArgsConstructor
+@Primary
+public class VorgangManagerCallContextProvider implements OzgCloudCallContextProvider {
+
+	private final CurrentUserService currentUserService;
+
+	@Override
+	public CallContext provideContext() {
+		var callContextBuilder = CallContext.builder().clientName(VorgangManagerClientCallContextAttachingInterceptor.VORGANG_MANAGER_CLIENT_NAME);
+		getUserId().ifPresent(callContextBuilder::userId);
+		return callContextBuilder.build();
+	}
+
+	Optional<OzgCloudUserId> getUserId() {
+		return currentUserService.getUser().getUserId().map(OzgCloudUserId::from);
+	}
+}
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/processor/ProcessorITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/processor/ProcessorITCase.java
index 5de6cb8db43331157cd66b2f84a1f00b859ddba1..2688640366bfcfc09504f2db123a0dfba3fa12dc 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/processor/ProcessorITCase.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/processor/ProcessorITCase.java
@@ -28,6 +28,7 @@ import de.ozgcloud.processor.vorgang.Vorgang;
 import de.ozgcloud.processor.vorgang.VorgangId;
 import de.ozgcloud.processor.vorgang.VorgangService;
 import de.ozgcloud.vorgang.VorgangManagerServerApplication;
+import de.ozgcloud.vorgang.callcontext.WithMockCustomUser;
 import de.ozgcloud.vorgang.command.CommandService;
 import de.ozgcloud.vorgang.command.CreateCommandRequest;
 import de.ozgcloud.vorgang.command.PersistedCommand;
@@ -42,6 +43,7 @@ import de.ozgcloud.vorgang.vorgang.VorgangTestFactory;
 		"ozgcloud.command-manager.address=static://127.0.0.1:9091"
 }, classes = { VorgangManagerServerApplication.class })
 @ActiveProfiles({ "local", "itcase" })
+@WithMockCustomUser
 class ProcessorITCase {
 
 	@Autowired