diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidEventListener.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidEventListener.java
index 11ef0a2385acfb734221903f6b1c51770ba7d0cf..36634082bc191372c6ba846e3cf3b47f02154882 100644
--- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidEventListener.java
+++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidEventListener.java
@@ -81,6 +81,7 @@ class BescheidEventListener {
 
 	public static final Predicate<Command> IS_SEND_BESCHEID_COMMAND = command -> SEND_BESCHEID_ORDER.equals(command.getOrder());
 	private static final String IS_SEND_BESCHEID = "{T(de.ozgcloud.bescheid.BescheidEventListener).IS_SEND_BESCHEID_COMMAND.test(event.getSource())}";
+	private static final String IS_SEND_BESCHEID_ORDER = "{T(de.ozgcloud.bescheid.BescheidEventListener).IS_SEND_BESCHEID_COMMAND.test(event.getCommand())}";
 
 	static final String VORGANG_ID_BODY_KEY = "vorgangId";
 	static final String BESCHEID_VOM_BODY_KEY = "bescheidVom";
@@ -191,7 +192,7 @@ class BescheidEventListener {
 		return builder.build();
 	}
 
-	@EventListener(condition = IS_SEND_BESCHEID)
+	@EventListener(condition = IS_SEND_BESCHEID_ORDER)
 	public void onBescheidSent(CommandExecutedEvent event) {
 		runWithSecurityContext(event.getCommand(), this::setAntragBewilligung);
 	}
diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidService.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidService.java
index c7cf947305a114f2bec9c065a5d4b88212c48640..01523fc9b79f47b0fcf43987ff3771128570691d 100644
--- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidService.java
+++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidService.java
@@ -91,8 +91,7 @@ class BescheidService {
 	public void sendBescheidManually(AttachedItem bescheidItem, Command parentCommand) {
 		validateBescheidSendManually(bescheidItem, parentCommand.getRelationVersion());
 		var vorgang = vorgangService.getById(VorgangId.from(bescheidItem.getVorgangId()));
-		var subCommands = buildSetBescheidSentSubCommands(bescheidItem, vorgang, getUserId());
-		commandService.addSubCommands(buildCreateSubCommandsRequest(parentCommand.getId(), subCommands));
+		addSubCommands(parentCommand.getId(), buildSetBescheidSentSubCommands(bescheidItem, vorgang, getUserId()));
 	}
 
 	void validateBescheidSendManually(AttachedItem bescheidItem, long version) {
@@ -109,11 +108,7 @@ class BescheidService {
 		var userId = getUserId();
 		var subCommands = buildSetBescheidSentSubCommands(bescheidItem, vorgang, userId);
 		subCommands.add(buildSendPostfachNachrichtCommand(bescheidItem, vorgang.getServiceKonto(), userId));
-		commandService.addSubCommands(buildCreateSubCommandsRequest(parentCommand.getId(), subCommands));
-	}
-
-	String getUserId() {
-		return userProfileService.getUserProfile().getId().toString();
+		addSubCommands(parentCommand.getId(), subCommands);
 	}
 
 	public void validateBescheidSendPostfach(AttachedItem bescheidItem, long version) {
@@ -122,10 +117,10 @@ class BescheidService {
 		if (Bescheid.SendBy.NACHRICHT.notValue(sendBy)) {
 			throw new TechnicalException("Bescheid has unexpected sendBy value: '%s'. Expected is %s".formatted(sendBy, Bescheid.SendBy.NACHRICHT));
 		}
-		if (StringUtils.isBlank(getNachrichtSubject(bescheidItem))) {
+		if (getNachrichtSubject(bescheidItem).isEmpty()) {
 			throw new TechnicalException("Bescheid has no nachricht subject");
 		}
-		if (StringUtils.isBlank(getNachrichtText(bescheidItem))) {
+		if (getNachrichtText(bescheidItem).isEmpty()) {
 			throw new TechnicalException("Bescheid has no nachricht text");
 		}
 	}
@@ -143,32 +138,16 @@ class BescheidService {
 		}
 	}
 
-	FileId getBescheidFileId(AttachedItem bescheidItem) {
-		var bescheidDocument = attachedItemService.getItem(MapUtils.getString(bescheidItem.getItem(), Bescheid.FIELD_BESCHEID_DOCUMENT));
-		return FileId.from(MapUtils.getString(bescheidDocument.getItem(), Document.FIELD_DOCUMENT_FILE));
-	}
-
-	String getNachrichtSubject(AttachedItem bescheidItem) {
-		return MapUtils.getString(bescheidItem.getItem(), Bescheid.FIELD_NACHRICHT_SUBJECT);
-	}
-
-	String getNachrichtText(AttachedItem bescheidItem) {
-		return MapUtils.getString(bescheidItem.getItem(), Bescheid.FIELD_NACHRICHT_TEXT);
+	Optional<String> getNachrichtSubject(AttachedItem bescheidItem) {
+		return Optional.ofNullable(MapUtils.getString(bescheidItem.getItem(), Bescheid.FIELD_NACHRICHT_SUBJECT)).map(StringUtils::trimToNull);
 	}
 
-	List<FileId> getAttachments(AttachedItem bescheidItem) {
-		var attachmentsObject = bescheidItem.getItem().get(Bescheid.FIELD_ATTACHMENTS);
-		if (attachmentsObject instanceof Collection<?> attachments) {
-			return attachments.stream().map(String::valueOf).map(FileId::from).toList();
-		}
-		return getStringAsList(attachmentsObject);
+	Optional<String> getNachrichtText(AttachedItem bescheidItem) {
+		return Optional.ofNullable(MapUtils.getString(bescheidItem.getItem(), Bescheid.FIELD_NACHRICHT_TEXT)).map(StringUtils::trimToNull);
 	}
 
-	List<FileId> getStringAsList(Object attachmentsObject) {
-		if (attachmentsObject instanceof String attachment && StringUtils.isNotBlank(attachment)) {
-			return Collections.singletonList(FileId.from(attachment));
-		}
-		return Collections.emptyList();
+	String getUserId() {
+		return userProfileService.getUserProfile().getId().toString();
 	}
 
 	List<OzgCloudCommand> buildSetBescheidSentSubCommands(AttachedItem bescheidItem, Vorgang vorgang, String userId) {
@@ -222,13 +201,20 @@ class BescheidService {
 				.build();
 	}
 
-	Map<String, Object> buildSendNachrichtCommandBody(AttachedItem bescheidItem, Map<String, Object> serviceKonto) {
+	Map<String, Object> buildPostfachAddress(Vorgang.PostfachAddress postfachAddress, String serviceKontoType) {
+		return Map.of(Vorgang.PostfachAddress.FIELD_TYPE, postfachAddress.getType(),
+				Vorgang.PostfachAddress.FIELD_VERSION, postfachAddress.getVersion(),
+				Vorgang.PostfachAddress.FIELD_IDENTIFIER, postfachAddress.getIdentifier(),
+				Vorgang.ServiceKonto.FIELD_SERVICEKONTO_TYPE, serviceKontoType);
+	}
+
+	Map<String, Object> buildSendNachrichtCommandBody(AttachedItem bescheidItem, Map<String, Object> postfachAddress) {
 		return Map.of(
 				NachrichtService.FIELD_REPLY_OPTION, NachrichtService.REPLY_OPTION,
-				NachrichtService.FIELD_SUBJECT, Optional.ofNullable(getNachrichtSubject(bescheidItem)).orElse(NachrichtService.SUBJECT),
-				NachrichtService.FIELD_MAIL_BODY, Optional.ofNullable(getNachrichtText(bescheidItem)).orElse(StringUtils.EMPTY),
+				NachrichtService.FIELD_SUBJECT, getNachrichtSubject(bescheidItem).orElse(NachrichtService.SUBJECT),
+				NachrichtService.FIELD_MAIL_BODY, getNachrichtText(bescheidItem).orElse(StringUtils.EMPTY),
 				NachrichtService.FIELD_ATTACHMENTS, buildAttachments(bescheidItem),
-				Vorgang.ServiceKonto.FIELD_POSTFACH_ADDRESS, serviceKonto);
+				Vorgang.ServiceKonto.FIELD_POSTFACH_ADDRESS, postfachAddress);
 
 	}
 
@@ -236,11 +222,28 @@ class BescheidService {
 		return Stream.concat(Stream.of(getBescheidFileId(bescheidItem)), getAttachments(bescheidItem).stream()).map(FileId::toString).toList();
 	}
 
-	Map<String, Object> buildPostfachAddress(Vorgang.PostfachAddress postfachAddress, String serviceKontoType) {
-		return Map.of(Vorgang.PostfachAddress.FIELD_TYPE, postfachAddress.getType(),
-				Vorgang.PostfachAddress.FIELD_VERSION, postfachAddress.getVersion(),
-				Vorgang.PostfachAddress.FIELD_IDENTIFIER, postfachAddress.getIdentifier(),
-				Vorgang.ServiceKonto.FIELD_SERVICEKONTO_TYPE, serviceKontoType);
+	FileId getBescheidFileId(AttachedItem bescheidItem) {
+		var bescheidDocument = attachedItemService.getItem(MapUtils.getString(bescheidItem.getItem(), Bescheid.FIELD_BESCHEID_DOCUMENT));
+		return FileId.from(MapUtils.getString(bescheidDocument.getItem(), Document.FIELD_DOCUMENT_FILE));
+	}
+
+	List<FileId> getAttachments(AttachedItem bescheidItem) {
+		var attachmentsObject = bescheidItem.getItem().get(Bescheid.FIELD_ATTACHMENTS);
+		if (attachmentsObject instanceof Collection<?> attachments) {
+			return attachments.stream().map(String::valueOf).map(FileId::from).toList();
+		}
+		return getStringAsList(attachmentsObject);
+	}
+
+	List<FileId> getStringAsList(Object attachmentsObject) {
+		if (attachmentsObject instanceof String attachment && StringUtils.isNotBlank(attachment)) {
+			return Collections.singletonList(FileId.from(attachment));
+		}
+		return Collections.emptyList();
+	}
+
+	void addSubCommands(String parentCommandId, List<OzgCloudCommand> subCommands) {
+		commandService.addSubCommands(buildCreateSubCommandsRequest(parentCommandId, subCommands));
 	}
 
 	OzgCloudCreateSubCommandsRequest buildCreateSubCommandsRequest(String parentCommandId, List<OzgCloudCommand> subCommands) {
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 a04140c8749ecf574e63e3b8c5cae6178debfbac..24a67a215b953478b6bf2518432c37469eb94e42 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,7 +35,6 @@ import java.util.stream.Collectors;
 
 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;
 
@@ -45,16 +44,17 @@ import de.ozgcloud.apilib.common.command.grpc.CommandMapper;
 import de.ozgcloud.bescheid.Bescheid;
 import de.ozgcloud.bescheid.BescheidCallContextAttachingInterceptor;
 import de.ozgcloud.bescheid.BescheidManagerConfiguration;
-import de.ozgcloud.bescheid.common.callcontext.CurrentUserService;
 import de.ozgcloud.bescheid.common.freemarker.TemplateHandler;
 import de.ozgcloud.bescheid.vorgang.VorgangId;
 import de.ozgcloud.command.Command;
 import de.ozgcloud.common.errorhandling.TechnicalException;
 import de.ozgcloud.document.Document;
+import lombok.RequiredArgsConstructor;
 import lombok.extern.log4j.Log4j2;
 
 @Log4j2
 @Service
+@RequiredArgsConstructor
 public class AttachedItemService {
 
 	public static final String BESCHEID_ITEM_NAME = "Bescheid";
@@ -67,16 +67,10 @@ public class AttachedItemService {
 	static final String DEFAULT_TEMPLATE_FILE = "bescheid.nachrichtTemplate.txt.ftlh";
 
 	@Qualifier(BescheidManagerConfiguration.COMMAND_SERVICE_NAME)
-	@Autowired
-	private OzgCloudCommandService commandService;
-	@Autowired
-	private VorgangAttachedItemRemoteService remoteService;
-	@Autowired
-	private CommandMapper commandMapper;
-	@Autowired
-	private CurrentUserService currentUserService;
-	@Autowired
-	private TemplateHandler templateHandler;
+	private final OzgCloudCommandService commandService;
+	private final VorgangAttachedItemRemoteService remoteService;
+	private final CommandMapper commandMapper;
+	private final TemplateHandler templateHandler;
 
 	public Optional<AttachedItem> findBescheidItem(String vorgangId) {
 		return remoteService.findBescheidDraft(vorgangId);
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 127daad5721a5542074e8e4b2488256f005a3634..98689c96ea25c66ffcfbe9cab54556b148b7fc65 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,23 +1,15 @@
 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.OzgCloudCommandService;
-import de.ozgcloud.apilib.common.command.grpc.CommandMapper;
 import lombok.NonNull;
+import lombok.RequiredArgsConstructor;
 
 @Service("bescheid_VorgangService")
+@RequiredArgsConstructor
 public class VorgangService {
 
-	@Autowired
-	private VorgangRemoteService remoteService;
-	@Autowired
-	@Qualifier("bescheid_OzgCloudCommandService")
-	private OzgCloudCommandService commandService;
-	@Autowired
-	private CommandMapper commandMapper;
+	private final VorgangRemoteService remoteService;
 
 	public Vorgang getById(@NonNull VorgangId id) {
 		return remoteService.getById(id);
diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidServiceTest.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidServiceTest.java
index 6697f5fe8687a7524464e3a2fb01b1f86ff4cd62..35dfda817f0d99f53b690476edde6528ce1f7035 100644
--- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidServiceTest.java
+++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidServiceTest.java
@@ -5,11 +5,16 @@ import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
 
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 
+import org.apache.commons.lang3.StringUtils;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
@@ -26,13 +31,22 @@ import org.mockito.Spy;
 import org.springframework.boot.info.BuildProperties;
 import org.springframework.test.util.ReflectionTestUtils;
 
+import de.ozgcloud.apilib.common.command.OzgCloudCommand;
+import de.ozgcloud.apilib.common.command.OzgCloudCommandService;
+import de.ozgcloud.apilib.common.command.OzgCloudCreateSubCommandsRequest;
+import de.ozgcloud.apilib.common.command.grpc.CommandMapper;
+import de.ozgcloud.apilib.common.datatypes.GenericId;
+import de.ozgcloud.apilib.user.OzgCloudUserId;
+import de.ozgcloud.apilib.vorgang.OzgCloudVorgangId;
 import de.ozgcloud.bescheid.attacheditem.AttachedItem;
 import de.ozgcloud.bescheid.attacheditem.AttachedItemService;
 import de.ozgcloud.bescheid.attacheditem.AttachedItemTestFactory;
 import de.ozgcloud.bescheid.attributes.ClientAttributeService;
 import de.ozgcloud.bescheid.common.user.UserProfile;
 import de.ozgcloud.bescheid.common.user.UserProfileService;
+import de.ozgcloud.bescheid.common.user.UserProfileTestFactory;
 import de.ozgcloud.bescheid.nachricht.NachrichtService;
+import de.ozgcloud.bescheid.vorgang.PostfachAddressTestFactory;
 import de.ozgcloud.bescheid.vorgang.ServiceKontoTestFactory;
 import de.ozgcloud.bescheid.vorgang.Vorgang;
 import de.ozgcloud.bescheid.vorgang.VorgangId;
@@ -40,11 +54,14 @@ import de.ozgcloud.bescheid.vorgang.VorgangService;
 import de.ozgcloud.bescheid.vorgang.VorgangTestFactory;
 import de.ozgcloud.command.CommandTestFactory;
 import de.ozgcloud.common.binaryfile.FileId;
+import de.ozgcloud.common.datatype.StringBasedValue;
 import de.ozgcloud.common.errorhandling.TechnicalException;
 import de.ozgcloud.document.DocumentTestFactory;
 
 class BescheidServiceTest {
 
+	private static final String USER_ID = "user-id";
+
 	@Spy
 	@InjectMocks
 	private BescheidService service;
@@ -52,19 +69,19 @@ class BescheidServiceTest {
 	@Mock
 	private VorgangService vorgangService;
 	@Mock
-	private BescheidRemoteService remoteService;
-	@Mock
 	private AttachedItemService attachedItemService;
 	@Mock
-	private NachrichtService nachrichtService;
-	@Mock
 	private UserProfileService userProfileService;
 	@Mock
-	private UserProfile callContextUser;
+	private OzgCloudCommandService commandService;
+	@Mock
+	private CommandMapper commandMapper;
 	@Mock
 	private ClientAttributeService clientAttributeService;
 	@Mock
 	private BuildProperties buildProperties;
+	@Mock
+	private BescheidRemoteService remoteService;
 
 	@BeforeEach
 	void init() {
@@ -110,11 +127,24 @@ class BescheidServiceTest {
 	@Nested
 	class TestSendBescheidManually {
 
+		private static final Vorgang VORGANG = VorgangTestFactory.create();
+
+		@Mock
+		private OzgCloudCommand subCommand;
+
+		@Captor
+		private ArgumentCaptor<VorgangId> vorgangIdCaptor;
+		@Captor
+		private ArgumentCaptor<List<OzgCloudCommand>> subCommandsCaptor;
+
 		private final AttachedItem bescheidItem = AttachedItemTestFactory.createBescheid();
 
 		@BeforeEach
 		void init() {
 			doNothing().when(service).validateBescheidSendManually(any(), anyLong());
+			doNothing().when(service).addSubCommands(any(), any());
+			doReturn(USER_ID).when(service).getUserId();
+			when(vorgangService.getById(any())).thenReturn(VORGANG);
 		}
 
 		@Test
@@ -125,14 +155,40 @@ class BescheidServiceTest {
 		}
 
 		@Test
-		void shouldCallSendBescheid() {
+		void shouldCallGetVorgang() {
 			sendBescheid();
 
-			verify(service).setBescheidSent(bescheidItem);
+			verify(vorgangService).getById(vorgangIdCaptor.capture());
+			assertThat(vorgangIdCaptor.getValue()).hasToString(CommandTestFactory.VORGANG_ID);
+		}
+
+		@Test
+		void shouldCallGetUserId() {
+			sendBescheid();
+
+			verify(service).getUserId();
+		}
+
+		@Test
+		void shouldCallBuildSetBescheidSentSubCommands() {
+			sendBescheid();
+
+			verify(service).buildSetBescheidSentSubCommands(bescheidItem, VORGANG, USER_ID);
+		}
+
+		@Test
+		void shouldCallAddSubCommands() {
+			doReturn(List.of(subCommand)).when(service).buildSetBescheidSentSubCommands(any(), any(), any());
+
+			sendBescheid();
+
+			verify(service).addSubCommands(eq(CommandTestFactory.ID), subCommandsCaptor.capture());
+			assertThat(subCommandsCaptor.getValue()).containsExactly(subCommand);
 		}
 
 		private void sendBescheid() {
-			service.sendBescheidManually(bescheidItem, AttachedItemTestFactory.VERSION);
+			var parentCommand = CommandTestFactory.createBuilder().relationVersion(AttachedItemTestFactory.VERSION).build();
+			service.sendBescheidManually(bescheidItem, parentCommand);
 		}
 	}
 
@@ -171,38 +227,41 @@ class BescheidServiceTest {
 	@Nested
 	class TestSendBescheidPostfachMail {
 
-		private AttachedItem bescheidItem;
+		private static final Vorgang.ServiceKonto SERVICE_KONTO = ServiceKontoTestFactory.create();
+		private static final Vorgang VORGANG = VorgangTestFactory.createBuilder().serviceKonto(SERVICE_KONTO).build();
+
+		private static final AttachedItem BESCHEID_ITEM = AttachedItemTestFactory.createBescheid();
+
 		@Mock
-		private AttachedItem bescheidSendItem;
+		private OzgCloudCommand setBescheidSentSubCommand;
+		@Mock
+		private OzgCloudCommand sendPostfachNachrichtSubCommand;
 		@Captor
 		private ArgumentCaptor<VorgangId> vorgangIdCaptor;
+		@Captor
+		private ArgumentCaptor<List<OzgCloudCommand>> subCommandsCaptor;
 
 		@BeforeEach
 		void init() {
-			var item = AttachedItemTestFactory.createBescheidItem();
-			item.put(Bescheid.FIELD_SEND_BY, Bescheid.SendBy.NACHRICHT.name());
-			bescheidItem = AttachedItemTestFactory.createBescheidBuilder().item(item).build();
-
 			doNothing().when(service).validateBescheidSendPostfach(any(), anyLong());
-			lenient().when(callContextUser.getId()).thenReturn(UserId.from("user-id"));
-			lenient().when(userProfileService.getUserProfile()).thenReturn(callContextUser);
+			doNothing().when(service).addSubCommands(any(), any());
+			doReturn(USER_ID).when(service).getUserId();
+			var subCommands = new ArrayList<OzgCloudCommand>();
+			subCommands.add(setBescheidSentSubCommand);
+			doReturn(subCommands).when(service).buildSetBescheidSentSubCommands(any(), any(), any());
+			doReturn(sendPostfachNachrichtSubCommand).when(service).buildSendPostfachNachrichtCommand(any(), any(), any());
+			when(vorgangService.getById(any())).thenReturn(VORGANG);
 		}
 
 		@Test
 		void shouldCallValidateBescheid() {
-			doReturn(BescheidTestFactory.create()).when(service).buildBescheid(any(), any());
-			when(vorgangService.getById(any())).thenReturn(VorgangTestFactory.create());
-
 			sendBescheid();
 
-			verify(service).validateBescheidSendPostfach(bescheidItem, AttachedItemTestFactory.VERSION);
+			verify(service).validateBescheidSendPostfach(BESCHEID_ITEM, AttachedItemTestFactory.VERSION);
 		}
 
 		@Test
 		void shouldCallVorgangService() {
-			doReturn(BescheidTestFactory.create()).when(service).buildBescheid(any(), any());
-			when(vorgangService.getById(any())).thenReturn(VorgangTestFactory.create());
-
 			sendBescheid();
 
 			verify(vorgangService).getById(vorgangIdCaptor.capture());
@@ -210,40 +269,37 @@ class BescheidServiceTest {
 		}
 
 		@Test
-		void shouldCallBuildBescheid() {
-			doReturn(BescheidTestFactory.create()).when(service).buildBescheid(any(), any());
-			var serviceKonto = ServiceKontoTestFactory.create();
-			var vorgang = VorgangTestFactory.createBuilder().serviceKonto(serviceKonto).build();
-			doReturn(vorgang).when(vorgangService).getById(any());
-
+		void shouldCallGetUserId() {
 			sendBescheid();
 
-			verify(service).buildBescheid(bescheidItem, serviceKonto);
+			verify(service).getUserId();
 		}
 
 		@Test
-		void shouldCallNachrichtService() {
-			var bescheid = BescheidTestFactory.create();
-			doReturn(bescheid).when(service).buildBescheid(any(), any());
-			when(vorgangService.getById(any())).thenReturn(VorgangTestFactory.create());
-
+		void shouldCallBuildSetBescheidSentSubCommands() {
 			sendBescheid();
 
-			verify(nachrichtService).sendNachricht(bescheid);
+			verify(service).buildSetBescheidSentSubCommands(BESCHEID_ITEM, VORGANG, USER_ID);
 		}
 
 		@Test
-		void shouldCallSendBescheid() {
-			doReturn(BescheidTestFactory.create()).when(service).buildBescheid(any(), any());
-			when(vorgangService.getById(any())).thenReturn(VorgangTestFactory.create());
+		void shouldCallBuildSendPostfachNachrichtCommand() {
+			sendBescheid();
+
+			verify(service).buildSendPostfachNachrichtCommand(BESCHEID_ITEM, SERVICE_KONTO, USER_ID);
+		}
 
+		@Test
+		void shouldCallAddSubCommands() {
 			sendBescheid();
 
-			verify(service).setBescheidSent(bescheidItem);
+			verify(service).addSubCommands(eq(CommandTestFactory.ID), subCommandsCaptor.capture());
+			assertThat(subCommandsCaptor.getValue()).containsExactly(setBescheidSentSubCommand, sendPostfachNachrichtSubCommand);
 		}
 
 		private void sendBescheid() {
-			service.sendBescheidPostfachMail(bescheidItem, AttachedItemTestFactory.VERSION);
+			var parentCommand = CommandTestFactory.createBuilder().relationVersion(AttachedItemTestFactory.VERSION).build();
+			service.sendBescheidPostfachMail(BESCHEID_ITEM, parentCommand);
 		}
 	}
 
@@ -352,114 +408,6 @@ class BescheidServiceTest {
 		}
 	}
 
-	@Nested
-	class TestBuildBescheid {
-
-		private static final AttachedItem BESCHEID_ITEM = AttachedItemTestFactory.createBescheid();
-		private static final Vorgang.ServiceKonto SERVICE_KONTO = ServiceKontoTestFactory.create();
-		private static final String CREATED_BY = "user-id";
-
-		@BeforeEach
-		void init() {
-			when(callContextUser.getId()).thenReturn(UserId.from(CREATED_BY));
-			when(userProfileService.getUserProfile()).thenReturn(callContextUser);
-			doReturn(FileId.from(DocumentTestFactory.DOCUMENT_FILE)).when(service).getBescheidFileId(any());
-		}
-
-		@Test
-		void shouldSetVorgangId() {
-			var result = buildBescheid();
-
-			assertThat(result.getVorgangId()).hasToString(CommandTestFactory.VORGANG_ID);
-		}
-
-		@Test
-		void shouldCallGetBewilligt() {
-			buildBescheid();
-
-			verify(service).getBewilligt(BESCHEID_ITEM);
-		}
-
-		@Test
-		void shouldSetGenehmigt() {
-			doReturn(true).when(service).getBewilligt(any());
-
-			var result = buildBescheid();
-
-			assertThat(result.isGenehmigt()).isTrue();
-		}
-
-		@Test
-		void shouldCallGetAttachments() {
-			buildBescheid();
-
-			verify(service).getAttachments(BESCHEID_ITEM);
-		}
-
-		@Test
-		void shouldSetAttachments() {
-			var expectedAttachments = List.of(FileId.from(AttachedItemTestFactory.ATTACHMENT));
-			doReturn(expectedAttachments).when(service).getAttachments(any());
-
-			var result = buildBescheid();
-
-			assertThat(result.getAttachments()).containsExactlyElementsOf(expectedAttachments);
-		}
-
-		@Test
-		void shouldCallGetBescheidFileId() {
-			buildBescheid();
-
-			verify(service).getBescheidFileId(BESCHEID_ITEM);
-		}
-
-		@Test
-		void shouldSetBescheidFileId() {
-			var result = buildBescheid();
-
-			assertThat(result.getBescheidFileId()).hasToString(DocumentTestFactory.DOCUMENT_FILE);
-		}
-
-		@Test
-		void shouldSetNachrichtSubject() {
-			var result = buildBescheid();
-
-			assertThat(result.getNachrichtSubject()).contains(AttachedItemTestFactory.NACHRICHT_SUBJECT);
-		}
-
-		@Test
-		void shouldSetNachrichtText() {
-			var result = buildBescheid();
-
-			assertThat(result.getNachrichtText()).contains(AttachedItemTestFactory.NACHRICHT_TEXT);
-		}
-
-		@Test
-		void shouldCallCurrentUserService() {
-			buildBescheid();
-
-			verify(userProfileService).getUserProfile();
-		}
-
-		@Test
-		void shouldSetCreatedBy() {
-			var result = buildBescheid();
-
-			assertThat(result.getCreatedBy()).hasToString(CREATED_BY);
-		}
-
-		@Test
-		void shouldSetServiceKonto() {
-			var result = buildBescheid();
-
-			assertThat(result.getServiceKonto()).usingRecursiveComparison().isEqualTo(SERVICE_KONTO);
-		}
-
-		private Bescheid buildBescheid() {
-			return service.buildBescheid(BESCHEID_ITEM, SERVICE_KONTO);
-		}
-	}
-
 	@Nested
 	class TestGetAttachments {
 
@@ -540,6 +488,33 @@ class BescheidServiceTest {
 		}
 	}
 
+	@Nested
+	class TestAddSubCommands {
+
+		@Mock
+		private OzgCloudCommand subCommand;
+		@Mock
+		private OzgCloudCreateSubCommandsRequest createSubCommandsRequest;
+
+		@Test
+		void shouldCallBuildCreateSubCommandsRequest() {
+			var subCommands = List.of(subCommand);
+
+			service.addSubCommands(CommandTestFactory.ID, subCommands);
+
+			verify(service).buildCreateSubCommandsRequest(CommandTestFactory.ID, subCommands);
+		}
+
+		@Test
+		void shouldCallCommandService() {
+			doReturn(createSubCommandsRequest).when(service).buildCreateSubCommandsRequest(any(), any());
+
+			service.addSubCommands(CommandTestFactory.ID, List.of(subCommand));
+
+			verify(commandService).addSubCommands(createSubCommandsRequest);
+		}
+	}
+
 	@Nested
 	class TestGetBescheidFileId {
 
@@ -573,7 +548,7 @@ class BescheidServiceTest {
 
 			var result = service.getNachrichtSubject(bescheidItem);
 
-			assertThat(result).isEqualTo(AttachedItemTestFactory.NACHRICHT_SUBJECT);
+			assertThat(result).contains(AttachedItemTestFactory.NACHRICHT_SUBJECT);
 		}
 	}
 
@@ -587,49 +562,536 @@ class BescheidServiceTest {
 
 			var result = service.getNachrichtText(bescheidItem);
 
-			assertThat(result).isEqualTo(AttachedItemTestFactory.NACHRICHT_TEXT);
+			assertThat(result).contains(AttachedItemTestFactory.NACHRICHT_TEXT);
 		}
 	}
 
 	@Nested
-	class TestSendBescheid {
+	class TestGetUserId {
 
-		private final AttachedItem bescheidItem = AttachedItemTestFactory.createBescheid();
 		@Mock
-		private AttachedItem bescheidSendItem;
+		private UserProfile userProfile;
+
+		@BeforeEach
+		void init() {
+			when(userProfileService.getUserProfile()).thenReturn(userProfile);
+			when(userProfile.getId()).thenReturn(UserProfileTestFactory.ID);
+
+		}
 
 		@Test
-		void shouldCallSetBescheidStatusSent() {
-			sendBescheid();
+		void shouldCallGetUserProfile() {
+			service.getUserId();
 
-			verify(attachedItemService).setBescheidSentStatus(AttachedItemTestFactory.ID, AttachedItemTestFactory.VERSION);
+			verify(userProfileService).getUserProfile();
 		}
 
 		@Test
-		void shouldCallBescheiden() {
-			sendBescheid();
+		void shouldReturnUserId() {
+			var result = service.getUserId();
+
+			assertThat(result).isEqualTo(UserProfileTestFactory.ID.toString());
+		}
+	}
+
+	@Nested
+	class TestBuildSetBescheidSentCommands {
+
+		@Mock
+		private AttachedItem bescheidItem;
+		@Mock
+		private Vorgang vorgang;
+		@Mock
+		private OzgCloudCommand vorgangBescheidenCommand;
+		@Mock
+		private OzgCloudCommand setBescheidSentStatusCommand;
 
-			verify(vorgangService).bescheiden(CommandTestFactory.VORGANG_ID);
+		@BeforeEach
+		void inti() {
+			doReturn(vorgangBescheidenCommand).when(service).buildVorgangBescheidenCommand(any());
+			doReturn(setBescheidSentStatusCommand).when(service).buildSetBescheidSentStatusCommand(any(), any());
 		}
 
 		@Test
-		void shouldCallRevertBescheidStatusSent() {
-			doThrow(new TechnicalException("error")).when(vorgangService).bescheiden(anyString());
+		void shouldCallBuildVorgangBescheidenCommand() {
+			buildSetBescheidSentCommands();
+
+			verify(service).buildVorgangBescheidenCommand(vorgang);
+		}
 
-			assertThrows(TechnicalException.class, this::sendBescheid);
+		@Test
+		void shouldCallBuildSetBescheidSentStatusCommand() {
+			buildSetBescheidSentCommands();
 
-			verify(attachedItemService).revertBescheidSendStatus(AttachedItemTestFactory.ID, AttachedItemTestFactory.VERSION);
+			verify(service).buildSetBescheidSentStatusCommand(bescheidItem, USER_ID);
 		}
 
 		@Test
-		void shouldCallSetAntragResult() {
-			sendBescheid();
+		void shouldReturnResult() {
+			var result = buildSetBescheidSentCommands();
 
-			verify(service).setAntragBewilligung(bescheidItem);
+			assertThat(result).containsExactly(vorgangBescheidenCommand, setBescheidSentStatusCommand);
 		}
 
-		private void sendBescheid() {
-			service.setBescheidSent(bescheidItem);
+		private List<OzgCloudCommand> buildSetBescheidSentCommands() {
+			return service.buildSetBescheidSentSubCommands(bescheidItem, vorgang, USER_ID);
+		}
+	}
+
+	@Nested
+	class TestBuildVorgangBescheidenCommand {
+
+		private static final OzgCloudVorgangId VORGANG_ID = OzgCloudVorgangId.from(VorgangTestFactory.ID.toString());
+		private static final StringBasedValue RELATION_ID = GenericId.from(VorgangTestFactory.ID.toString());
+
+		@BeforeEach
+		void init() {
+			when(commandMapper.toOzgCloudVorgangId(anyString())).thenReturn(VORGANG_ID);
+			when(commandMapper.mapRelationId(anyString())).thenReturn(RELATION_ID);
+		}
+
+		@Test
+		void shouldCallMapVorgangId() {
+			buildVorgangBescheidenCommand();
+
+			verify(commandMapper).toOzgCloudVorgangId(VorgangTestFactory.ID.toString());
+		}
+
+		@Test
+		void shouldSetVorgangId() {
+			var result = buildVorgangBescheidenCommand();
+
+			assertThat(result.getVorgangId()).isEqualTo(VORGANG_ID);
+		}
+
+		@Test
+		void shouldCallMapRelationId() {
+			buildVorgangBescheidenCommand();
+
+			verify(commandMapper).mapRelationId(VorgangTestFactory.ID.toString());
+		}
+
+		@Test
+		void shouldSetRelationId() {
+			var result = buildVorgangBescheidenCommand();
+
+			assertThat(result.getRelationId()).isEqualTo(RELATION_ID);
+		}
+
+		@Test
+		void shouldSetRelationVersion() {
+			var result = buildVorgangBescheidenCommand();
+
+			assertThat(result.getRelationVersion()).isEqualTo(VorgangTestFactory.VERSION);
+		}
+
+		@Test
+		void shouldSetOrder() {
+			var result = buildVorgangBescheidenCommand();
+
+			assertThat(result.getOrder()).isEqualTo(BescheidService.VORGANG_BESCHEIDEN_ORDER);
+		}
+
+		private OzgCloudCommand buildVorgangBescheidenCommand() {
+			return service.buildVorgangBescheidenCommand(VorgangTestFactory.create());
+		}
+	}
+
+	@Nested
+	class TestBuildSetBescheidSentStatusCommand {
+
+		private static final StringBasedValue RELATION_ID = GenericId.from(VorgangTestFactory.ID.toString());
+		private static final AttachedItem BESCHEID_ITEM = AttachedItemTestFactory.createBescheid();
+
+		@BeforeEach
+		void init() {
+			when(commandMapper.mapRelationId(any())).thenReturn(RELATION_ID);
+		}
+
+		@Test
+		void shouldCallMapRelationId() {
+			buildSetBescheidSentStatusCommand();
+
+			verify(commandMapper).mapRelationId(AttachedItemTestFactory.ID);
+		}
+
+		@Test
+		void shouldSetRelationId() {
+			var result = buildSetBescheidSentStatusCommand();
+
+			assertThat(result.getRelationId()).isEqualTo(RELATION_ID);
+		}
+
+		@Test
+		void shouldSetRelationVersion() {
+			var result = buildSetBescheidSentStatusCommand();
+
+			assertThat(result.getRelationVersion()).isEqualTo(AttachedItemTestFactory.VERSION);
+		}
+
+		@Test
+		void shouldSetOrder() {
+			var result = buildSetBescheidSentStatusCommand();
+
+			assertThat(result.getOrder()).isEqualTo(AttachedItemService.PATCH_ATTACHED_ITEM);
+		}
+
+		@Test
+		void shouldSetPropertyId() {
+			var result = buildSetBescheidSentStatusCommand();
+
+			assertThat(result.getBodyObject()).containsEntry(AttachedItem.PROPERTY_ID, AttachedItemTestFactory.ID);
+		}
+
+		@Test
+		void shouldCallBuildBescheidSentStatusItem() {
+			buildSetBescheidSentStatusCommand();
+
+			verify(service).buildBescheidSentStatusItem(USER_ID);
+		}
+
+		@Test
+		void shouldSetPropertyItem() {
+			var itemMap = Map.of("key", "value");
+			doReturn(itemMap).when(service).buildBescheidSentStatusItem(any());
+
+			var result = buildSetBescheidSentStatusCommand();
+
+			assertThat(result.getBodyObject()).containsEntry(AttachedItem.PROPERTY_ITEM, itemMap);
+		}
+
+		private OzgCloudCommand buildSetBescheidSentStatusCommand() {
+			return service.buildSetBescheidSentStatusCommand(BESCHEID_ITEM, USER_ID);
+		}
+	}
+
+	@Nested
+	class TestBuildBescheidSentStatusItem {
+
+		@Test
+		void shouldSetStatus() {
+			var result = service.buildBescheidSentStatusItem(USER_ID);
+
+			assertThat(result).containsEntry(Bescheid.FIELD_STATUS, Bescheid.Status.SENT.name());
+		}
+
+		@Test
+		void shouldCallBuildSentInfoMap() {
+			service.buildBescheidSentStatusItem(USER_ID);
+
+			verify(service).buildSentInfoMap(USER_ID);
+		}
+
+		@Test
+		void shouldSetSentInfo() {
+			var sentInfoMap = Map.of("key", "value");
+			doReturn(sentInfoMap).when(service).buildSentInfoMap(any());
+
+			var result = service.buildBescheidSentStatusItem(USER_ID);
+
+			assertThat(result).containsEntry(Bescheid.FIELD_SENT_INFO, sentInfoMap);
+		}
+	}
+
+	@Nested
+	class TestBuildSentInfoMap {
+
+		@Test
+		void shouldSetSentAt() {
+			var result = service.buildSentInfoMap(USER_ID);
+
+			assertThat(getSentAt(result)).isCloseTo(ZonedDateTime.now(), within(1, ChronoUnit.SECONDS));
+		}
+
+		@Test
+		void shouldSetSentBy() {
+			var result = service.buildSentInfoMap(USER_ID);
+
+			assertThat(result).containsEntry(Bescheid.FIELD_SENT_BY, USER_ID);
+		}
+
+		private ZonedDateTime getSentAt(Map<String, Object> sentInfoMap) {
+			return ZonedDateTime.parse((String) sentInfoMap.get(Bescheid.FIELD_SENT_AT), DateTimeFormatter.ISO_DATE_TIME);
+		}
+	}
+
+	@Nested
+	class TestBuildSendPostfachNachrichtCommand {
+
+		private static final AttachedItem BESCHEID_ITEM = AttachedItemTestFactory.createBescheid();
+		private static final Vorgang.PostfachAddress POSTFACH_ADDRESS = PostfachAddressTestFactory.create();
+		private static final OzgCloudUserId OZG_CLOUD_USER_ID = OzgCloudUserId.from(USER_ID);
+		private static final Map<String, Object> OBJECT_MAP = Map.of("key", "value");
+		private static final OzgCloudVorgangId VORGANG_ID = OzgCloudVorgangId.from(VorgangTestFactory.ID.toString());
+		private static final StringBasedValue RELATION_ID = GenericId.from(VorgangTestFactory.ID.toString());
+
+		@BeforeEach
+		void init() {
+			when(commandMapper.toOzgCloudVorgangId(anyString())).thenReturn(VORGANG_ID);
+			when(commandMapper.mapRelationId(anyString())).thenReturn(RELATION_ID);
+			when(commandMapper.toOzgCloudUserId(anyString())).thenReturn(OZG_CLOUD_USER_ID);
+			doReturn(OBJECT_MAP).when(service).buildSendNachrichtCommandBody(any(), any());
+		}
+
+		@Test
+		void shouldCallBuildPostfachAddress() {
+			buildSendPostfachNachrichtCommand();
+
+			verify(service).buildPostfachAddress(POSTFACH_ADDRESS, ServiceKontoTestFactory.TYPE);
+		}
+
+		@Test
+		void shouldCallBuildSenNachrichtCommandBody() {
+			var postfachAddressMap = Map.<String, Object>of("key", "value");
+			doReturn(postfachAddressMap).when(service).buildPostfachAddress(any(), any());
+
+			buildSendPostfachNachrichtCommand();
+
+			verify(service).buildSendNachrichtCommandBody(BESCHEID_ITEM, postfachAddressMap);
+		}
+
+		@Test
+		void shouldSetBodyObject() {
+			var result = buildSendPostfachNachrichtCommand();
+
+			assertThat(result.getBodyObject()).isSameAs(OBJECT_MAP);
+		}
+
+		@Test
+		void shouldCallMapVorgangId() {
+			buildSendPostfachNachrichtCommand();
+
+			verify(commandMapper).toOzgCloudVorgangId(CommandTestFactory.VORGANG_ID);
+		}
+
+		@Test
+		void shouldSetVorgangId() {
+			var result = buildSendPostfachNachrichtCommand();
+
+			assertThat(result.getVorgangId()).isEqualTo(VORGANG_ID);
+		}
+
+		@Test
+		void shouldCallMapRelationId() {
+			buildSendPostfachNachrichtCommand();
+
+			verify(commandMapper).mapRelationId(CommandTestFactory.VORGANG_ID);
+		}
+
+		@Test
+		void shouldSetRelationId() {
+			var result = buildSendPostfachNachrichtCommand();
+
+			assertThat(result.getRelationId()).isEqualTo(RELATION_ID);
+		}
+
+		@Test
+		void shouldSetOrder() {
+			var result = buildSendPostfachNachrichtCommand();
+
+			assertThat(result.getOrder()).isEqualTo(BescheidService.SEND_POSTFACH_NACHRICHT_ORDER);
+		}
+
+		@Test
+		void shouldCallMapToOzgCloudUserId() {
+			buildSendPostfachNachrichtCommand();
+
+			verify(commandMapper).toOzgCloudUserId(USER_ID);
+		}
+
+		@Test
+		void shouldSetCreatedBy() {
+			var result = buildSendPostfachNachrichtCommand();
+
+			assertThat(result.getCreatedBy()).isEqualTo(OZG_CLOUD_USER_ID);
+		}
+
+		private OzgCloudCommand buildSendPostfachNachrichtCommand() {
+			var serviceKonto = ServiceKontoTestFactory.createBuilder().clearPostfachAddresses().postfachAddress(POSTFACH_ADDRESS).build();
+			return service.buildSendPostfachNachrichtCommand(BESCHEID_ITEM, serviceKonto, USER_ID);
+		}
+	}
+
+	@Nested
+	class TestBuildPostfachAddress {
+
+		@Test
+		void shouldSetType() {
+			var result = buildPostfachAddress();
+
+			assertThat(result).containsEntry(Vorgang.PostfachAddress.FIELD_TYPE, PostfachAddressTestFactory.TYPE);
+		}
+
+		@Test
+		void shouldSetVersion() {
+			var result = buildPostfachAddress();
+
+			assertThat(result).containsEntry(Vorgang.PostfachAddress.FIELD_VERSION, PostfachAddressTestFactory.VERSION);
+		}
+
+		@Test
+		void shouldSetIdentifier() {
+			var result = buildPostfachAddress();
+
+			assertThat(result).extracting(Vorgang.PostfachAddress.FIELD_IDENTIFIER, MAP)
+					.containsEntry(NachrichtService.FIELD_POSTFACH_ID, PostfachAddressTestFactory.POSTFACH_ID);
+		}
+
+		@Test
+		void shouldSetServicekontoType() {
+			var result = buildPostfachAddress();
+
+			assertThat(result).containsEntry(Vorgang.ServiceKonto.FIELD_SERVICEKONTO_TYPE, ServiceKontoTestFactory.TYPE);
+		}
+
+		private Map<String, Object> buildPostfachAddress() {
+			return service.buildPostfachAddress(PostfachAddressTestFactory.create(), ServiceKontoTestFactory.TYPE);
+		}
+	}
+
+	@Nested
+	class TestBuildSendNachrichtCommandBody {
+
+		private static final Map<String, Object> SERVICE_KONTO_MAP = Map.of("key", "value");
+
+		@Mock
+		private AttachedItem bescheidItem;
+
+		private Map<String, Object> buildSendNachrichtCommandBody() {
+			return service.buildSendNachrichtCommandBody(bescheidItem, SERVICE_KONTO_MAP);
+		}
+
+		@Nested
+		class TestWithValuesFromBescheidItem {
+
+			@BeforeEach
+			void init() {
+				doReturn(Optional.of(AttachedItemTestFactory.NACHRICHT_SUBJECT)).when(service).getNachrichtSubject(any());
+				doReturn(Optional.of(AttachedItemTestFactory.NACHRICHT_TEXT)).when(service).getNachrichtText(any());
+				doReturn(List.of(AttachedItemTestFactory.ATTACHMENT)).when(service).buildAttachments(any());
+			}
+
+			@Test
+			void shouldSetReplyOption() {
+				var result = buildSendNachrichtCommandBody();
+
+				assertThat(result).containsEntry(NachrichtService.FIELD_REPLY_OPTION, NachrichtService.REPLY_OPTION);
+			}
+
+			@Test
+			void shouldCallGetNachrichtSubject() {
+				buildSendNachrichtCommandBody();
+
+				verify(service).getNachrichtSubject(bescheidItem);
+			}
+
+			@Test
+			void shouldSetSubject() {
+				var result = buildSendNachrichtCommandBody();
+
+				assertThat(result).containsEntry(NachrichtService.FIELD_SUBJECT, AttachedItemTestFactory.NACHRICHT_SUBJECT);
+			}
+
+			@Test
+			void shouldCallGetNachrichtText() {
+				buildSendNachrichtCommandBody();
+
+				verify(service).getNachrichtText(bescheidItem);
+			}
+
+			@Test
+			void shouldSetMailBody() {
+				var result = buildSendNachrichtCommandBody();
+
+				assertThat(result).containsEntry(NachrichtService.FIELD_MAIL_BODY, AttachedItemTestFactory.NACHRICHT_TEXT);
+			}
+
+			@Test
+			void shouldCallBuildAttachments() {
+				buildSendNachrichtCommandBody();
+
+				verify(service).buildAttachments(bescheidItem);
+			}
+
+			@Test
+			void shouldSetAttachments() {
+				var result = buildSendNachrichtCommandBody();
+
+				assertThat(result).extracting(NachrichtService.FIELD_ATTACHMENTS, LIST).containsExactly(AttachedItemTestFactory.ATTACHMENT);
+			}
+
+			@Test
+			void shouldSetPostfachAddress() {
+				var result = buildSendNachrichtCommandBody();
+
+				assertThat(result).containsEntry(Vorgang.ServiceKonto.FIELD_POSTFACH_ADDRESS, SERVICE_KONTO_MAP);
+			}
+		}
+
+		@Nested
+		class TestWithDefaultValues {
+
+			@BeforeEach
+			void init() {
+				doReturn(Optional.empty()).when(service).getNachrichtSubject(any());
+				doReturn(Optional.empty()).when(service).getNachrichtText(any());
+				doReturn(Collections.emptyList()).when(service).buildAttachments(any());
+			}
+
+			@Test
+			void shouldSetSubject() {
+				var result = buildSendNachrichtCommandBody();
+
+				assertThat(result).containsEntry(NachrichtService.FIELD_SUBJECT, NachrichtService.SUBJECT);
+			}
+
+			@Test
+			void shouldSetMailBody() {
+				var result = buildSendNachrichtCommandBody();
+
+				assertThat(result).containsEntry(NachrichtService.FIELD_MAIL_BODY, StringUtils.EMPTY);
+			}
+		}
+	}
+
+	@Nested
+	class TestBuildAttachments {
+
+		private static final String BESCHEID_FILE_ID = "bescheid-file-id";
+		private static final String ATTACHMENT_FILE_ID = "attachment-file-id";
+
+		@Mock
+		private AttachedItem bescheidItem;
+
+		@BeforeEach
+		void init() {
+			doReturn(FileId.from(BESCHEID_FILE_ID)).when(service).getBescheidFileId(any());
+			doReturn(List.of(FileId.from(ATTACHMENT_FILE_ID))).when(service).getAttachments(any());
+		}
+
+		@Test
+		void shouldCallGetBescheidFileId() {
+			buildAttachments();
+
+			verify(service).getBescheidFileId(bescheidItem);
+		}
+
+		@Test
+		void shouldCallGetAttachments() {
+			buildAttachments();
+
+			verify(service).getAttachments(bescheidItem);
+		}
+
+		@Test
+		void shouldReturnAllAttachments() {
+			var result = buildAttachments();
+
+			assertThat(result).containsExactly(BESCHEID_FILE_ID, ATTACHMENT_FILE_ID);
+		}
+
+		private List<String> buildAttachments() {
+			return service.buildAttachments(bescheidItem);
 		}
 	}
 
diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/AttachedItemServiceTest.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/AttachedItemServiceTest.java
index 726edcf3e90a969633d5f3caf885298c65334776..9f4272fed782bba1aef9ea7236c4430752002e88 100644
--- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/AttachedItemServiceTest.java
+++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/AttachedItemServiceTest.java
@@ -28,15 +28,12 @@ import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
 
-import java.time.ZonedDateTime;
-import java.time.temporal.ChronoUnit;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 
-import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
@@ -61,8 +58,6 @@ import de.ozgcloud.apilib.vorgang.OzgCloudVorgangId;
 import de.ozgcloud.bescheid.Bescheid;
 import de.ozgcloud.bescheid.Bescheid.SendBy;
 import de.ozgcloud.bescheid.BescheidCallContextAttachingInterceptor;
-import de.ozgcloud.bescheid.common.callcontext.CallContextUser;
-import de.ozgcloud.bescheid.common.callcontext.CurrentUserService;
 import de.ozgcloud.bescheid.common.freemarker.TemplateHandler;
 import de.ozgcloud.bescheid.vorgang.VorgangId;
 import de.ozgcloud.bescheid.vorgang.VorgangTestFactory;
@@ -86,8 +81,6 @@ class AttachedItemServiceTest {
 	@Mock
 	private VorgangAttachedItemRemoteService remoteService;
 	@Mock
-	private CurrentUserService currentUserService;
-	@Mock
 	private TemplateHandler templateHandler;
 
 	@Nested
@@ -1039,257 +1032,6 @@ class AttachedItemServiceTest {
 		}
 	}
 
-	@Nested
-	class TestSetBescheidSentStatus {
-
-		private static final Map<String, Object> BODY_OBJECT_MAP = Map.of("key", "value");
-
-		@Mock
-		private OzgCloudCommand command;
-
-		@BeforeEach
-		void init() {
-			doReturn(BODY_OBJECT_MAP).when(service).buildBescheidSentStatusBodyObject(any());
-		}
-
-		@Test
-		void shouldCallBuildPatchBescheidCommand() {
-			setBescheidStatusSent();
-
-			verify(service).buildPatchBescheidCommand(AttachedItemTestFactory.ID, AttachedItemTestFactory.VERSION, BODY_OBJECT_MAP);
-		}
-
-		@Test
-		void shouldCallCommandService() {
-			doReturn(command).when(service).buildPatchBescheidCommand(any(), anyLong(), any());
-
-			setBescheidStatusSent();
-
-			verify(commandService).createAndWaitUntilDone(command);
-		}
-
-		private void setBescheidStatusSent() {
-			service.setBescheidSentStatus(AttachedItemTestFactory.ID, AttachedItemTestFactory.VERSION);
-		}
-	}
-
-	@Nested
-	class TestBuildBescheidSentStatusBodyObject {
-
-		@Test
-		void shouldSetId() {
-			var result = service.buildBescheidSentStatusBodyObject(AttachedItemTestFactory.ID);
-
-			assertThat(result).containsEntry(AttachedItem.PROPERTY_ID, AttachedItemTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallBuildBescheidSentStatusItem() {
-			service.buildBescheidSentStatusBodyObject(AttachedItemTestFactory.ID);
-
-			verify(service).buildBescheidSentStatusItem();
-		}
-
-		@Test
-		void shouldSetBescheidBodyObject() {
-			var expectedItemMap = Map.of("key", "value");
-			doReturn(expectedItemMap).when(service).buildBescheidSentStatusItem();
-
-			var result = service.buildBescheidSentStatusBodyObject(AttachedItemTestFactory.ID);
-
-			assertThat(result).containsEntry(AttachedItem.PROPERTY_ITEM, expectedItemMap);
-		}
-
-	}
-
-	@Nested
-	class TestBuildBescheidSentStatusItem {
-
-		@Test
-		void shouldSetStatus() {
-			var result = service.buildBescheidSentStatusItem();
-
-			assertThat(result).containsEntry(Bescheid.FIELD_STATUS, Bescheid.Status.SENT.name());
-		}
-	}
-
-	@Nested
-	class TestBuildSentInfoMap {
-
-		@Test
-		void shouldSetSentAt() {
-			var result = service.buildSentInfoMap();
-
-			assertThat(getSentAt(result)).isCloseTo(ZonedDateTime.now(), within(2, ChronoUnit.SECONDS));
-		}
-
-		@Test
-		void shouldCallGetUser() {
-			service.buildSentInfoMap();
-
-			verify(currentUserService).findUser();
-		}
-
-		@Test
-		void shouldSetSentBy() {
-			var userId = "user-id";
-			doReturn(userId).when(service).getUserId();
-
-			var result = service.buildSentInfoMap();
-
-			assertThat(result).containsEntry(Bescheid.FIELD_SENT_BY, userId);
-		}
-
-		private ZonedDateTime getSentAt(Map<String, Object> sentInfo) {
-			return ZonedDateTime.parse(MapUtils.getString(sentInfo, Bescheid.FIELD_SENT_AT));
-		}
-	}
-
-	@Nested
-	class TestGetUserId {
-
-		@Mock
-		private CallContextUser callContextUser;
-
-		@Test
-		void shouldCallFindUser() {
-			service.getUserId();
-
-			verify(currentUserService).findUser();
-		}
-
-		@Test
-		void shouldCallGetUserIdOnCallContexUser() {
-			when(currentUserService.findUser()).thenReturn(Optional.of(callContextUser));
-
-			service.getUserId();
-
-			verify(callContextUser).getUserId();
-		}
-
-		@Test
-		void shouldReturnUserId() {
-			var expectedUserId = "user-id";
-			when(callContextUser.getUserId()).thenReturn(Optional.of(expectedUserId));
-			when(currentUserService.findUser()).thenReturn(Optional.of(callContextUser));
-
-			var result = service.getUserId();
-
-			assertThat(result).isEqualTo(expectedUserId);
-		}
-
-		@Test
-		void shouldReturnEmptyWhenNoUserFound() {
-			var result = service.getUserId();
-
-			assertThat(result).isEmpty();
-		}
-
-		@Test
-		void shouldReturnEmptyWhenNoUserIdFound() {
-			when(currentUserService.findUser()).thenReturn(Optional.of(callContextUser));
-
-			var result = service.getUserId();
-
-			assertThat(result).isEmpty();
-		}
-	}
-
-	@Nested
-	class TestRevertBescheidStatusSent {
-
-		private static final Map<String, Object> BODY_OBJECT_MAP = Map.of("key", "value");
-
-		@Mock
-		private OzgCloudCommand command;
-
-		@Test
-		void shouldCallBuildRevertBescheidSentStatusBodyObject() {
-			revertBescheidStatusSent();
-
-			verify(service).buildRevertBescheidSentStatusBodyObject(AttachedItemTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallBuildPatchBescheidCommand() {
-			doReturn(BODY_OBJECT_MAP).when(service).buildRevertBescheidSentStatusBodyObject(any());
-
-			revertBescheidStatusSent();
-
-			verify(service).buildPatchBescheidCommand(AttachedItemTestFactory.ID, AttachedItemTestFactory.VERSION, BODY_OBJECT_MAP);
-		}
-
-		@Test
-		void shouldCallCommandService() {
-			doReturn(command).when(service).buildPatchBescheidCommand(any(), anyLong(), any());
-
-			revertBescheidStatusSent();
-
-			verify(commandService).createAndWaitUntilDone(command);
-		}
-
-		private void revertBescheidStatusSent() {
-			service.revertBescheidSendStatus(AttachedItemTestFactory.ID, AttachedItemTestFactory.VERSION);
-		}
-
-	}
-
-	@Nested
-	class TestBuildRevertBescheidSentStatusBodyObject {
-
-		@Test
-		void shouldSetId() {
-			var result = service.buildRevertBescheidSentStatusBodyObject(AttachedItemTestFactory.ID);
-
-			assertThat(result).containsEntry(AttachedItem.PROPERTY_ID, AttachedItemTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallBuildRevertBescheidSentStatusItem() {
-			service.buildRevertBescheidSentStatusBodyObject(AttachedItemTestFactory.ID);
-
-			verify(service).buildRevertBescheidSentStatusItem();
-		}
-
-		@Test
-		void shouldSetBescheidBodyObject() {
-			var expectedItemMap = Map.of("key", "value");
-			doReturn(expectedItemMap).when(service).buildRevertBescheidSentStatusItem();
-
-			var result = service.buildRevertBescheidSentStatusBodyObject(AttachedItemTestFactory.ID);
-
-			assertThat(result).containsEntry(AttachedItem.PROPERTY_ITEM, expectedItemMap);
-		}
-	}
-
-	@Nested
-	class TestBuildRevertBescheidSentStatusItem {
-
-		@Test
-		void shouldCallBuildItemMap() {
-			service.buildRevertBescheidSentStatusItem();
-
-			verify(service).buildItemMap(Bescheid.Status.DRAFT);
-		}
-
-		@Test
-		void shouldReturnResultsOfBuildItemMap() {
-			var expectedItemMap = new HashMap<String, Object>(Map.of("key", "value"));
-			doReturn(expectedItemMap).when(service).buildItemMap(any());
-
-			var result = service.buildRevertBescheidSentStatusItem();
-
-			assertThat(result).containsEntry("key", "value");
-		}
-
-		@Test
-		void shouldSetSentInfoNull() {
-			var result = service.buildRevertBescheidSentStatusItem();
-
-			assertThat(result).containsEntry(Bescheid.FIELD_SENT_INFO, null);
-		}
-	}
-
 	@Nested
 	class TestBuildItemMap {
 
@@ -1301,54 +1043,6 @@ class AttachedItemServiceTest {
 		}
 	}
 
-	@Nested
-	class TestBuildPatchBescheidCommand {
-
-		private static final Map<String, Object> BODY_OBJECT_MAP = Map.of("key", "value");
-
-		@Test
-		void shouldCallRelationIdMapper() {
-			buildPatchBescheidCommand();
-
-			verify(commandMapper).mapRelationId(AttachedItemTestFactory.ID);
-		}
-
-		@Test
-		void shouldSetRelationId() {
-			var expectedId = GenericId.from(AttachedItemTestFactory.ID);
-			when(commandMapper.mapRelationId(any())).thenReturn(expectedId);
-
-			var result = buildPatchBescheidCommand();
-
-			assertThat(result.getRelationId()).isEqualTo(expectedId);
-		}
-
-		@Test
-		void shouldSetRelationVersion() {
-			var result = buildPatchBescheidCommand();
-
-			assertThat(result.getRelationVersion()).isEqualTo(AttachedItemTestFactory.VERSION);
-		}
-
-		@Test
-		void shouldSetOrder() {
-			var result = buildPatchBescheidCommand();
-
-			assertThat(result.getOrder()).isEqualTo(AttachedItemService.PATCH_ATTACHED_ITEM);
-		}
-
-		@Test
-		void shouldSetBodyObject() {
-			var result = buildPatchBescheidCommand();
-
-			assertThat(result.getBodyObject()).isSameAs(BODY_OBJECT_MAP);
-		}
-
-		private OzgCloudCommand buildPatchBescheidCommand() {
-			return service.buildPatchBescheidCommand(AttachedItemTestFactory.ID, AttachedItemTestFactory.VERSION, BODY_OBJECT_MAP);
-		}
-	}
-
 	@Nested
 	class TestFindAllBescheid {
 
diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/nachricht/NachrichtServiceTest.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/nachricht/NachrichtServiceTest.java
index f18ffbc9d6851d39b9dfe8676d98f7676013dbe5..5974a286fb170a9c04db124f1b80220f84d66496 100644
--- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/nachricht/NachrichtServiceTest.java
+++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/nachricht/NachrichtServiceTest.java
@@ -1,12 +1,9 @@
 package de.ozgcloud.bescheid.nachricht;
 
 import static org.assertj.core.api.Assertions.*;
-import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
 
-import java.util.List;
-import java.util.Map;
 import java.util.Optional;
 
 import org.junit.jupiter.api.BeforeEach;
@@ -16,21 +13,9 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
 
-import de.ozgcloud.apilib.common.command.OzgCloudCommand;
-import de.ozgcloud.apilib.common.command.OzgCloudCommandService;
-import de.ozgcloud.apilib.common.command.grpc.CommandMapper;
-import de.ozgcloud.apilib.common.datatypes.GenericId;
-import de.ozgcloud.apilib.user.OzgCloudUserId;
-import de.ozgcloud.apilib.vorgang.OzgCloudVorgangId;
-import de.ozgcloud.bescheid.Bescheid;
 import de.ozgcloud.bescheid.BescheidTestFactory;
-import de.ozgcloud.bescheid.attacheditem.AttachedItemTestFactory;
 import de.ozgcloud.bescheid.common.freemarker.TemplateHandler;
-import de.ozgcloud.bescheid.vorgang.PostfachAddressTestFactory;
-import de.ozgcloud.bescheid.vorgang.ServiceKontoTestFactory;
-import de.ozgcloud.bescheid.vorgang.Vorgang;
 import de.ozgcloud.bescheid.vorgang.VorgangTestFactory;
-import de.ozgcloud.common.errorhandling.TechnicalException;
 
 class NachrichtServiceTest {
 
@@ -41,10 +26,6 @@ class NachrichtServiceTest {
 	@Mock
 	private NachrichtRemoteService remoteService;
 	@Mock
-	private OzgCloudCommandService commandService;
-	@Mock
-	private CommandMapper commandMapper;
-	@Mock
 	private TemplateHandler templateHandler;
 
 	@Nested
@@ -126,225 +107,4 @@ class NachrichtServiceTest {
 			assertThat(message).isEqualTo("FROM_TEMPLATE");
 		}
 	}
-
-	@Nested
-	class TestSendNachricht {
-
-		@Mock
-		private OzgCloudCommand ozgCloudCommand;
-
-		@BeforeEach
-		void init() {
-			doReturn(ozgCloudCommand).when(service).buildSendBescheidCommand(any());
-		}
-
-		@Test
-		void shouldCallBuildBescheidCommand() {
-			var bescheid = BescheidTestFactory.create();
-
-			service.sendNachricht(bescheid);
-
-			verify(service).buildSendBescheidCommand(bescheid);
-		}
-
-		@Test
-		void shouldCallCommandService() {
-			service.sendNachricht(BescheidTestFactory.create());
-
-			verify(commandService).createAndWaitUntilDone(ozgCloudCommand);
-		}
-
-	}
-
-	@Nested
-	class TestBuildSendBescheidCommand {
-
-		private static final Map<String, Object> bodyObject = Map.of("key", "value");
-		private final Bescheid bescheid = BescheidTestFactory.create();
-
-		@BeforeEach
-		void init() {
-			doReturn(bodyObject).when(service).buildSendNachrichtCommandBody(any());
-		}
-
-		@Test
-		void shouldCallVorgangIdMapper() {
-			buildCommand();
-
-			verify(commandMapper).toOzgCloudVorgangId(VorgangTestFactory.ID.toString());
-		}
-
-		@Test
-		void shouldSetVorgangId() {
-			var vorgangId = OzgCloudVorgangId.from(VorgangTestFactory.ID.toString());
-			when(commandMapper.toOzgCloudVorgangId(anyString())).thenReturn(vorgangId);
-
-			var result = buildCommand();
-
-			assertThat(result.getVorgangId()).isEqualTo(vorgangId);
-		}
-
-		@Test
-		void shouldCallMapRelationId() {
-			buildCommand();
-
-			verify(commandMapper).mapRelationId(VorgangTestFactory.ID.toString());
-		}
-
-		@Test
-		void shouldSetRelationId() {
-			var relationId = GenericId.from("relation-id");
-			when(commandMapper.mapRelationId(anyString())).thenReturn(relationId);
-
-			var result = buildCommand();
-
-			assertThat(result.getRelationId()).isEqualTo(relationId);
-		}
-
-		@Test
-		void shouldSetOrder() {
-			var result = buildCommand();
-
-			assertThat(result.getOrder()).isEqualTo(NachrichtService.SEND_POSTFACH_NACHRICHT_ORDER);
-		}
-
-		@Test
-		void shouldCallCreatedBy() {
-			buildCommand();
-
-			verify(commandMapper).toOzgCloudUserId(BescheidTestFactory.CREATED_BY.toString());
-		}
-
-		@Test
-		void shouldSetCreatedBy() {
-			var userId = OzgCloudUserId.from(BescheidTestFactory.CREATED_BY.toString());
-			when(commandMapper.toOzgCloudUserId(anyString())).thenReturn(userId);
-
-			var result = buildCommand();
-
-			assertThat(result.getCreatedBy()).isEqualTo(userId);
-		}
-
-		@Test
-		void shouldCallBuildSendNachrichtCommandBody() {
-			buildCommand();
-
-			verify(service).buildSendNachrichtCommandBody(bescheid);
-		}
-
-		@Test
-		void shouldSetBodyObject() {
-			var result = buildCommand();
-
-			assertThat(result.getBodyObject()).isEqualTo(bodyObject);
-		}
-
-		private OzgCloudCommand buildCommand() {
-			return service.buildSendBescheidCommand(bescheid);
-		}
-	}
-
-	@Nested
-	class TestBuildSendNachrichtCommandBody {
-
-		private final Bescheid bescheid = BescheidTestFactory.create();
-
-		@Test
-		void shouldCallBuildPostfachAddress() {
-			service.buildSendNachrichtCommandBody(bescheid);
-
-			verify(service).buildPostfachAddress(bescheid);
-		}
-
-		@Test
-		void shouldSetPostfachAddress() {
-			var postfachAddressMap = Map.<String, Object>of("key", "value");
-			doReturn(postfachAddressMap).when(service).buildPostfachAddress(any());
-
-			var result = service.buildSendNachrichtCommandBody(bescheid);
-
-			assertThat(result).containsEntry(Vorgang.ServiceKonto.FIELD_POSTFACH_ADDRESS, postfachAddressMap);
-		}
-
-		@Test
-		void shouldSetReplyOption() {
-			var result = service.buildSendNachrichtCommandBody(bescheid);
-
-			assertThat(result).containsEntry(NachrichtService.FIELD_REPLY_OPTION, NachrichtService.REPLY_OPTION);
-		}
-
-		@Test
-		void shouldSetSubject() {
-			var result = service.buildSendNachrichtCommandBody(bescheid);
-
-			assertThat(result).containsEntry(NachrichtService.FIELD_SUBJECT, BescheidTestFactory.NACHRICHT_SUBJECT);
-		}
-
-		@Test
-		void shouldSetMailBody() {
-			var result = service.buildSendNachrichtCommandBody(bescheid);
-
-			assertThat(result).containsEntry(NachrichtService.FIELD_MAIL_BODY, BescheidTestFactory.NACHRICHT_TEXT);
-		}
-
-		@Test
-		void shouldSetAttachments() {
-			var result = service.buildSendNachrichtCommandBody(bescheid);
-
-			assertThat(result).containsEntry(NachrichtService.FIELD_ATTACHMENTS,
-					List.of(BescheidTestFactory.BESCHEID_FILE_ID, AttachedItemTestFactory.ATTACHMENT));
-		}
-	}
-
-	@Nested
-	class TestBuildPostfachAddress {
-
-		@Test
-		void shouldCallGetAddress() {
-			var bescheid = BescheidTestFactory.create();
-
-			service.buildPostfachAddress(bescheid);
-
-			verify(service).getAddress(bescheid);
-		}
-
-		@Test
-		void shouldThrowExceptionIfNoServiceKonto() {
-			doReturn(Optional.empty()).when(service).getAddress(any());
-			var bescheid = BescheidTestFactory.create();
-
-			assertThrows(TechnicalException.class, () -> service.buildPostfachAddress(bescheid));
-		}
-
-		@Test
-		void shouldSetAddressType() {
-			var result = service.buildPostfachAddress(BescheidTestFactory.create());
-
-			assertThat(result).containsEntry(Vorgang.PostfachAddress.FIELD_TYPE, PostfachAddressTestFactory.TYPE);
-		}
-
-		@Test
-		void shouldSetAddressVersion() {
-			var result = service.buildPostfachAddress(BescheidTestFactory.create());
-
-			assertThat(result).containsEntry(Vorgang.PostfachAddress.FIELD_VERSION, PostfachAddressTestFactory.VERSION);
-		}
-
-		@Test
-		void shouldSetAddressIdentifier() {
-			var result = service.buildPostfachAddress(BescheidTestFactory.create());
-
-			assertThat(result).extracting(Vorgang.PostfachAddress.FIELD_IDENTIFIER, MAP)
-					.containsEntry(NachrichtService.FIELD_POSTFACH_ID, PostfachAddressTestFactory.POSTFACH_ID);
-		}
-
-		@Test
-		void shouldSetServiceKontoType() {
-			var result = service.buildPostfachAddress(BescheidTestFactory.create());
-
-			assertThat(result).containsEntry(Vorgang.ServiceKonto.FIELD_SERVICEKONTO_TYPE, ServiceKontoTestFactory.TYPE);
-		}
-
-	}
-
 }
diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/vorgang/VorgangServiceTest.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/vorgang/VorgangServiceTest.java
index 2b9d8d0b29fe167ee61096bc63833e5cab8b8d65..cc93692c7831628dd87ada5bf0cf21f2250b5bb4 100644
--- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/vorgang/VorgangServiceTest.java
+++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/vorgang/VorgangServiceTest.java
@@ -11,12 +11,6 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
 
-import de.ozgcloud.apilib.common.command.OzgCloudCommand;
-import de.ozgcloud.apilib.common.command.OzgCloudCommandService;
-import de.ozgcloud.apilib.common.command.grpc.CommandMapper;
-import de.ozgcloud.apilib.common.datatypes.GenericId;
-import de.ozgcloud.apilib.vorgang.OzgCloudVorgangId;
-
 class VorgangServiceTest {
 
 	@Spy
@@ -25,10 +19,6 @@ class VorgangServiceTest {
 
 	@Mock
 	private VorgangRemoteService remoteService;
-	@Mock
-	private OzgCloudCommandService commandService;
-	@Mock
-	private CommandMapper commandMapper;
 
 	@Nested
 	class TestGetById {
@@ -54,99 +44,4 @@ class VorgangServiceTest {
 			assertThat(result).isEqualTo(vorgang);
 		}
 	}
-
-	@Nested
-	class TestBescheiden {
-
-		private final static Vorgang VORGANG = VorgangTestFactory.create();
-
-		@Mock
-		private OzgCloudCommand ozgCloudCommand;
-
-		@BeforeEach
-		void init() {
-			doReturn(VORGANG).when(service).getById(any(VorgangId.class));
-		}
-
-		@Test
-		void shouldCallGetBeyId() {
-			service.bescheiden(VorgangTestFactory.ID.toString());
-
-			verify(service).getById(VorgangTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallBuildBescheidenCommand() {
-			service.bescheiden(VorgangTestFactory.ID.toString());
-
-			verify(service).buildVorgangBescheidenCommand(VORGANG);
-		}
-
-		@Test
-		void shouldCallCommandService() {
-			//			doReturn(ozgCloudCommand).when(service).buildVorgangBescheidenCommand(any());
-
-			service.bescheiden(VorgangTestFactory.ID.toString());
-
-			verify(commandService).createAndWaitUntilDone(ozgCloudCommand);
-		}
-	}
-
-	@Nested
-	class TestBuildBescheidenCommand {
-
-		private final static Vorgang VORGANG = VorgangTestFactory.create();
-
-		@Test
-		void shouldCallCommandMapperToOzgCloudVorgangId() {
-			service.buildVorgangBescheidenCommand(VORGANG);
-
-			verify(commandMapper).toOzgCloudVorgangId(VorgangTestFactory.ID.toString());
-		}
-
-		@Test
-		void shouldSetVorgangId() {
-			var expectedId = OzgCloudVorgangId.from(VorgangTestFactory.ID.toString());
-			when(commandMapper.toOzgCloudVorgangId(any())).thenReturn(expectedId);
-
-			var result = service.buildVorgangBescheidenCommand(VORGANG);
-
-			assertThat(result.getVorgangId()).isEqualTo(expectedId);
-		}
-
-		@Test
-		void shouldCallCommandMapperMapRelationId() {
-			service.buildVorgangBescheidenCommand(VORGANG);
-
-			verify(commandMapper).mapRelationId(VorgangTestFactory.ID.toString());
-		}
-
-		@Test
-		void shouldSetRelationId() {
-			var expectedId = GenericId.from(VorgangTestFactory.ID.toString());
-			when(commandMapper.mapRelationId(any())).thenReturn(expectedId);
-
-			var result = service.buildVorgangBescheidenCommand(VORGANG);
-
-			assertThat(result.getRelationId()).isEqualTo(expectedId);
-		}
-
-		@Test
-		void shouldSetRelationVersion() {
-			var expectedVersion = VORGANG.getVersion();
-
-			var result = service.buildVorgangBescheidenCommand(VORGANG);
-
-			assertThat(result.getRelationVersion()).isEqualTo(expectedVersion);
-		}
-
-		@Test
-		void shouldSetOrder() {
-			var expectedOrder = VorgangService.VORGANG_BESCHEIDEN;
-
-			var result = service.buildVorgangBescheidenCommand(VORGANG);
-
-			assertThat(result.getOrder()).isEqualTo(expectedOrder);
-		}
-	}
 }