diff --git a/bescheid-manager/pom.xml b/bescheid-manager/pom.xml
index e208cd9f4b7b9a2039bb2ac3ac73b4d988fc2fdc..0b9174c6394ee1d61ac7380a2ad9b1e3c7c3b4a4 100644
--- a/bescheid-manager/pom.xml
+++ b/bescheid-manager/pom.xml
@@ -5,7 +5,7 @@
 	<parent>
 		<groupId>de.ozgcloud.common</groupId>
 		<artifactId>ozgcloud-common-parent</artifactId>
-		<version>4.0.1</version>
+		<version>4.1.0-SNAPSHOT</version>
 		<relativePath />
 	</parent>
 
diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/Bescheid.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/Bescheid.java
index b393527005404ce7bc3246fef81bd0a7ced74e85..c26f275ff4adbdc446e5e4957928897b4e043aa2 100644
--- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/Bescheid.java
+++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/Bescheid.java
@@ -3,14 +3,11 @@ package de.ozgcloud.bescheid;
 import java.io.File;
 import java.util.Optional;
 
-import org.apache.commons.lang3.StringUtils;
-
 import de.ozgcloud.bescheid.vorgang.Vorgang;
 import de.ozgcloud.bescheid.vorgang.VorgangId;
 import de.ozgcloud.common.binaryfile.FileId;
 import lombok.Builder;
 import lombok.Getter;
-import lombok.RequiredArgsConstructor;
 import lombok.With;
 
 @Builder(toBuilder = true)
@@ -46,29 +43,26 @@ public class Bescheid {
 	private Vorgang.ServiceKonto serviceKonto;
 
 	public enum Status {
-		DRAFT, SEND;
+		DRAFT, SENT;
 
-		public boolean not(String value) {
+		public boolean not(Object value) {
 			return !hasValue(value);
 		}
 
-		public boolean hasValue(String value) {
-			return this.name().equalsIgnoreCase(value);
+		public boolean hasValue(Object value) {
+			return this.name().equalsIgnoreCase(String.valueOf(value));
 		}
 	}
 
-	@RequiredArgsConstructor
 	public enum SendBy {
-		NACHRICHT("NACHRICHT"), MANUAL("MANUAL");
-
-		private final String value;
+		NACHRICHT, MANUAL;
 
 		public boolean notValue(Object sendByValue) {
 			return !hasValue(sendByValue);
 		}
 
 		public boolean hasValue(Object sendByValue) {
-			return StringUtils.equalsIgnoreCase(value, String.valueOf(sendByValue));
+			return this.name().equalsIgnoreCase(String.valueOf(sendByValue));
 		}
 
 	}
diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidGrpcService.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidGrpcService.java
index 425a62a353a09b4c660cfbe06b1829e318ac4624..d7d033e480e6259f3a08eeda83fa4e7548d23b66 100644
--- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidGrpcService.java
+++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidGrpcService.java
@@ -1,16 +1,13 @@
 package de.ozgcloud.bescheid;
 
-import java.time.LocalDate;
 import java.util.Collection;
 import java.util.List;
-import java.util.Map;
 
 import de.ozgcloud.bescheid.BescheidServiceGrpc.BescheidServiceImplBase;
 import de.ozgcloud.bescheid.attacheditem.AttachedItem;
 import de.ozgcloud.bescheid.attacheditem.AttachedItemMapper;
 import de.ozgcloud.bescheid.attacheditem.AttachedItemService;
-import de.ozgcloud.bescheid.attacheditem.BescheidItem;
-import de.ozgcloud.bescheid.attacheditem.BescheidItemMapper;
+import de.ozgcloud.bescheid.vorgang.VorgangId;
 import io.grpc.stub.StreamObserver;
 import lombok.RequiredArgsConstructor;
 import net.devh.boot.grpc.server.service.GrpcService;
@@ -21,14 +18,13 @@ class BescheidGrpcService extends BescheidServiceImplBase {
 
 	private final AttachedItemService attachedItemService;
 	private final AttachedItemMapper attachedItemMapper;
-	private final BescheidItemMapper bescheidMapper;
 	private final BescheidService bescheidService;
 	private final GrpcBescheidMapper grpcBescheidMapper;
 
 	@Override
 	public void getBescheidDraft(GrpcGetBescheidDraftRequest request, StreamObserver<GrpcGetBescheidDraftResponse> responseObserver) {
 		var response = attachedItemService.findBescheidItem(request.getVorgangId())
-				.map(this::buildResponse)
+				.map(this::buildGetBescheidDraftResponse)
 				.orElseGet(GrpcGetBescheidDraftResponse::getDefaultInstance);
 
 		responseObserver.onNext(response);
@@ -36,9 +32,9 @@ class BescheidGrpcService extends BescheidServiceImplBase {
 
 	}
 
-	GrpcGetBescheidDraftResponse buildResponse(BescheidItem bescheidItem) {
+	GrpcGetBescheidDraftResponse buildGetBescheidDraftResponse(AttachedItem bescheidItem) {
 		return GrpcGetBescheidDraftResponse.newBuilder()
-				.setBescheid(bescheidMapper.toBescheid(bescheidItem))
+				.setBescheid(attachedItemMapper.toBescheid(bescheidItem))
 				.build();
 	}
 
@@ -50,14 +46,11 @@ class BescheidGrpcService extends BescheidServiceImplBase {
 
 	@Override
 	public void getAll(GrpcGetAllBescheidRequest request, StreamObserver<GrpcGetAllBescheidResponse> responseObserver) {
-		var dummyBescheid = AttachedItem.builder().vorgangId(request.getVorgangId())
-				.item(Map.of(Bescheid.FIELD_BESCHIEDEN_AM, LocalDate.now().toString(),
-						Bescheid.FIELD_BEWILLIGT, true)).build();
-		responseObserver.onNext(buildResponse(List.of(dummyBescheid)));
+		responseObserver.onNext(buildGetAllBescheidResponse(attachedItemService.findAllBescheid(VorgangId.from(request.getVorgangId()))));
 		responseObserver.onCompleted();
 	}
 
-	GrpcGetAllBescheidResponse buildResponse(Collection<AttachedItem> bescheidItems) {
+	GrpcGetAllBescheidResponse buildGetAllBescheidResponse(Collection<AttachedItem> bescheidItems) {
 		return GrpcGetAllBescheidResponse.newBuilder().addAllBescheid(mapBescheid(bescheidItems)).build();
 	}
 
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 c1a19bad984094441efc8f5d6c7f3c87ce839aa1..e30bf629a1fe8c1f09e9046b562eb16c6291849d 100644
--- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidService.java
+++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidService.java
@@ -136,7 +136,7 @@ class BescheidService {
 	}
 
 	void sendBescheid(AttachedItem bescheidItem) {
-		attachedItemService.setBescheidStatus(bescheidItem.getId(), bescheidItem.getVersion(), Bescheid.Status.SEND);
+		attachedItemService.setBescheidStatus(bescheidItem.getId(), bescheidItem.getVersion(), Bescheid.Status.SENT);
 		try {
 			vorgangService.bescheiden(bescheidItem.getVorgangId());
 		} catch (Exception e) {
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 2865120c7317ae291d191b6a2acf826bb3c49e65..7a3e82b746121e49326e8d24d2484f41693c912a 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
@@ -25,12 +25,16 @@ package de.ozgcloud.bescheid.attacheditem;
 
 import static java.util.Objects.*;
 
+import java.util.Arrays;
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
 import java.util.function.Predicate;
+import java.util.stream.Collectors;
 
 import org.apache.commons.collections.MapUtils;
+import org.apache.commons.lang3.ArrayUtils;
 import org.springframework.stereotype.Service;
 
 import de.ozgcloud.apilib.common.command.OzgCloudCommand;
@@ -38,6 +42,7 @@ import de.ozgcloud.apilib.common.command.OzgCloudCommandService;
 import de.ozgcloud.apilib.common.command.grpc.CommandMapper;
 import de.ozgcloud.bescheid.Bescheid;
 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;
@@ -54,17 +59,17 @@ public class AttachedItemService {
 	static final String DELETE_ATTACHED_ITEM = "DELETE_ATTACHED_ITEM";
 	static final String PATCH_ATTACHED_ITEM = "PATCH_ATTACHED_ITEM";
 
-	private static final Predicate<String> notExpectedSendByValue = sendBy -> !BescheidItem.ACCEPTED_SEND_BY_VALUES.contains(sendBy);
+	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;
 
-	public Optional<BescheidItem> findBescheidItem(String vorgangId) {
+	public Optional<AttachedItem> findBescheidItem(String vorgangId) {
 		return remoteService.findBescheidDraft(vorgangId);
 	}
 
-	public BescheidItem getBescheidItem(String id) {
+	public AttachedItem getBescheidItem(String id) {
 		return remoteService.getBescheid(id);
 	}
 
@@ -74,7 +79,7 @@ public class AttachedItemService {
 				.map(bescheid -> overrideAttachedItem(bescheid, command)).orElseGet(() -> createAttachedItem(command));
 	}
 
-	String overrideAttachedItem(BescheidItem bescheidItem, Command command) {
+	String overrideAttachedItem(AttachedItem bescheidItem, Command command) {
 		var bodyObject = buildAttachedItemAsMap(command, buildItemMapWithAllBescheidFields(command));
 		var finishedOzgCloudCommand = commandService.createAndWaitUntilDone(buildUpdateAttachedItemCommand(bescheidItem, bodyObject));
 		return finishedOzgCloudCommand.getCreatedResource();
@@ -82,13 +87,13 @@ public class AttachedItemService {
 
 	Map<String, Object> buildItemMapWithAllBescheidFields(Command command) {
 		var result = new HashMap<String, Object>();
-		result.put(BescheidItem.FIELD_BESCHIEDEN_AM, command.getBodyObject().get(BescheidItem.FIELD_BESCHIEDEN_AM));
-		result.put(BescheidItem.FIELD_BEWILLIGT, command.getBodyObject().get(BescheidItem.FIELD_BEWILLIGT));
-		result.put(BescheidItem.FIELD_BESCHEID_DOCUMENT, command.getBodyObject().get(BescheidItem.FIELD_BESCHEID_DOCUMENT));
-		result.put(BescheidItem.FIELD_SEND_BY, command.getBodyObject().get(BescheidItem.FIELD_SEND_BY));
-		result.put(BescheidItem.FIELD_NACHRICHT_TEXT, command.getBodyObject().get(BescheidItem.FIELD_NACHRICHT_TEXT));
-		result.put(BescheidItem.FIELD_NACHRICHT_SUBJECT, command.getBodyObject().get(BescheidItem.FIELD_NACHRICHT_SUBJECT));
-		result.put(BescheidItem.FIELD_ATTACHMENTS, command.getBodyObject().get(BescheidItem.FIELD_ATTACHMENTS));
+		result.put(Bescheid.FIELD_BESCHIEDEN_AM, command.getBodyObject().get(Bescheid.FIELD_BESCHIEDEN_AM));
+		result.put(Bescheid.FIELD_BEWILLIGT, command.getBodyObject().get(Bescheid.FIELD_BEWILLIGT));
+		result.put(Bescheid.FIELD_BESCHEID_DOCUMENT, command.getBodyObject().get(Bescheid.FIELD_BESCHEID_DOCUMENT));
+		result.put(Bescheid.FIELD_SEND_BY, command.getBodyObject().get(Bescheid.FIELD_SEND_BY));
+		result.put(Bescheid.FIELD_NACHRICHT_TEXT, command.getBodyObject().get(Bescheid.FIELD_NACHRICHT_TEXT));
+		result.put(Bescheid.FIELD_NACHRICHT_SUBJECT, command.getBodyObject().get(Bescheid.FIELD_NACHRICHT_SUBJECT));
+		result.put(Bescheid.FIELD_ATTACHMENTS, command.getBodyObject().get(Bescheid.FIELD_ATTACHMENTS));
 		return result;
 	}
 
@@ -100,7 +105,7 @@ public class AttachedItemService {
 		commandService.createAndWaitUntilDone(buildUpdateAttachedItemCommand(bescheidItem, bodyObject));
 	}
 
-	OzgCloudCommand buildUpdateAttachedItemCommand(BescheidItem bescheidItem, Map<String, Object> bodyObject) {
+	OzgCloudCommand buildUpdateAttachedItemCommand(AttachedItem bescheidItem, Map<String, Object> bodyObject) {
 		return OzgCloudCommand.builder()
 				.vorgangId(commandMapper.toOzgCloudVorgangId(bescheidItem.getVorgangId()))
 				.relationId(commandMapper.mapRelationId(bescheidItem.getId()))
@@ -125,23 +130,23 @@ public class AttachedItemService {
 
 	Map<String, Object> buildAttachedItemAsMap(Command command, Map<String, Object> itemmap) {
 		var result = new HashMap<String, Object>();
-		result.put(BescheidItem.PROPERTY_VORGANG_ID, command.getVorgangId());
-		result.put(BescheidItem.PROPERTY_CLIENT, BescheidCallContextAttachingInterceptor.BESCHEID_MANAGER_CLIENT_NAME);
-		result.put(BescheidItem.PROPERTY_ITEM_NAME, BESCHEID_ITEM_NAME);
-		result.put(BescheidItem.PROPERTY_ITEM, itemmap);
+		result.put(AttachedItem.PROPERTY_VORGANG_ID, command.getVorgangId());
+		result.put(AttachedItem.PROPERTY_CLIENT, BescheidCallContextAttachingInterceptor.BESCHEID_MANAGER_CLIENT_NAME);
+		result.put(AttachedItem.PROPERTY_ITEM_NAME, BESCHEID_ITEM_NAME);
+		result.put(AttachedItem.PROPERTY_ITEM, itemmap);
 		return result;
 	}
 
 	Map<String, Object> buildItemMapWithExistingBescheidFields(Command command) {
 		var result = new HashMap<String, Object>();
-		result.put(BescheidItem.FIELD_STATUS, BescheidItem.Status.DRAFT.name());
-		addValueFromMapIfExists(command.getBodyObject(), BescheidItem.FIELD_BESCHIEDEN_AM, result);
-		addValueFromMapIfExists(command.getBodyObject(), BescheidItem.FIELD_BEWILLIGT, result);
-		addValueFromMapIfExists(command.getBodyObject(), BescheidItem.FIELD_BESCHEID_DOCUMENT, result);
-		addValueFromMapIfExists(command.getBodyObject(), BescheidItem.FIELD_SEND_BY, result);
-		addValueFromMapIfExists(command.getBodyObject(), BescheidItem.FIELD_NACHRICHT_TEXT, result);
-		addValueFromMapIfExists(command.getBodyObject(), BescheidItem.FIELD_NACHRICHT_SUBJECT, result);
-		addValueFromMapIfExists(command.getBodyObject(), BescheidItem.FIELD_ATTACHMENTS, result);
+		result.put(Bescheid.FIELD_STATUS, Bescheid.Status.DRAFT.name());
+		addValueFromMapIfExists(command.getBodyObject(), Bescheid.FIELD_BESCHIEDEN_AM, result);
+		addValueFromMapIfExists(command.getBodyObject(), Bescheid.FIELD_BEWILLIGT, result);
+		addValueFromMapIfExists(command.getBodyObject(), Bescheid.FIELD_BESCHEID_DOCUMENT, result);
+		addValueFromMapIfExists(command.getBodyObject(), Bescheid.FIELD_SEND_BY, result);
+		addValueFromMapIfExists(command.getBodyObject(), Bescheid.FIELD_NACHRICHT_TEXT, result);
+		addValueFromMapIfExists(command.getBodyObject(), Bescheid.FIELD_NACHRICHT_SUBJECT, result);
+		addValueFromMapIfExists(command.getBodyObject(), Bescheid.FIELD_ATTACHMENTS, result);
 		return result;
 	}
 
@@ -152,16 +157,16 @@ public class AttachedItemService {
 	}
 
 	void validateBescheidData(Map<String, Object> bodyObject) {
-		if (isNull(bodyObject.get(BescheidItem.FIELD_BESCHIEDEN_AM))) {
-			throw new TechnicalException("Fields '%s' is required for bescheid creation".formatted(BescheidItem.FIELD_BESCHIEDEN_AM));
+		if (isNull(bodyObject.get(Bescheid.FIELD_BESCHIEDEN_AM))) {
+			throw new TechnicalException("Fields '%s' is required for bescheid creation".formatted(Bescheid.FIELD_BESCHIEDEN_AM));
 		}
-		if (isNull(bodyObject.get(BescheidItem.FIELD_BEWILLIGT))) {
-			throw new TechnicalException("Fields '%s' is required for bescheid creation".formatted(BescheidItem.FIELD_BEWILLIGT));
+		if (isNull(bodyObject.get(Bescheid.FIELD_BEWILLIGT))) {
+			throw new TechnicalException("Fields '%s' is required for bescheid creation".formatted(Bescheid.FIELD_BEWILLIGT));
 		}
-		Optional.ofNullable(MapUtils.getString(bodyObject, BescheidItem.FIELD_SEND_BY)).filter(notExpectedSendByValue)
+		Optional.ofNullable(MapUtils.getString(bodyObject, Bescheid.FIELD_SEND_BY)).filter(notExpectedSendByValue)
 				.ifPresent(sendBy ->
-						LOG.warn("Unexpected value for field '%s': %s. Allowed are: %s".formatted(BescheidItem.FIELD_SEND_BY, sendBy,
-								String.join(", ", BescheidItem.ACCEPTED_SEND_BY_VALUES)))
+						LOG.warn("Unexpected value for field '%s': %s. Allowed are: %s".formatted(Bescheid.FIELD_SEND_BY, sendBy,
+								Arrays.stream(Bescheid.SendBy.values()).map(Bescheid.SendBy::name).collect(Collectors.joining(","))))
 				);
 	}
 
@@ -171,14 +176,14 @@ public class AttachedItemService {
 		commandService.createAndWaitUntilDone(buildDeleteItemCommand(command, bescheid));
 	}
 
-	void validateBescheidStatus(BescheidItem bescheid) {
-		var bescheidStatus = MapUtils.getString(bescheid.getBescheidData(), BescheidItem.FIELD_STATUS);
-		if (BescheidItem.Status.DRAFT.not(bescheidStatus)) {
-			throw new TechnicalException("Bescheid draft with ID '%s' has an unexpected status: '%s'".formatted(bescheid.getId(), bescheidStatus));
+	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));
 		}
 	}
 
-	OzgCloudCommand buildDeleteItemCommand(Command command, BescheidItem bescheid) {
+	OzgCloudCommand buildDeleteItemCommand(Command command, AttachedItem bescheid) {
 		return OzgCloudCommand.builder()
 				.vorgangId(commandMapper.toOzgCloudVorgangId(command.getVorgangId()))
 				.relationId(commandMapper.mapRelationId(bescheid.getId()))
@@ -208,4 +213,8 @@ public class AttachedItemService {
 		return Map.of(AttachedItem.PROPERTY_ID, bescheidId,
 				AttachedItem.PROPERTY_ITEM, Map.of(Bescheid.FIELD_STATUS, bescheidStatus.name()));
 	}
+
+	public Collection<AttachedItem> findAllBescheid(VorgangId vorgangId) {
+		return remoteService.findAllBescheid(vorgangId);
+	}
 }
diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/attacheditem/BescheidItem.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/attacheditem/BescheidItem.java
deleted file mode 100644
index a018068459db579d4c480c4bf7223919d848fd6c..0000000000000000000000000000000000000000
--- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/attacheditem/BescheidItem.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * 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.attacheditem;
-
-import java.util.Map;
-import java.util.Set;
-
-import lombok.Builder;
-import lombok.Getter;
-
-@Builder(toBuilder = true)
-@Getter
-@Deprecated(since = "2.6.0")
-public class BescheidItem {
-
-	static final Set<String> ACCEPTED_SEND_BY_VALUES = Set.of("POSTFACH", "MANUAL");
-
-	public static final String PROPERTY_ID = "id";
-	public static final String PROPERTY_CLIENT = "client";
-	public static final String PROPERTY_VORGANG_ID = "vorgangId";
-	public static final String PROPERTY_ITEM_NAME = "itemName";
-	public static final String PROPERTY_VERSION = "version";
-	public static final String PROPERTY_ITEM = "item";
-
-	public static final String FIELD_STATUS = "status";
-	public static final String FIELD_BESCHIEDEN_AM = "beschiedenAm";
-	public static final String FIELD_BEWILLIGT = "bewilligt";
-	public static final String FIELD_BESCHEID_DOCUMENT = "bescheidDocument";
-	public static final String FIELD_ATTACHMENTS = "attachments";
-	public static final String FIELD_SEND_BY = "sendBy";
-	public static final String FIELD_NACHRICHT_TEXT = "nachrichtText";
-	public static final String FIELD_NACHRICHT_SUBJECT = "nachrichtSubject";
-
-	private String id;
-	@Builder.Default
-	private long version = 0L;
-
-	private String client;
-	private String vorgangId;
-	private String itemName;
-
-	private Map<String, Object> bescheidData;
-
-	public enum Status {
-		DRAFT, BESCHEID, SEND;
-
-		public boolean not(String value) {
-			return !hasValue(value);
-		}
-
-		public boolean hasValue(String value) {
-			return this.name().equalsIgnoreCase(value);
-		}
-	}
-}
diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/attacheditem/BescheidItemMapper.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/attacheditem/BescheidItemMapper.java
deleted file mode 100644
index 2c915d65d934abab2636433b02e30a1eaf8e764d..0000000000000000000000000000000000000000
--- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/attacheditem/BescheidItemMapper.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * 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.attacheditem;
-
-import static java.util.Objects.*;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Optional;
-import java.util.stream.Stream;
-
-import org.apache.commons.collections.MapUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.bescheid.GrpcBescheid;
-import de.ozgcloud.vorgang.common.grpc.GrpcObjectMapper;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcFindVorgangAttachedItemResponse;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcVorgangAttachedItem;
-import lombok.RequiredArgsConstructor;
-
-@Component
-@RequiredArgsConstructor
-@Deprecated(since = "2.6.0")
-public class BescheidItemMapper {
-
-	private final GrpcObjectMapper grpcObjectMapper;
-
-	public Stream<BescheidItem> fromFindVorgangAttachedItemResponse(GrpcFindVorgangAttachedItemResponse grpcResponse) {
-		return grpcResponse.getVorgangAttachedItemsList().stream()
-				.map(this::mapFromVorgangAttachedItem);
-	}
-
-	BescheidItem mapFromVorgangAttachedItem(GrpcVorgangAttachedItem item) {
-		return BescheidItem.builder()
-				.id(item.getId())
-				.version(item.getVersion())
-				.client(item.getClient())
-				.vorgangId(item.getVorgangId())
-				.itemName(item.getItemName())
-				.bescheidData(grpcObjectMapper.mapFromGrpc(item.getItem()))
-				.build();
-	}
-
-	public GrpcBescheid toBescheid(BescheidItem bescheid) {
-		var bescheidBuilder = GrpcBescheid.newBuilder().setVersion(bescheid.getVersion());
-		Optional.ofNullable(bescheid.getId()).ifPresent(bescheidBuilder::setId);
-		var bescheidData = bescheid.getBescheidData();
-		Optional.ofNullable(MapUtils.getString(bescheidData, BescheidItem.FIELD_BESCHIEDEN_AM)).map(StringUtils::trimToNull)
-				.ifPresent(bescheidBuilder::setBeschiedenAm);
-		Optional.ofNullable(MapUtils.getBoolean(bescheidData, BescheidItem.FIELD_BEWILLIGT)).ifPresent(bescheidBuilder::setBewilligt);
-		Optional.ofNullable(MapUtils.getString(bescheidData, BescheidItem.FIELD_BESCHEID_DOCUMENT)).map(StringUtils::trimToNull)
-				.ifPresent(bescheidBuilder::setBescheidDocument);
-		Optional.ofNullable(MapUtils.getString(bescheidData, BescheidItem.FIELD_SEND_BY)).map(StringUtils::trimToNull)
-				.ifPresent(bescheidBuilder::setSendBy);
-		Optional.ofNullable(MapUtils.getString(bescheidData, BescheidItem.FIELD_NACHRICHT_TEXT)).map(StringUtils::trimToNull)
-				.ifPresent(bescheidBuilder::setNachrichtText);
-		Optional.ofNullable(MapUtils.getString(bescheidData, BescheidItem.FIELD_NACHRICHT_SUBJECT)).map(StringUtils::trimToNull)
-				.ifPresent(bescheidBuilder::setNachrichtSubject);
-		Optional.ofNullable(bescheidData.get(BescheidItem.FIELD_ATTACHMENTS)).map(this::toAttachments).ifPresent(bescheidBuilder::addAllAttachments);
-		return bescheidBuilder.build();
-	}
-
-	@SuppressWarnings("unchecked")
-	Collection<String> toAttachments(Object attachmentsObject) {
-		if (attachmentsObject instanceof Collection<?> attachments) {
-			return (Collection<String>) attachments;
-		}
-		if (attachmentsObject instanceof String attachment) {
-			attachment = StringUtils.trimToNull(attachment);
-			if (nonNull(attachment)) {
-				return List.of(attachment);
-			}
-		} else if (nonNull(attachmentsObject)) {
-			return List.of(String.valueOf(attachmentsObject));
-		}
-		return null; //NOSONAR
-	}
-}
diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/attacheditem/Utils.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/attacheditem/Utils.java
index c63bbfe295df2a72118b8a95b9d6188653fea4f4..d8d3d59256d47d46f24f0c6521ff35d74367b220 100644
--- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/attacheditem/Utils.java
+++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/attacheditem/Utils.java
@@ -33,7 +33,7 @@ import lombok.NoArgsConstructor;
 class Utils {
 
 	public static String extractClient(Command command) {
-		return MapUtils.getString(command.getBodyObject(), BescheidItem.PROPERTY_CLIENT);
+		return MapUtils.getString(command.getBodyObject(), AttachedItem.PROPERTY_CLIENT);
 	}
 
 }
diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/attacheditem/VorgangAttachedItemRemoteService.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/attacheditem/VorgangAttachedItemRemoteService.java
index aa6709149d8d968e263c86e0197e281ff99c3a8e..ff07e6d16434e02343d1a07605c8351330d640ba 100644
--- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/attacheditem/VorgangAttachedItemRemoteService.java
+++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/attacheditem/VorgangAttachedItemRemoteService.java
@@ -27,13 +27,17 @@ import static de.ozgcloud.bescheid.attacheditem.AttachedItemService.*;
 
 import java.time.LocalDate;
 import java.util.Comparator;
+import java.util.List;
 import java.util.Optional;
+import java.util.stream.Stream;
 
 import org.apache.commons.collections.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import de.ozgcloud.bescheid.Bescheid;
 import de.ozgcloud.bescheid.BescheidCallContextAttachingInterceptor;
+import de.ozgcloud.bescheid.vorgang.VorgangId;
 import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcFindVorgangAttachedItemRequest;
 import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcVorgangAttachedItemRequest;
 import de.ozgcloud.vorgang.vorgangAttachedItem.VorgangAttachedItemServiceGrpc.VorgangAttachedItemServiceBlockingStub;
@@ -45,9 +49,9 @@ import net.devh.boot.grpc.client.inject.GrpcClient;
 @Log4j2
 class VorgangAttachedItemRemoteService {
 
-	private static final Comparator<BescheidItem> BY_BESCHIEDEN_AM_DESC = (bescheid1, bescheid2) -> {
-		var beschiedenAm1 = LocalDate.parse(MapUtils.getString(bescheid1.getBescheidData(), BescheidItem.FIELD_BESCHIEDEN_AM));
-		var beschiedenAm2 = LocalDate.parse(MapUtils.getString(bescheid2.getBescheidData(), BescheidItem.FIELD_BESCHIEDEN_AM));
+	private static final Comparator<AttachedItem> BY_BESCHIEDEN_AM_DESC = (bescheid1, bescheid2) -> {
+		var beschiedenAm1 = LocalDate.parse(MapUtils.getString(bescheid1.getItem(), Bescheid.FIELD_BESCHIEDEN_AM));
+		var beschiedenAm2 = LocalDate.parse(MapUtils.getString(bescheid2.getItem(), Bescheid.FIELD_BESCHIEDEN_AM));
 		return beschiedenAm2.compareTo(beschiedenAm1);
 	};
 
@@ -56,14 +60,16 @@ class VorgangAttachedItemRemoteService {
 	@Autowired
 	private ClientInterceptor bescheidCallContextInterceptor;
 	@Autowired
-	private BescheidItemMapper bescheidItemMapper;
-	@Autowired
 	private AttachedItemMapper attachedItemMapper;
 
-	public Optional<BescheidItem> findBescheidDraft(String vorgangId) {
+	public Optional<AttachedItem> findBescheidDraft(String vorgangId) {
 		return findBescheidDraft(buildFindRequest(vorgangId));
 	}
 
+	public List<AttachedItem> findAllBescheid(VorgangId vorgangId) {
+		return findAllBescheid(buildFindRequest(vorgangId.toString())).toList();
+	}
+
 	GrpcFindVorgangAttachedItemRequest buildFindRequest(String vorgangId) {
 		return GrpcFindVorgangAttachedItemRequest.newBuilder()
 				.setVorgangId(vorgangId)
@@ -72,10 +78,8 @@ class VorgangAttachedItemRemoteService {
 				.build();
 	}
 
-	Optional<BescheidItem> findBescheidDraft(GrpcFindVorgangAttachedItemRequest request) {
-		var grpcResponse = getServiceStub().find(request);
-		var bescheidItems = bescheidItemMapper.fromFindVorgangAttachedItemResponse(grpcResponse).filter(this::hasStatusDraft)
-				.sorted(BY_BESCHIEDEN_AM_DESC).toList();
+	Optional<AttachedItem> findBescheidDraft(GrpcFindVorgangAttachedItemRequest request) {
+		var bescheidItems = findAllBescheid(request).filter(this::hasStatusDraft).toList();
 		if (bescheidItems.size() > 1) {
 			LOG.error("Found more than one ({}) draft bescheid for vorgangId: {}. Return one with last beschiedenAm date", bescheidItems.size(),
 					bescheidItems.getFirst().getVorgangId());
@@ -83,13 +87,19 @@ class VorgangAttachedItemRemoteService {
 		return bescheidItems.isEmpty() ? Optional.empty() : Optional.of(bescheidItems.getFirst());
 	}
 
-	boolean hasStatusDraft(BescheidItem bescheidItem) {
-		return BescheidItem.Status.DRAFT.hasValue(MapUtils.getString(bescheidItem.getBescheidData(), BescheidItem.FIELD_STATUS));
+	Stream<AttachedItem> findAllBescheid(GrpcFindVorgangAttachedItemRequest request) {
+		var grpcResponse = getServiceStub().find(request);
+		return grpcResponse.getVorgangAttachedItemsList().stream().map(attachedItemMapper::mapFromVorgangAttachedItem)
+				.sorted(BY_BESCHIEDEN_AM_DESC);
+	}
+
+	boolean hasStatusDraft(AttachedItem bescheidItem) {
+		return Bescheid.Status.DRAFT.hasValue(bescheidItem.getItem().get(Bescheid.FIELD_STATUS));
 	}
 
-	public BescheidItem getBescheid(String bescheidId) {
+	public AttachedItem getBescheid(String bescheidId) {
 		var grpcVorgangAttachedItemResponse = getServiceStub().getById(buildGetByIdRequest(bescheidId));
-		return bescheidItemMapper.mapFromVorgangAttachedItem(grpcVorgangAttachedItemResponse.getVorgangAttachedItem());
+		return attachedItemMapper.mapFromVorgangAttachedItem(grpcVorgangAttachedItemResponse.getVorgangAttachedItem());
 	}
 
 	public AttachedItem getItem(String id) {
diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteService.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteService.java
index 6dd87bd4b8bb2423fe933e8d4e098e056890f8fc..07c961a2ea1358c9f6ffb50daf83c30b4433ea8f 100644
--- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteService.java
+++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteService.java
@@ -120,23 +120,29 @@ class SmartDocumentsBescheidRemoteService implements BescheidRemoteService {
 	}
 
 	Optional<String> extractTextFormXmlFile(File xmlFile) {
-		var xPath = XPathFactory.newInstance().newXPath();
 		try {
-			var document = DocumentBuilderFactory.newDefaultInstance().newDocumentBuilder().parse(xmlFile);
-			var expr = xPath.compile("/root/SmartDocument/Fields/NachrichtenText/text()");
-			var text = (Text) expr.evaluate(document, XPathConstants.NODE);
-
-			return Optional.ofNullable(text.getTextContent());
+			return doExtractText(xmlFile);
 		} catch (XPathExpressionException | SAXException | IOException | ParserConfigurationException e) {
-			LOG.error("XML-Parsing error on extracting Nachricht-Text: {}", e.getMessage(), e);
+			LOG.warn("XML-Parsing error on extracting Nachricht-Text: {}", e.getMessage(), e);
 		} catch (ClassCastException e) {
-			LOG.error("Error on extraction Nachricht-Text. XPath return unexpected Type.", e);
+			LOG.warn("Error on extraction Nachricht-Text. XPath return unexpected Type.", e);
 		} catch (RuntimeException e) {
-			LOG.error("Unexpected Error on extracting NachrichtText: {}", e.getMessage(), e);
+			LOG.warn("Unexpected Error on extracting NachrichtText: {}", e.getMessage(), e);
 		}
 		return Optional.empty();
 	}
 
+	Optional<String> doExtractText(File xmlFile)
+			throws SAXException, IOException, ParserConfigurationException, XPathExpressionException {
+		var xPath = XPathFactory.newInstance().newXPath();
+
+		var document = DocumentBuilderFactory.newDefaultInstance().newDocumentBuilder().parse(xmlFile);
+		var expr = xPath.compile("/root/SmartDocument/Fields/NachrichtenText/text()");
+
+		return Optional.ofNullable((Text) expr.evaluate(document, XPathConstants.NODE))
+				.map(Text::getTextContent);
+	}
+
 	Optional<File> getXMLFile(SmartDocumentsResponse response) {
 		return getSmartDocumentsFile(response, FILE_TYPE_XML)
 				.map(SmartDocumentFile::getDocument)
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 25838cf4939ce8d9b2db28ac1f2bf404a83304e7..a8b47587248d0a8b9e91d315b4a3d422304f13f3 100644
--- a/bescheid-manager/src/main/java/de/ozgcloud/document/DocumentService.java
+++ b/bescheid-manager/src/main/java/de/ozgcloud/document/DocumentService.java
@@ -38,8 +38,8 @@ import de.ozgcloud.apilib.common.command.OzgCloudCommandService;
 import de.ozgcloud.apilib.common.command.grpc.CommandMapper;
 import de.ozgcloud.bescheid.Bescheid;
 import de.ozgcloud.bescheid.BescheidCallContextAttachingInterceptor;
+import de.ozgcloud.bescheid.attacheditem.AttachedItem;
 import de.ozgcloud.bescheid.attacheditem.AttachedItemService;
-import de.ozgcloud.bescheid.attacheditem.BescheidItem;
 import de.ozgcloud.command.Command;
 import de.ozgcloud.common.errorhandling.TechnicalException;
 import lombok.RequiredArgsConstructor;
@@ -77,9 +77,9 @@ public class DocumentService {
 	}
 
 	void validateBescheidItem(String bescheidId) {
-		var bescheidData = attachedItemService.getBescheidItem(bescheidId).getBescheidData();
-		var status = MapUtils.getString(bescheidData, BescheidItem.FIELD_STATUS);
-		if (BescheidItem.Status.DRAFT.not(status)) {
+		var bescheidData = attachedItemService.getBescheidItem(bescheidId).getItem();
+		var status = MapUtils.getString(bescheidData, Bescheid.FIELD_STATUS);
+		if (Bescheid.Status.DRAFT.not(status)) {
 			throw new TechnicalException("Bescheid is not in draft status");
 		}
 	}
@@ -95,10 +95,10 @@ public class DocumentService {
 
 	Map<String, Object> buildAttachedItem(Command command, Map<String, Object> itemMap) {
 		var result = new HashMap<String, Object>();
-		result.put(BescheidItem.PROPERTY_VORGANG_ID, command.getVorgangId());
-		result.put(BescheidItem.PROPERTY_CLIENT, BescheidCallContextAttachingInterceptor.BESCHEID_MANAGER_CLIENT_NAME);
-		result.put(BescheidItem.PROPERTY_ITEM_NAME, DOCUMENT_ITEM_NAME);
-		result.put(BescheidItem.PROPERTY_ITEM, itemMap);
+		result.put(AttachedItem.PROPERTY_VORGANG_ID, command.getVorgangId());
+		result.put(AttachedItem.PROPERTY_CLIENT, BescheidCallContextAttachingInterceptor.BESCHEID_MANAGER_CLIENT_NAME);
+		result.put(AttachedItem.PROPERTY_ITEM_NAME, DOCUMENT_ITEM_NAME);
+		result.put(AttachedItem.PROPERTY_ITEM, itemMap);
 		return result;
 	}
 
diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidGrpcServiceTest.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidGrpcServiceTest.java
index cce8fed48b89880f97ba76ae434a763e69870e52..d5add97a8f5ac99853f9e90a44534a8174f4d76a 100644
--- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidGrpcServiceTest.java
+++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidGrpcServiceTest.java
@@ -5,6 +5,7 @@ import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
 
 import java.util.Collections;
+import java.util.List;
 import java.util.Optional;
 
 import org.junit.jupiter.api.BeforeEach;
@@ -19,9 +20,9 @@ import org.mockito.Spy;
 import de.ozgcloud.bescheid.attacheditem.AttachedItem;
 import de.ozgcloud.bescheid.attacheditem.AttachedItemMapper;
 import de.ozgcloud.bescheid.attacheditem.AttachedItemService;
-import de.ozgcloud.bescheid.attacheditem.BescheidItem;
-import de.ozgcloud.bescheid.attacheditem.BescheidItemMapper;
-import de.ozgcloud.bescheid.attacheditem.BescheidItemTestFactory;
+import de.ozgcloud.bescheid.attacheditem.AttachedItemTestFactory;
+import de.ozgcloud.bescheid.vorgang.VorgangId;
+import de.ozgcloud.command.CommandTestFactory;
 import io.grpc.stub.StreamObserver;
 
 class BescheidGrpcServiceTest {
@@ -35,8 +36,6 @@ class BescheidGrpcServiceTest {
 	@Mock
 	private AttachedItemMapper attachedItemMapper;
 	@Mock
-	private BescheidItemMapper mapper;
-	@Mock
 	private BescheidService bescheidService;
 	@Mock
 	private GrpcBescheidMapper grpcBescheidMapper;
@@ -55,19 +54,20 @@ class BescheidGrpcServiceTest {
 
 		@Test
 		void shouldBuildResponse() {
-			when(mapper.toBescheid(any())).thenReturn(GrpcBescheidTestFactory.create());
-			when(attachedItemService.findBescheidItem(any())).thenReturn(Optional.of(BescheidItemTestFactory.create()));
+			when(attachedItemMapper.toBescheid(any())).thenReturn(GrpcBescheidTestFactory.create());
+			var bescheidItem = AttachedItemTestFactory.createBescheid();
+			when(attachedItemService.findBescheidItem(any())).thenReturn(Optional.of(bescheidItem));
 
 			service.getBescheidDraft(request, responseObserver);
 
-			verify(service).buildResponse(any(BescheidItem.class));
+			verify(service).buildGetBescheidDraftResponse(bescheidItem);
 		}
 
 		@Test
 		void shouldCallNext() {
-			when(mapper.toBescheid(any())).thenReturn(GrpcBescheidTestFactory.create());
-			when(service.buildResponse(any(BescheidItem.class))).thenReturn(response);
-			when(attachedItemService.findBescheidItem(any())).thenReturn(Optional.of(BescheidItemTestFactory.create()));
+			when(attachedItemMapper.toBescheid(any())).thenReturn(GrpcBescheidTestFactory.create());
+			when(service.buildGetBescheidDraftResponse(any())).thenReturn(response);
+			when(attachedItemService.findBescheidItem(any())).thenReturn(Optional.of(AttachedItemTestFactory.createBescheid()));
 
 			service.getBescheidDraft(request, responseObserver);
 
@@ -92,24 +92,24 @@ class BescheidGrpcServiceTest {
 	}
 
 	@Nested
-	class TestBuildResponse {
+	class TestBuildGetBescheidDraftResponse {
 
 		@Test
 		void shouldCallMapper() {
-			when(mapper.toBescheid(any())).thenReturn(GrpcBescheidTestFactory.create());
-			var bescheid = BescheidItemTestFactory.create();
+			when(attachedItemMapper.toBescheid(any())).thenReturn(GrpcBescheidTestFactory.create());
+			var bescheid = AttachedItemTestFactory.createBescheid();
 
-			service.buildResponse(bescheid);
+			service.buildGetBescheidDraftResponse(bescheid);
 
-			verify(mapper).toBescheid(bescheid);
+			verify(attachedItemMapper).toBescheid(bescheid);
 		}
 
 		@Test
 		void shouldSetBescheid() {
 			var grpcBescheid = GrpcBescheidTestFactory.create();
-			when(mapper.toBescheid(any())).thenReturn(grpcBescheid);
+			when(attachedItemMapper.toBescheid(any())).thenReturn(grpcBescheid);
 
-			var response = service.buildResponse(BescheidItemTestFactory.create());
+			var response = service.buildGetBescheidDraftResponse(AttachedItemTestFactory.createBescheid());
 
 			assertThat(response.getBescheid()).isEqualTo(grpcBescheid);
 		}
@@ -175,17 +175,31 @@ class BescheidGrpcServiceTest {
 		private StreamObserver<GrpcGetAllBescheidResponse> responseObserver;
 		@Captor
 		private ArgumentCaptor<GrpcGetAllBescheidResponse> responseCaptor;
+		@Captor
+		private ArgumentCaptor<VorgangId> vorgangIdCaptor;
 
 		@BeforeEach
 		void init() {
-			doReturn(RESPONSE).when(service).buildResponse(anyCollection());
+			when(request.getVorgangId()).thenReturn(CommandTestFactory.VORGANG_ID);
+			doReturn(RESPONSE).when(service).buildGetAllBescheidResponse(anyCollection());
+		}
+
+		@Test
+		void shouldCallFindAllBescheid() {
+			service.getAll(request, responseObserver);
+
+			verify(attachedItemService).findAllBescheid(vorgangIdCaptor.capture());
+			assertThat(vorgangIdCaptor.getValue()).hasToString(CommandTestFactory.VORGANG_ID);
 		}
 
 		@Test
 		void shouldCallBuildResponse() {
+			var expectedBescheidItem = AttachedItemTestFactory.createBescheid();
+			when(attachedItemService.findAllBescheid(any())).thenReturn(List.of(expectedBescheidItem));
+
 			service.getAll(request, responseObserver);
 
-			verify(service).buildResponse(anyCollection());
+			verify(service).buildGetAllBescheidResponse(List.of(expectedBescheidItem));
 		}
 
 		@Test
@@ -220,7 +234,7 @@ class BescheidGrpcServiceTest {
 		void shouldCallMapBescheid() {
 			var bescheidItems = Collections.singleton(attachedItem);
 
-			service.buildResponse(bescheidItems);
+			service.buildGetAllBescheidResponse(bescheidItems);
 
 			verify(service).mapBescheid(bescheidItems);
 		}
@@ -229,7 +243,7 @@ class BescheidGrpcServiceTest {
 		void shouldReturnResponse() {
 			var bescheidItems = Collections.singleton(attachedItem);
 
-			var response = service.buildResponse(bescheidItems);
+			var response = service.buildGetAllBescheidResponse(bescheidItems);
 
 			assertThat(response.getBescheidList()).containsExactly(GRPC_BESCHEID);
 		}
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 a7320efc4f29f83ea6bc0f1e4f15a686d1f0ca57..9f96b98a60c87a1fcb1494d4293c169c0bcf0e9f 100644
--- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidServiceTest.java
+++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidServiceTest.java
@@ -25,7 +25,6 @@ import org.springframework.test.util.ReflectionTestUtils;
 import de.ozgcloud.bescheid.attacheditem.AttachedItem;
 import de.ozgcloud.bescheid.attacheditem.AttachedItemService;
 import de.ozgcloud.bescheid.attacheditem.AttachedItemTestFactory;
-import de.ozgcloud.bescheid.attacheditem.BescheidItemTestFactory;
 import de.ozgcloud.bescheid.attributes.ClientAttributeService;
 import de.ozgcloud.bescheid.common.callcontext.CurrentUserService;
 import de.ozgcloud.bescheid.common.callcontext.UserProfile;
@@ -465,7 +464,7 @@ class BescheidServiceTest {
 		void shouldCallSetBescheidStatusSent() {
 			sendBescheid();
 
-			verify(attachedItemService).setBescheidStatus(BescheidItemTestFactory.ID, BescheidItemTestFactory.VERSION, Bescheid.Status.SEND);
+			verify(attachedItemService).setBescheidStatus(AttachedItemTestFactory.ID, AttachedItemTestFactory.VERSION, Bescheid.Status.SENT);
 		}
 
 		@Test
@@ -481,7 +480,7 @@ class BescheidServiceTest {
 
 			assertThrows(TechnicalException.class, this::sendBescheid);
 
-			verify(attachedItemService).setBescheidStatus(BescheidItemTestFactory.ID, BescheidItemTestFactory.VERSION, Bescheid.Status.SEND);
+			verify(attachedItemService).setBescheidStatus(AttachedItemTestFactory.ID, AttachedItemTestFactory.VERSION, Bescheid.Status.SENT);
 		}
 
 		@Test
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 4b4b55c3df461a6126d5031ad529329a322e8230..fe29f7c3257cb03537de97b1490cc2ec9fd80bc8 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
@@ -50,6 +50,8 @@ import de.ozgcloud.apilib.common.datatypes.GenericId;
 import de.ozgcloud.apilib.vorgang.OzgCloudVorgangId;
 import de.ozgcloud.bescheid.Bescheid;
 import de.ozgcloud.bescheid.BescheidCallContextAttachingInterceptor;
+import de.ozgcloud.bescheid.vorgang.VorgangId;
+import de.ozgcloud.bescheid.vorgang.VorgangTestFactory;
 import de.ozgcloud.command.Command;
 import de.ozgcloud.command.CommandTestFactory;
 import de.ozgcloud.common.errorhandling.TechnicalException;
@@ -80,7 +82,7 @@ class AttachedItemServiceTest {
 
 		@Test
 		void shouldReturnBescheidItem() {
-			var expected = BescheidItemTestFactory.create();
+			var expected = AttachedItemTestFactory.createBescheid();
 			when(remoteService.findBescheidDraft(anyString())).thenReturn(Optional.of(expected));
 
 			var actual = service.findBescheidItem(CommandTestFactory.VORGANG_ID);
@@ -94,17 +96,17 @@ class AttachedItemServiceTest {
 
 		@Test
 		void shouldCallGetBescheid() {
-			service.getBescheidItem(BescheidItemTestFactory.ID);
+			service.getBescheidItem(AttachedItemTestFactory.ID);
 
-			verify(remoteService).getBescheid(BescheidItemTestFactory.ID);
+			verify(remoteService).getBescheid(AttachedItemTestFactory.ID);
 		}
 
 		@Test
 		void shouldReturnBescheidItem() {
-			var expected = BescheidItemTestFactory.create();
+			var expected = AttachedItemTestFactory.createBescheid();
 			when(remoteService.getBescheid(anyString())).thenReturn(expected);
 
-			var actual = service.getBescheidItem(BescheidItemTestFactory.ID);
+			var actual = service.getBescheidItem(AttachedItemTestFactory.ID);
 
 			assertThat(actual).isEqualTo(expected);
 		}
@@ -115,14 +117,13 @@ class AttachedItemServiceTest {
 
 		private static final String CREATED_ATTACHED_ITEM_ID = "attached-item-id";
 
-		private Command command = CommandTestFactory.createBuilder().bodyObject(BescheidItemTestFactory.createBescheidBody()).build();
-		private final BescheidItem bescheidItem = BescheidItemTestFactory.create();
+		private final AttachedItem bescheidItem = AttachedItemTestFactory.createBescheid();
+		private Command command = CommandTestFactory.createBuilder().bodyObject(AttachedItemTestFactory.createBescheidItem()).build();
 
 		@Mock
 		private OzgCloudCommand ozgCloudCommand;
-
 		@Captor
-		private ArgumentCaptor<BescheidItem> bescheidItemCaptor;
+		private ArgumentCaptor<AttachedItem> bescheidItemCaptor;
 
 		@Test
 		void shouldCallValidateData() {
@@ -275,7 +276,7 @@ class AttachedItemServiceTest {
 			@DisplayName(value = "should fail if bescheidAm is missing")
 			@Test
 			void shouldThrowExceptionByBescheidAm() {
-				Map<String, Object> map = Map.of(BescheidItem.FIELD_BEWILLIGT, true);
+				Map<String, Object> map = Map.of(Bescheid.FIELD_BEWILLIGT, true);
 
 				assertThrows(TechnicalException.class, () -> service.validateBescheidData(map));
 			}
@@ -283,7 +284,7 @@ class AttachedItemServiceTest {
 			@DisplayName(value = "should fail if bewilligt is missing")
 			@Test
 			void shouldThrowExceptionByBewilligt() {
-				Map<String, Object> map = Map.of(BescheidItem.FIELD_BESCHIEDEN_AM, "2021-01-01");
+				Map<String, Object> map = Map.of(Bescheid.FIELD_BESCHIEDEN_AM, "2021-01-01");
 
 				assertThrows(TechnicalException.class, () -> service.validateBescheidData(map));
 			}
@@ -296,8 +297,8 @@ class AttachedItemServiceTest {
 		@Mock
 		private OzgCloudCommand updateAttachedItemCommand;
 
-		private final Command command = CommandTestFactory.createBuilder().relationId(BescheidItemTestFactory.ID).build();
-		private final BescheidItem bescheidItem = BescheidItemTestFactory.create();
+		private final Command command = CommandTestFactory.createBuilder().relationId(AttachedItemTestFactory.ID).build();
+		private final AttachedItem bescheidItem = AttachedItemTestFactory.createBescheid();
 
 		@BeforeEach
 		void init() {
@@ -308,7 +309,7 @@ class AttachedItemServiceTest {
 		void shouldCallGetBescheid() {
 			service.updateBescheidDraft(command);
 
-			verify(remoteService).getBescheid(BescheidItemTestFactory.ID);
+			verify(remoteService).getBescheid(AttachedItemTestFactory.ID);
 		}
 
 		@Test
@@ -366,27 +367,27 @@ class AttachedItemServiceTest {
 	@Nested
 	class TestBuildAttachedItemAsMap {
 
-		private final Command command = CommandTestFactory.createBuilder().bodyObject(BescheidItemTestFactory.createBescheidBody()).build();
+		private final Command command = CommandTestFactory.createBuilder().bodyObject(AttachedItemTestFactory.createBescheidItem()).build();
 
 		@Test
 		void shouldSetVorgangId() {
 			var map = service.buildAttachedItemAsMap(command, Map.of());
 
-			assertThat(map).containsEntry(BescheidItem.PROPERTY_VORGANG_ID, command.getVorgangId());
+			assertThat(map).containsEntry(AttachedItem.PROPERTY_VORGANG_ID, command.getVorgangId());
 		}
 
 		@Test
 		void shouldSetClient() {
 			var map = service.buildAttachedItemAsMap(command, Map.of());
 
-			assertThat(map).containsEntry(BescheidItem.PROPERTY_CLIENT, BescheidCallContextAttachingInterceptor.BESCHEID_MANAGER_CLIENT_NAME);
+			assertThat(map).containsEntry(AttachedItem.PROPERTY_CLIENT, BescheidCallContextAttachingInterceptor.BESCHEID_MANAGER_CLIENT_NAME);
 		}
 
 		@Test
 		void shouldSetItemName() {
 			var map = service.buildAttachedItemAsMap(command, Map.of());
 
-			assertThat(map).containsEntry(BescheidItem.PROPERTY_ITEM_NAME, AttachedItemService.BESCHEID_ITEM_NAME);
+			assertThat(map).containsEntry(AttachedItem.PROPERTY_ITEM_NAME, AttachedItemService.BESCHEID_ITEM_NAME);
 		}
 
 		@Test
@@ -395,7 +396,7 @@ class AttachedItemServiceTest {
 
 			var map = service.buildAttachedItemAsMap(command, expectedMap);
 
-			assertThat(map).containsEntry(BescheidItem.PROPERTY_ITEM, expectedMap);
+			assertThat(map).containsEntry(AttachedItem.PROPERTY_ITEM, expectedMap);
 		}
 	}
 
@@ -406,7 +407,7 @@ class AttachedItemServiceTest {
 		@Mock
 		private OzgCloudCommand updateItemCommand;
 
-		private final Command command = CommandTestFactory.createBuilder().bodyObject(BescheidItemTestFactory.createBescheidBody()).build();
+		private final Command command = CommandTestFactory.createBuilder().bodyObject(AttachedItemTestFactory.createBescheidItem()).build();
 
 		@BeforeEach
 		void init() {
@@ -416,7 +417,7 @@ class AttachedItemServiceTest {
 
 		@Test
 		void shouldCallBuildItemMapWithAllBescheidFields() {
-			service.overrideAttachedItem(BescheidItemTestFactory.create(), command);
+			service.overrideAttachedItem(AttachedItemTestFactory.createBescheid(), command);
 
 			verify(service).buildItemMapWithAllBescheidFields(command);
 		}
@@ -426,7 +427,7 @@ class AttachedItemServiceTest {
 			var itemMap = Map.of("key", (Object) "value");
 			doReturn(itemMap).when(service).buildItemMapWithAllBescheidFields(any());
 
-			service.overrideAttachedItem(BescheidItemTestFactory.create(), command);
+			service.overrideAttachedItem(AttachedItemTestFactory.createBescheid(), command);
 
 			verify(service).buildAttachedItemAsMap(command, itemMap);
 		}
@@ -435,7 +436,7 @@ class AttachedItemServiceTest {
 		void shouldCallBuildUpdateAttachedItemCommand() {
 			var bodyObject = Map.of("key", (Object) "value");
 			doReturn(bodyObject).when(service).buildAttachedItemAsMap(any(), any());
-			var bescheidItem = BescheidItemTestFactory.create();
+			var bescheidItem = AttachedItemTestFactory.createBescheid();
 
 			service.overrideAttachedItem(bescheidItem, command);
 
@@ -446,14 +447,14 @@ class AttachedItemServiceTest {
 		void shouldCallCommandService() {
 			doReturn(updateItemCommand).when(service).buildUpdateAttachedItemCommand(any(), any());
 
-			service.overrideAttachedItem(BescheidItemTestFactory.create(), command);
+			service.overrideAttachedItem(AttachedItemTestFactory.createBescheid(), command);
 
 			verify(commandService).createAndWaitUntilDone(updateItemCommand);
 		}
 
 		@Test
 		void shouldReturnCreatedResource() {
-			var result = service.overrideAttachedItem(BescheidItemTestFactory.create(), command);
+			var result = service.overrideAttachedItem(AttachedItemTestFactory.createBescheid(), command);
 
 			assertThat(result).isEqualTo(CREATED_RESOURCE);
 		}
@@ -500,62 +501,62 @@ class AttachedItemServiceTest {
 	@Nested
 	class TestBuildBescheidMap {
 
-		private final Command command = CommandTestFactory.createBuilder().bodyObject(BescheidItemTestFactory.createBescheidBody()).build();
+		private final Command command = CommandTestFactory.createBuilder().bodyObject(AttachedItemTestFactory.createBescheidItem()).build();
 
 		@Test
 		void shouldSetStatus() {
 			var bescheidMap = service.buildItemMapWithExistingBescheidFields(command);
 
-			assertThat(bescheidMap).containsEntry(BescheidItem.FIELD_STATUS, BescheidItem.Status.DRAFT.name());
+			assertThat(bescheidMap).containsEntry(Bescheid.FIELD_STATUS, Bescheid.Status.DRAFT.name());
 		}
 
 		@Test
 		void shouldSetBeschiedenAm() {
 			var bescheidMap = service.buildItemMapWithExistingBescheidFields(command);
 
-			assertThat(bescheidMap).containsEntry(BescheidItem.FIELD_BESCHIEDEN_AM, BescheidItemTestFactory.BESCHEIDEN_AM);
+			assertThat(bescheidMap).containsEntry(Bescheid.FIELD_BESCHIEDEN_AM, AttachedItemTestFactory.BESCHEIDEN_AM);
 		}
 
 		@Test
 		void shouldSetBewilligt() {
 			var bescheidMap = service.buildItemMapWithExistingBescheidFields(command);
 
-			assertThat(bescheidMap).containsEntry(BescheidItem.FIELD_BEWILLIGT, true);
+			assertThat(bescheidMap).containsEntry(Bescheid.FIELD_BEWILLIGT, true);
 		}
 
 		@Test
 		void shouldSetBescheidDocument() {
 			var bescheidMap = service.buildItemMapWithExistingBescheidFields(command);
 
-			assertThat(bescheidMap).containsEntry(BescheidItem.FIELD_BESCHEID_DOCUMENT, BescheidItemTestFactory.BESCHEID_DOCUMENT);
+			assertThat(bescheidMap).containsEntry(Bescheid.FIELD_BESCHEID_DOCUMENT, AttachedItemTestFactory.BESCHEID_DOCUMENT);
 		}
 
 		@Test
 		void shouldSetSendBy() {
 			var bescheidMap = service.buildItemMapWithExistingBescheidFields(command);
 
-			assertThat(bescheidMap).containsEntry(BescheidItem.FIELD_SEND_BY, BescheidItemTestFactory.SEND_BY);
+			assertThat(bescheidMap).containsEntry(Bescheid.FIELD_SEND_BY, AttachedItemTestFactory.SEND_BY.name());
 		}
 
 		@Test
 		void shouldSetNachrichtText() {
 			var bescheidMap = service.buildItemMapWithExistingBescheidFields(command);
 
-			assertThat(bescheidMap).containsEntry(BescheidItem.FIELD_NACHRICHT_TEXT, BescheidItemTestFactory.NACHRICHT_TEXT);
+			assertThat(bescheidMap).containsEntry(Bescheid.FIELD_NACHRICHT_TEXT, AttachedItemTestFactory.NACHRICHT_TEXT);
 		}
 
 		@Test
 		void shouldSetNachrichtSubject() {
 			var bescheidMap = service.buildItemMapWithExistingBescheidFields(command);
 
-			assertThat(bescheidMap).containsEntry(BescheidItem.FIELD_NACHRICHT_SUBJECT, BescheidItemTestFactory.NACHRICHT_SUBJECT);
+			assertThat(bescheidMap).containsEntry(Bescheid.FIELD_NACHRICHT_SUBJECT, AttachedItemTestFactory.NACHRICHT_SUBJECT);
 		}
 
 		@Test
 		void shouldSetAttachments() {
 			var bescheidMap = service.buildItemMapWithExistingBescheidFields(command);
 
-			assertThat(bescheidMap).containsEntry(BescheidItem.FIELD_ATTACHMENTS, List.of(BescheidItemTestFactory.ATTACHMENT));
+			assertThat(bescheidMap).containsEntry(Bescheid.FIELD_ATTACHMENTS, List.of(AttachedItemTestFactory.ATTACHMENT));
 		}
 	}
 
@@ -564,7 +565,7 @@ class AttachedItemServiceTest {
 
 		@Test
 		void shouldCallVorgangIdMapper() {
-			service.buildUpdateAttachedItemCommand(BescheidItemTestFactory.create(), Map.of());
+			service.buildUpdateAttachedItemCommand(AttachedItemTestFactory.createBescheid(), Map.of());
 
 			verify(commandMapper).toOzgCloudVorgangId(CommandTestFactory.VORGANG_ID);
 		}
@@ -574,16 +575,16 @@ class AttachedItemServiceTest {
 			var expectedVorgangId = OzgCloudVorgangId.from(CommandTestFactory.VORGANG_ID);
 			when(commandMapper.toOzgCloudVorgangId(any())).thenReturn(expectedVorgangId);
 
-			var result = service.buildUpdateAttachedItemCommand(BescheidItemTestFactory.create(), Map.of());
+			var result = service.buildUpdateAttachedItemCommand(AttachedItemTestFactory.createBescheid(), Map.of());
 
 			assertThat(result.getVorgangId()).isEqualTo(expectedVorgangId);
 		}
 
 		@Test
 		void shouldCallRelationIdMapper() {
-			service.buildUpdateAttachedItemCommand(BescheidItemTestFactory.create(), Map.of());
+			service.buildUpdateAttachedItemCommand(AttachedItemTestFactory.createBescheid(), Map.of());
 
-			verify(commandMapper).mapRelationId(BescheidItemTestFactory.ID);
+			verify(commandMapper).mapRelationId(AttachedItemTestFactory.ID);
 		}
 
 		@Test
@@ -591,21 +592,21 @@ class AttachedItemServiceTest {
 			var expectedId = GenericId.from("relationId");
 			when(commandMapper.mapRelationId(any())).thenReturn(expectedId);
 
-			var result = service.buildUpdateAttachedItemCommand(BescheidItemTestFactory.create(), Map.of());
+			var result = service.buildUpdateAttachedItemCommand(AttachedItemTestFactory.createBescheid(), Map.of());
 
 			assertThat(result.getRelationId()).isEqualTo(expectedId);
 		}
 
 		@Test
 		void shouldSetRelationVersion() {
-			var result = service.buildUpdateAttachedItemCommand(BescheidItemTestFactory.create(), Map.of());
+			var result = service.buildUpdateAttachedItemCommand(AttachedItemTestFactory.createBescheid(), Map.of());
 
-			assertThat(result.getRelationVersion()).isEqualTo(BescheidItemTestFactory.VERSION);
+			assertThat(result.getRelationVersion()).isEqualTo(AttachedItemTestFactory.VERSION);
 		}
 
 		@Test
 		void shouldSetOrder() {
-			var result = service.buildUpdateAttachedItemCommand(BescheidItemTestFactory.create(), Map.of());
+			var result = service.buildUpdateAttachedItemCommand(AttachedItemTestFactory.createBescheid(), Map.of());
 
 			assertThat(result.getOrder()).isEqualTo(AttachedItemService.UPDATE_ATTACHED_ITEM_ORDER);
 		}
@@ -614,7 +615,7 @@ class AttachedItemServiceTest {
 		void shouldSetBodyObject() {
 			var bodyObject = Map.of("key", (Object) "value");
 
-			var result = service.buildUpdateAttachedItemCommand(BescheidItemTestFactory.create(), bodyObject);
+			var result = service.buildUpdateAttachedItemCommand(AttachedItemTestFactory.createBescheid(), bodyObject);
 
 			assertThat(result.getBodyObject()).containsAllEntriesOf(bodyObject);
 		}
@@ -627,21 +628,21 @@ class AttachedItemServiceTest {
 		@Mock
 		private OzgCloudCommand deleteItemOzgCloudCommand;
 
-		private final Command command = CommandTestFactory.createBuilder().relationId(BescheidItemTestFactory.ID).build();
+		private final Command command = CommandTestFactory.createBuilder().relationId(AttachedItemTestFactory.ID).build();
 
 		@Test
 		void shouldCallGetBescheid() {
-			when(remoteService.getBescheid(any())).thenReturn(BescheidItemTestFactory.create());
+			when(remoteService.getBescheid(any())).thenReturn(AttachedItemTestFactory.createBescheid());
 
 			deleteBescheidDraft();
 
-			verify(remoteService).getBescheid(BescheidItemTestFactory.ID);
+			verify(remoteService).getBescheid(AttachedItemTestFactory.ID);
 		}
 
 		@Test
 		void shouldCallCommandService() {
 			doReturn(deleteItemOzgCloudCommand).when(service).buildDeleteItemCommand(any(), any());
-			when(remoteService.getBescheid(any())).thenReturn(BescheidItemTestFactory.create());
+			when(remoteService.getBescheid(any())).thenReturn(AttachedItemTestFactory.createBescheid());
 
 			deleteBescheidDraft();
 
@@ -664,7 +665,7 @@ class AttachedItemServiceTest {
 
 			@Test
 			void shouldCallCommandMapperWithVorgangId() {
-				service.buildDeleteItemCommand(command, BescheidItemTestFactory.create());
+				service.buildDeleteItemCommand(command, AttachedItemTestFactory.createBescheid());
 
 				verify(commandMapper).toOzgCloudVorgangId(CommandTestFactory.VORGANG_ID);
 			}
@@ -674,38 +675,38 @@ class AttachedItemServiceTest {
 				var expectedVorgangId = OzgCloudVorgangId.from(CommandTestFactory.VORGANG_ID);
 				when(commandMapper.toOzgCloudVorgangId(any())).thenReturn(expectedVorgangId);
 
-				var ozgCloudCommand = service.buildDeleteItemCommand(command, BescheidItemTestFactory.create());
+				var ozgCloudCommand = service.buildDeleteItemCommand(command, AttachedItemTestFactory.createBescheid());
 
 				assertThat(ozgCloudCommand.getVorgangId()).isEqualTo(expectedVorgangId);
 			}
 
 			@Test
 			void shouldCallCommandMapperWithRelationId() {
-				service.buildDeleteItemCommand(command, BescheidItemTestFactory.create());
+				service.buildDeleteItemCommand(command, AttachedItemTestFactory.createBescheid());
 
-				verify(commandMapper).mapRelationId(BescheidItemTestFactory.ID);
+				verify(commandMapper).mapRelationId(AttachedItemTestFactory.ID);
 			}
 
 			@Test
 			void shouldSetRelationId() {
-				var expectedId = GenericId.from(BescheidItemTestFactory.ID);
+				var expectedId = GenericId.from(AttachedItemTestFactory.ID);
 				when(commandMapper.mapRelationId(any())).thenReturn(expectedId);
 
-				var ozgCloudCommand = service.buildDeleteItemCommand(command, BescheidItemTestFactory.create());
+				var ozgCloudCommand = service.buildDeleteItemCommand(command, AttachedItemTestFactory.createBescheid());
 
 				assertThat(ozgCloudCommand.getRelationId()).isEqualTo(expectedId);
 			}
 
 			@Test
 			void shouldSetRelationVersion() {
-				var ozgCloudCommand = service.buildDeleteItemCommand(command, BescheidItemTestFactory.create());
+				var ozgCloudCommand = service.buildDeleteItemCommand(command, AttachedItemTestFactory.createBescheid());
 
-				assertThat(ozgCloudCommand.getRelationVersion()).isEqualTo(BescheidItemTestFactory.VERSION);
+				assertThat(ozgCloudCommand.getRelationVersion()).isEqualTo(AttachedItemTestFactory.VERSION);
 			}
 
 			@Test
 			void shouldSetOrder() {
-				var ozgCloudCommand = service.buildDeleteItemCommand(command, BescheidItemTestFactory.create());
+				var ozgCloudCommand = service.buildDeleteItemCommand(command, AttachedItemTestFactory.createBescheid());
 
 				assertThat(ozgCloudCommand.getOrder()).isEqualTo(AttachedItemService.DELETE_ATTACHED_ITEM);
 			}
@@ -717,12 +718,13 @@ class AttachedItemServiceTest {
 
 		@Test
 		void shouldFilterDraftStatus() {
-			assertDoesNotThrow(() -> service.validateBescheidStatus(BescheidItemTestFactory.create()));
+			assertDoesNotThrow(() -> service.validateBescheidStatus(AttachedItemTestFactory.createBescheid()));
 		}
 
 		@Test
 		void shouldThrowExceptionIfBescheidIsNotDraft() {
-			var bescheidItem = BescheidItemTestFactory.createBuilder().bescheidData(Map.of(BescheidItem.FIELD_STATUS, "otherStatus")).build();
+			var bescheidItem =
+					AttachedItemTestFactory.createBescheidBuilder().clearItem().itemEntry(Bescheid.FIELD_STATUS, "otherStatus").build();
 
 			assertThrows(TechnicalException.class, () -> service.validateBescheidStatus(bescheidItem));
 		}
@@ -734,9 +736,9 @@ class AttachedItemServiceTest {
 
 		@Test
 		void shouldCallRemoteService() {
-			service.getItem(BescheidItemTestFactory.ID);
+			service.getItem(AttachedItemTestFactory.ID);
 
-			verify(service).getItem(BescheidItemTestFactory.ID);
+			verify(service).getItem(AttachedItemTestFactory.ID);
 		}
 
 		@Test
@@ -744,7 +746,7 @@ class AttachedItemServiceTest {
 			var expectedItem = AttachedItemTestFactory.createDocument();
 			doReturn(expectedItem).when(remoteService).getItem(any());
 
-			var result = service.getItem(BescheidItemTestFactory.ID);
+			var result = service.getItem(AttachedItemTestFactory.ID);
 
 			assertThat(result).isEqualTo(expectedItem);
 		}
@@ -758,8 +760,6 @@ class AttachedItemServiceTest {
 
 		@Test
 		void shouldCallBuildPatchBescheidCommand() {
-			var item = AttachedItemTestFactory.createDocument();
-
 			setBescheidStatus();
 
 			verify(service).buildPatchBescheidCommand(AttachedItemTestFactory.ID, AttachedItemTestFactory.VERSION, Bescheid.Status.DRAFT);
@@ -831,7 +831,7 @@ class AttachedItemServiceTest {
 		}
 
 		private OzgCloudCommand buildPatchBescheidCommand() {
-			return service.buildPatchBescheidCommand(BescheidItemTestFactory.ID, BescheidItemTestFactory.VERSION, Bescheid.Status.DRAFT);
+			return service.buildPatchBescheidCommand(AttachedItemTestFactory.ID, AttachedItemTestFactory.VERSION, Bescheid.Status.DRAFT);
 		}
 	}
 
@@ -852,4 +852,25 @@ class AttachedItemServiceTest {
 			assertThat(result).extracting(AttachedItem.PROPERTY_ITEM, MAP).containsEntry(Bescheid.FIELD_STATUS, Bescheid.Status.DRAFT.name());
 		}
 	}
+
+	@Nested
+	class TestFindAllBescheid {
+
+		@Test
+		void shouldCallRemoteService() {
+			service.findAllBescheid(VorgangTestFactory.ID);
+
+			verify(remoteService).findAllBescheid(VorgangTestFactory.ID);
+		}
+
+		@Test
+		void shouldReturnResult() {
+			var expectedBescheidItem = AttachedItemTestFactory.createBescheid();
+			when(remoteService.findAllBescheid(any(VorgangId.class))).thenReturn(Collections.singletonList(expectedBescheidItem));
+
+			var result = service.findAllBescheid(VorgangTestFactory.ID);
+
+			assertThat(result).containsExactly(expectedBescheidItem);
+		}
+	}
 }
\ No newline at end of file
diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/BescheidItemMapperTest.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/BescheidItemMapperTest.java
deleted file mode 100644
index 027085c7c1c70681debd0503f3e1920c5620a039..0000000000000000000000000000000000000000
--- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/BescheidItemMapperTest.java
+++ /dev/null
@@ -1,257 +0,0 @@
-/*
- * 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.attacheditem;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.util.List;
-import java.util.Map;
-
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.NullAndEmptySource;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.bescheid.GrpcBescheid;
-import de.ozgcloud.command.CommandTestFactory;
-import de.ozgcloud.vorgang.common.grpc.GrpcObjectMapper;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcFindVorgangAttachedItemResponse;
-
-class BescheidItemMapperTest {
-
-	@Spy
-	@InjectMocks
-	private BescheidItemMapper mapper;
-
-	@Mock
-	private GrpcObjectMapper grpcObjectMapper;
-
-	@Nested
-	class TestFromFindVorgangAttachedItemResponse {
-
-		GrpcFindVorgangAttachedItemResponse grpcResponse = GrpcFindVorgangAttachedItemResponseTestFactory.create();
-
-		@Test
-		void shouldCallMapFromVorgangAttachedItem() {
-			mapper.fromFindVorgangAttachedItemResponse(grpcResponse).toList();
-
-			verify(mapper).mapFromVorgangAttachedItem(grpcResponse.getVorgangAttachedItems(0));
-		}
-
-		@Test
-		void shouldReturnBescheidITem() {
-			var bescheid = BescheidItemTestFactory.create();
-			doReturn(bescheid).when(mapper).mapFromVorgangAttachedItem(any());
-
-			var result = mapper.fromFindVorgangAttachedItemResponse(grpcResponse).toList();
-
-			assertThat(result).first().isEqualTo(bescheid);
-		}
-	}
-
-	@Nested
-	class TestMapFromVorgangAttachedItem {
-
-		@Test
-		void shouldSetId() {
-			var result = mapper.mapFromVorgangAttachedItem(GrpcVorgangAttachedItemTestFactory.create());
-
-			assertThat(result.getId()).isEqualTo(BescheidItemTestFactory.ID);
-		}
-
-		@Test
-		void shouldSetVersion() {
-			var grpcAttachedItem = GrpcVorgangAttachedItemTestFactory.createBuilder().setVersion(BescheidItemTestFactory.VERSION).build();
-
-			var result = mapper.mapFromVorgangAttachedItem(grpcAttachedItem);
-
-			assertThat(result.getVersion()).isEqualTo(BescheidItemTestFactory.VERSION);
-		}
-
-		@Test
-		void shouldSetClient() {
-			var result = mapper.mapFromVorgangAttachedItem(GrpcVorgangAttachedItemTestFactory.create());
-
-			assertThat(result.getClient()).isEqualTo(BescheidItemTestFactory.CLIENT);
-		}
-
-		@Test
-		void shouldSetVorgangId() {
-			var result = mapper.mapFromVorgangAttachedItem(GrpcVorgangAttachedItemTestFactory.create());
-
-			assertThat(result.getVorgangId()).isEqualTo(CommandTestFactory.VORGANG_ID);
-		}
-
-		@Test
-		void shouldSetItemName() {
-			var result = mapper.mapFromVorgangAttachedItem(GrpcVorgangAttachedItemTestFactory.create());
-
-			assertThat(result.getItemName()).isEqualTo(AttachedItemService.BESCHEID_ITEM_NAME);
-		}
-
-		@Test
-		void shouldCallGrpcObjectMapper() {
-			var grpcAttachedItem = GrpcVorgangAttachedItemTestFactory.create();
-
-			mapper.mapFromVorgangAttachedItem(grpcAttachedItem);
-
-			verify(grpcObjectMapper).mapFromGrpc(grpcAttachedItem.getItem());
-		}
-
-		@Test
-		void shouldSetBescheidData() {
-			var bescheidData = BescheidItemTestFactory.createBescheidBody();
-			when(grpcObjectMapper.mapFromGrpc(any())).thenReturn(bescheidData);
-
-			var result = mapper.mapFromVorgangAttachedItem(GrpcVorgangAttachedItemTestFactory.create());
-
-			assertThat(result.getBescheidData()).isEqualTo(bescheidData);
-		}
-	}
-
-	@Nested
-	class TestToBescheid {
-
-		@Test
-		void shouldSetBeschiedenAm() {
-			var bescheid = mapBescheid();
-
-			assertThat(bescheid.getBeschiedenAm()).isEqualTo(BescheidItemTestFactory.BESCHEIDEN_AM);
-		}
-
-		@Test
-		void shouldSetBewilligt() {
-			var bescheid = mapBescheid();
-
-			assertThat(bescheid.getBewilligt()).isTrue();
-		}
-
-		@Test
-		void shouldSetBescheidDocument() {
-			var bescheid = mapBescheid();
-
-			assertThat(bescheid.getBescheidDocument()).isEqualTo(BescheidItemTestFactory.BESCHEID_DOCUMENT);
-		}
-
-		@Test
-		void shouldSetSendBy() {
-			var bescheid = mapBescheid();
-
-			assertThat(bescheid.getSendBy()).isEqualTo(BescheidItemTestFactory.SEND_BY);
-		}
-
-		@Test
-		void shouldSetNachrichtText() {
-			var bescheid = mapBescheid();
-
-			assertThat(bescheid.getNachrichtText()).isEqualTo(BescheidItemTestFactory.NACHRICHT_TEXT);
-		}
-
-		@Test
-		void shouldSetNachrichtSubject() {
-			var bescheid = mapBescheid();
-
-			assertThat(bescheid.getNachrichtSubject()).isEqualTo(BescheidItemTestFactory.NACHRICHT_SUBJECT);
-		}
-
-		@Test
-		void shouldCallToAttachments() {
-			var expectedAttachments = List.of(BescheidItemTestFactory.ATTACHMENT);
-			var bescheidItem = BescheidItemTestFactory.createBuilder()
-					.bescheidData(Map.of(BescheidItem.FIELD_ATTACHMENTS, expectedAttachments)).build();
-
-			mapper.toBescheid(bescheidItem);
-
-			verify(mapper).toAttachments(expectedAttachments);
-		}
-
-		@Test
-		void shouldNotCallToAttachments() {
-			var bescheidItem = BescheidItemTestFactory.createBuilder().bescheidData(Map.of()).build();
-
-			mapper.toBescheid(bescheidItem);
-
-			verify(mapper, never()).toAttachments(any());
-		}
-
-		@Test
-		void shouldSetAttachments() {
-			doReturn(List.of(BescheidItemTestFactory.ATTACHMENT)).when(mapper).toAttachments(any());
-
-			var bescheid = mapBescheid();
-
-			assertThat(bescheid.getAttachmentsList()).containsExactly(BescheidItemTestFactory.ATTACHMENT);
-		}
-
-		@Test
-		void shouldSetId() {
-			var bescheid = mapBescheid();
-
-			assertThat(bescheid.getId()).isEqualTo(BescheidItemTestFactory.ID);
-		}
-
-		@Test
-		void shouldSetVersion() {
-			var bescheid = mapBescheid();
-
-			assertThat(bescheid.getVersion()).isEqualTo(BescheidItemTestFactory.VERSION);
-		}
-
-		private GrpcBescheid mapBescheid() {
-			return mapper.toBescheid(BescheidItemTestFactory.create());
-		}
-	}
-
-	@Nested
-	class TestToAttachments {
-
-		@Test
-		void shouldMapCollection() {
-			var result = mapper.toAttachments(List.of(BescheidItemTestFactory.ATTACHMENT));
-
-			assertThat(result).containsExactly(BescheidItemTestFactory.ATTACHMENT);
-		}
-
-		@Test
-		void shouldMapSingleValue() {
-			var result = mapper.toAttachments(BescheidItemTestFactory.ATTACHMENT);
-
-			assertThat(result).containsExactly(BescheidItemTestFactory.ATTACHMENT);
-		}
-
-		@DisplayName("should return null")
-		@ParameterizedTest(name = "when attachmentsObject is \"{0}\"")
-		@NullAndEmptySource
-		void shouldReturnNull(String attachmentsObject) {
-			var result = mapper.toAttachments(attachmentsObject);
-
-			assertThat(result).isNull();
-		}
-	}
-}
\ No newline at end of file
diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/BescheidItemTestFactory.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/BescheidItemTestFactory.java
deleted file mode 100644
index 1299edf5394b1d9a8ec0d804663dbd450b3d741c..0000000000000000000000000000000000000000
--- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/BescheidItemTestFactory.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * 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.attacheditem;
-
-import java.util.List;
-import java.util.Map;
-
-import de.ozgcloud.bescheid.attacheditem.BescheidItem.BescheidItemBuilder;
-import de.ozgcloud.command.CommandTestFactory;
-
-public class BescheidItemTestFactory {
-
-	public static final String ID = "bescheid-item-id";
-	public static final long VERSION = 10L;
-	public static final String CLIENT = "client";
-
-	public static final String BESCHEIDEN_AM = "2024-01-01";
-	public static final String BESCHEID_DOCUMENT = "bescheid-document";
-	public static final String ATTACHMENT = "attachment-id";
-	public static final String SEND_BY = "POSTFACH";
-	public static final String NACHRICHT_TEXT = "nachricht-text";
-	public static final String NACHRICHT_SUBJECT = "nachricht-subject";
-
-	public static BescheidItem create() {
-		return createBuilder().build();
-	}
-
-	public static BescheidItemBuilder createBuilder() {
-		return BescheidItem.builder()
-				.id(ID)
-				.version(VERSION)
-				.client(CLIENT)
-				.vorgangId(CommandTestFactory.VORGANG_ID)
-				.itemName(AttachedItemService.BESCHEID_ITEM_NAME)
-				.bescheidData(createBescheidBody());
-	}
-
-	public static Map<String,  Object> createBescheidBody() {
-		return Map.of(
-				BescheidItem.FIELD_STATUS, BescheidItem.Status.DRAFT,
-				BescheidItem.FIELD_BESCHIEDEN_AM, BESCHEIDEN_AM,
-				BescheidItem.FIELD_BEWILLIGT, true,
-				BescheidItem.FIELD_BESCHEID_DOCUMENT, BESCHEID_DOCUMENT,
-				BescheidItem.FIELD_ATTACHMENTS, List.of(ATTACHMENT),
-				BescheidItem.FIELD_SEND_BY, SEND_BY,
-				BescheidItem.FIELD_NACHRICHT_TEXT, NACHRICHT_TEXT,
-				BescheidItem.FIELD_NACHRICHT_SUBJECT, NACHRICHT_SUBJECT);
-	}
-}
diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/GrpcVorgangAttachedItemTestFactory.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/GrpcVorgangAttachedItemTestFactory.java
index 85515f502425418404afb44e84fd6ed10473f921..fa3431732af5d052b593ed5b8827d0565741f44c 100644
--- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/GrpcVorgangAttachedItemTestFactory.java
+++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/GrpcVorgangAttachedItemTestFactory.java
@@ -41,9 +41,9 @@ public class GrpcVorgangAttachedItemTestFactory {
 
 	static GrpcVorgangAttachedItem.Builder createBuilder() {
 		return GrpcVorgangAttachedItem.newBuilder()
-				.setId(BescheidItemTestFactory.ID)
+				.setId(AttachedItemTestFactory.ID)
 				.setVorgangId(CommandTestFactory.VORGANG_ID)
-				.setClient(BescheidItemTestFactory.CLIENT)
+				.setClient(AttachedItemTestFactory.CLIENT)
 				.setItemName(AttachedItemService.BESCHEID_ITEM_NAME)
 				.setItem(OBJECT);
 	}
diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/UtilsTest.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/UtilsTest.java
index 9809590526f543c40d3efa67b4b09908d2b7f478..c6ba16773eaf8c543412d378709d506d7996cd3a 100644
--- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/UtilsTest.java
+++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/UtilsTest.java
@@ -35,11 +35,10 @@ class UtilsTest {
 
 	@Test
 	void shouldReturnClient() {
-		var command = CommandTestFactory.createBuilder().bodyObject(Map.of(BescheidItem.PROPERTY_CLIENT, BescheidItemTestFactory.CLIENT))
-				.build();
+		var command = CommandTestFactory.createBuilder().bodyObject(Map.of(AttachedItem.PROPERTY_CLIENT, AttachedItemTestFactory.CLIENT)).build();
 
 		var client = Utils.extractClient(command);
 
-		assertThat(client).isEqualTo(BescheidItemTestFactory.CLIENT);
+		assertThat(client).isEqualTo(AttachedItemTestFactory.CLIENT);
 	}
 }
\ No newline at end of file
diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/VorgangAttachedItemRemoteServiceTest.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/VorgangAttachedItemRemoteServiceTest.java
index 444249e06cc391cd8b6d05304ab33f93134cb899..11779af655705946b71d382902ce71b3c97118e6 100644
--- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/VorgangAttachedItemRemoteServiceTest.java
+++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/VorgangAttachedItemRemoteServiceTest.java
@@ -28,11 +28,11 @@ package de.ozgcloud.bescheid.attacheditem;
 import static org.assertj.core.api.Assertions.*;
 import static org.mockito.Mockito.*;
 
-import java.util.Map;
+import java.util.Collections;
+import java.util.List;
 import java.util.Optional;
 import java.util.stream.Stream;
 
-import org.apache.commons.collections.MapUtils;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
@@ -41,8 +41,12 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
 
+import de.ozgcloud.bescheid.Bescheid;
 import de.ozgcloud.bescheid.BescheidCallContextAttachingInterceptor;
+import de.ozgcloud.bescheid.vorgang.VorgangTestFactory;
 import de.ozgcloud.command.CommandTestFactory;
+import de.ozgcloud.vorgang.common.GrpcObject;
+import de.ozgcloud.vorgang.common.GrpcProperty;
 import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcFindVorgangAttachedItemRequest;
 import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcFindVorgangAttachedItemResponse;
 import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcVorgangAttachedItem;
@@ -64,8 +68,6 @@ class VorgangAttachedItemRemoteServiceTest {
 	@Mock
 	private ClientInterceptor bescheidCallContextInterceptor;
 	@Mock
-	private BescheidItemMapper bescheidItemMapper;
-	@Mock
 	private AttachedItemMapper attachedItemMapper;
 
 	@Nested
@@ -74,15 +76,18 @@ class VorgangAttachedItemRemoteServiceTest {
 		@Mock
 		private GrpcFindVorgangAttachedItemRequest request;
 
-		@BeforeEach
-		void init() {
-			doReturn(serviceStub).when(service).getServiceStub();
-		}
-
 		@Nested
 		@DisplayName("by vorgangId")
 		class TestGetByVorgangId {
 
+			private static final AttachedItem BESCHEID_ITEM = AttachedItemTestFactory.createBescheid();
+
+			@BeforeEach
+			void init() {
+				doReturn(request).when(service).buildFindRequest(any());
+				doReturn(Optional.of(BESCHEID_ITEM)).when(service).findBescheidDraft(any(GrpcFindVorgangAttachedItemRequest.class));
+			}
+
 			@Test
 			void shouldCallCreateFindRequestBuilder() {
 				service.findBescheidDraft(VORGANG_ID);
@@ -92,68 +97,63 @@ class VorgangAttachedItemRemoteServiceTest {
 
 			@Test
 			void shouldCallGetBescheidDraft() {
-				doReturn(request).when(service).buildFindRequest(any());
-
 				service.findBescheidDraft(VORGANG_ID);
 
 				verify(service).findBescheidDraft(request);
 			}
+
+			@Test
+			void shouldReturnResult() {
+				var result = service.findBescheidDraft(VORGANG_ID);
+
+				assertThat(result).contains(BESCHEID_ITEM);
+			}
 		}
 
 		@Nested
 		@DisplayName("by grpc request")
 		class TestByGrpcRequest {
 
+			private static final AttachedItem BESCHEID_ITEM = AttachedItemTestFactory.createBescheid();
+
 			@Mock
 			private GrpcFindVorgangAttachedItemResponse response;
 
-			@Test
-			void shouldCallGetServiceStub() {
-				service.findBescheidDraft(request);
-
-				verify(service).getServiceStub();
+			@BeforeEach
+			void init() {
 			}
 
 			@Test
-			void shouldCallFind() {
-				service.findBescheidDraft(request);
-
-				verify(serviceStub).find(request);
-			}
-
-			@Test
-			void shouldCallMapper() {
-				when(serviceStub.find(any())).thenReturn(response);
+			void shouldCallFindAllBescheid() {
+				doReturn(Stream.of(BESCHEID_ITEM)).when(service).findAllBescheid(any(GrpcFindVorgangAttachedItemRequest.class));
 
 				service.findBescheidDraft(request);
 
-				verify(bescheidItemMapper).fromFindVorgangAttachedItemResponse(response);
+				verify(service).findAllBescheid(request);
 			}
 
 			@Test
 			void shouldCallHasStatusDraft() {
-				var item = BescheidItemTestFactory.create();
-				when(bescheidItemMapper.fromFindVorgangAttachedItemResponse(any())).thenReturn(Stream.of(item));
+				doReturn(Stream.of(BESCHEID_ITEM)).when(service).findAllBescheid(any(GrpcFindVorgangAttachedItemRequest.class));
 
 				service.findBescheidDraft(request);
 
-				verify(service).hasStatusDraft(item);
+				verify(service).hasStatusDraft(BESCHEID_ITEM);
 			}
 
 			@Test
 			void shouldFilterDraftItems() {
-				var item = BescheidItemTestFactory.create();
-				when(bescheidItemMapper.fromFindVorgangAttachedItemResponse(any())).thenReturn(Stream.of(item));
+				doReturn(Stream.of(BESCHEID_ITEM)).when(service).findAllBescheid(any(GrpcFindVorgangAttachedItemRequest.class));
 				doReturn(true).when(service).hasStatusDraft(any());
 
 				var result = service.findBescheidDraft(request);
 
-				assertThat(result).contains(item);
+				assertThat(result).contains(BESCHEID_ITEM);
 			}
 
 			@Test
 			void shouldReturnEmptyWhenNotFound() {
-				when(bescheidItemMapper.fromFindVorgangAttachedItemResponse(any())).thenReturn(Stream.empty());
+				doReturn(Stream.empty()).when(service).findAllBescheid(any(GrpcFindVorgangAttachedItemRequest.class));
 
 				var result = service.findBescheidDraft(request);
 
@@ -162,7 +162,7 @@ class VorgangAttachedItemRemoteServiceTest {
 
 			@Test
 			void shouldReturnEmptyWhenNotDraft() {
-				when(bescheidItemMapper.fromFindVorgangAttachedItemResponse(any())).thenReturn(Stream.of(BescheidItemTestFactory.create()));
+				doReturn(Stream.of(BESCHEID_ITEM)).when(service).findAllBescheid(any(GrpcFindVorgangAttachedItemRequest.class));
 				doReturn(false).when(service).hasStatusDraft(any());
 
 				var result = service.findBescheidDraft(request);
@@ -170,25 +170,45 @@ class VorgangAttachedItemRemoteServiceTest {
 				assertThat(result).isEmpty();
 			}
 
-			@Test
-			void shouldReturnLastBescheid() {
-				var item1 = BescheidItemTestFactory.createBuilder().bescheidData(Map.of(
-						BescheidItem.FIELD_BESCHIEDEN_AM, "2021-01-01")).build();
-				var item2 = BescheidItemTestFactory.create();
-				when(bescheidItemMapper.fromFindVorgangAttachedItemResponse(any())).thenReturn(Stream.of(item1, item2));
-				doReturn(true).when(service).hasStatusDraft(any());
+		}
 
-				var result = service.findBescheidDraft(request);
+	}
 
-				assertThat(getBeschiedenAm(result)).isEqualTo(BescheidItemTestFactory.BESCHEIDEN_AM);
-			}
+	@Nested
+	class TestFindAllBescheid {
 
-			private String getBeschiedenAm(Optional<BescheidItem> item) {
-				assertThat(item).isPresent();
-				return MapUtils.getString(item.get().getBescheidData(), BescheidItem.FIELD_BESCHIEDEN_AM);
-			}
+		private static final AttachedItem RESULT_BESCHEID_ITEM = AttachedItemTestFactory.createBescheid();
+
+		@Mock
+		private GrpcFindVorgangAttachedItemRequest request;
+
+		@BeforeEach
+		void init() {
+			doReturn(Stream.of(RESULT_BESCHEID_ITEM)).when(service).findAllBescheid(any(GrpcFindVorgangAttachedItemRequest.class));
+		}
+
+		@Test
+		void shouldCallBuildFindRequest() {
+			service.findAllBescheid(VorgangTestFactory.ID);
+
+			verify(service).buildFindRequest(VorgangTestFactory.ID.toString());
+		}
+
+		@Test
+		void shouldCallFindAllBescheid() {
+			doReturn(request).when(service).buildFindRequest(any());
+
+			service.findAllBescheid(VorgangTestFactory.ID);
+
+			verify(service).findAllBescheid(request);
 		}
 
+		@Test
+		void shouldReturnResult() {
+			var result = service.findAllBescheid(VorgangTestFactory.ID);
+
+			assertThat(result).containsExactly(RESULT_BESCHEID_ITEM);
+		}
 	}
 
 	@Nested
@@ -220,12 +240,75 @@ class VorgangAttachedItemRemoteServiceTest {
 		}
 	}
 
+	@Nested
+	class TestFindAllBescheidWithGrpcRequest {
+
+		@Mock
+		private GrpcFindVorgangAttachedItemRequest request;
+		@Mock
+		private GrpcFindVorgangAttachedItemResponse response;
+		@Mock
+		private GrpcVorgangAttachedItem grpcVorgangAttachedItem;
+
+		@BeforeEach
+		void init() {
+			doReturn(serviceStub).when(service).getServiceStub();
+			when(serviceStub.find(any())).thenReturn(response);
+		}
+
+		@Test
+		void shouldCallGetServiceStub() {
+			service.findAllBescheid(request);
+
+			verify(service).getServiceStub();
+		}
+
+		@Test
+		void shouldCallMapper() {
+			when(response.getVorgangAttachedItemsList()).thenReturn(Collections.singletonList(grpcVorgangAttachedItem));
+
+			service.findAllBescheid(request).toList();
+
+			verify(attachedItemMapper).mapFromVorgangAttachedItem(grpcVorgangAttachedItem);
+		}
+
+		@Test
+		void shouldReturnSortedResult() {
+			var beschiedenAmFirst = "2021-01-01";
+			var beschiedenAmLast = "2024-01-01";
+			createItems(beschiedenAmFirst, beschiedenAmLast);
+
+			var result = service.findAllBescheid(request).toList();
+
+			assertThat(result).hasSize(2);
+			assertThat(result.get(0).getItem()).containsEntry(Bescheid.FIELD_BESCHIEDEN_AM, beschiedenAmLast);
+			assertThat(result.get(1).getItem()).containsEntry(Bescheid.FIELD_BESCHIEDEN_AM, beschiedenAmFirst);
+		}
+
+		private void createItems(String beschiedenAmFirst, String beschiedenAmLast) {
+			var itemBeschiedenFirst = createGrpcAttachedItem(beschiedenAmLast);
+			when(attachedItemMapper.mapFromVorgangAttachedItem(itemBeschiedenFirst)).thenReturn(createAttachedItem(beschiedenAmLast));
+			var itemBeschiedenLast = createGrpcAttachedItem(beschiedenAmFirst);
+			when(attachedItemMapper.mapFromVorgangAttachedItem(itemBeschiedenLast)).thenReturn(createAttachedItem(beschiedenAmFirst));
+			when(response.getVorgangAttachedItemsList()).thenReturn(List.of(itemBeschiedenFirst, itemBeschiedenLast));
+		}
+
+		private GrpcVorgangAttachedItem createGrpcAttachedItem(String beschiedenAm) {
+			return GrpcVorgangAttachedItemTestFactory.createBuilder().clearItem().setItem(GrpcObject.newBuilder().addProperty(
+					GrpcProperty.newBuilder().setName(Bescheid.FIELD_BESCHIEDEN_AM).addValue(beschiedenAm))).build();
+		}
+
+		private AttachedItem createAttachedItem(String beschiedenAm) {
+			return AttachedItemTestFactory.createBescheidBuilder().clearItem().itemEntry(Bescheid.FIELD_BESCHIEDEN_AM, beschiedenAm).build();
+		}
+	}
+
 	@Nested
 	class TestHasStatusDraft {
 
 		@Test
 		void shouldReturnTrueIfDraft() {
-			var item = BescheidItemTestFactory.createBuilder().bescheidData(Map.of(BescheidItem.FIELD_STATUS, BescheidItem.Status.DRAFT.name()))
+			var item = AttachedItemTestFactory.createBescheidBuilder().clearItem().itemEntry(Bescheid.FIELD_STATUS, Bescheid.Status.DRAFT.name())
 					.build();
 
 			var result = service.hasStatusDraft(item);
@@ -235,7 +318,7 @@ class VorgangAttachedItemRemoteServiceTest {
 
 		@Test
 		void shouldReturnFalseIfNotDraft() {
-			var item = BescheidItemTestFactory.createBuilder().bescheidData(Map.of(BescheidItem.FIELD_STATUS, BescheidItem.Status.BESCHEID.name()))
+			var item = AttachedItemTestFactory.createBescheidBuilder().clearItem().itemEntry(Bescheid.FIELD_STATUS, Bescheid.Status.SENT.name())
 					.build();
 
 			var result = service.hasStatusDraft(item);
@@ -275,7 +358,7 @@ class VorgangAttachedItemRemoteServiceTest {
 
 			getBescheid();
 
-			verify(service).buildGetByIdRequest(BescheidItemTestFactory.ID);
+			verify(service).buildGetByIdRequest(AttachedItemTestFactory.ID);
 		}
 
 		@Test
@@ -294,13 +377,13 @@ class VorgangAttachedItemRemoteServiceTest {
 
 			getBescheid();
 
-			verify(bescheidItemMapper).mapFromVorgangAttachedItem(grpcVorgangAttachedItem);
+			verify(attachedItemMapper).mapFromVorgangAttachedItem(grpcVorgangAttachedItem);
 		}
 
 		@Test
 		void shouldReturnFoundBescheid() {
-			var expectedBescheid = BescheidItemTestFactory.create();
-			when(bescheidItemMapper.mapFromVorgangAttachedItem(any())).thenReturn(expectedBescheid);
+			var expectedBescheid = AttachedItemTestFactory.createBescheid();
+			when(attachedItemMapper.mapFromVorgangAttachedItem(any())).thenReturn(expectedBescheid);
 			when(grpcVorgangAttachedItemResponse.getVorgangAttachedItem()).thenReturn(grpcVorgangAttachedItem);
 
 			var result = getBescheid();
@@ -308,8 +391,8 @@ class VorgangAttachedItemRemoteServiceTest {
 			assertThat(result).isEqualTo(expectedBescheid);
 		}
 
-		private BescheidItem getBescheid() {
-			return service.getBescheid(BescheidItemTestFactory.ID);
+		private AttachedItem getBescheid() {
+			return service.getBescheid(AttachedItemTestFactory.ID);
 		}
 	}
 
@@ -378,7 +461,7 @@ class VorgangAttachedItemRemoteServiceTest {
 		}
 
 		private AttachedItem getItem() {
-			return service.getItem(BescheidItemTestFactory.ID);
+			return service.getItem(AttachedItemTestFactory.ID);
 		}
 	}
 
@@ -387,9 +470,9 @@ class VorgangAttachedItemRemoteServiceTest {
 
 		@Test
 		void shouldSetBescheidId() {
-			var request = service.buildGetByIdRequest(BescheidItemTestFactory.ID);
+			var request = service.buildGetByIdRequest(AttachedItemTestFactory.ID);
 
-			assertThat(request.getId()).isEqualTo(BescheidItemTestFactory.ID);
+			assertThat(request.getId()).isEqualTo(AttachedItemTestFactory.ID);
 		}
 	}
 
diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteServiceTest.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteServiceTest.java
index 9696b3cba965a5c2a3c9cdfb50e87dc330b7e37a..41ad8368a3b350af6790e6cc20c0d3e327d792ae 100644
--- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteServiceTest.java
+++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteServiceTest.java
@@ -20,6 +20,7 @@ import de.ozgcloud.bescheid.smartdocuments.SmartDocumentsRequest.CustomerData.Us
 import de.ozgcloud.bescheid.vorgang.VorgangTestFactory;
 import de.ozgcloud.common.binaryfile.TempFileUtils;
 import de.ozgcloud.common.test.TestUtils;
+import lombok.SneakyThrows;
 
 class SmartDocumentsBescheidRemoteServiceTest {
 
@@ -84,6 +85,16 @@ class SmartDocumentsBescheidRemoteServiceTest {
 				assertThat(text).isEmpty();
 			}
 
+			@Test
+			@SneakyThrows
+			void shouldExpectMissingTextNode() {
+				File xmlFileWithoutText = TempFileUtils.writeTmpFile(TestUtils.loadFile("SD_answer_without_text.xml"));
+
+				var text = service.doExtractText(xmlFileWithoutText);
+
+				assertThat(text).isEmpty();
+			}
+
 		}
 	}
 }
diff --git a/bescheid-manager/src/test/java/de/ozgcloud/document/DocumentServiceTest.java b/bescheid-manager/src/test/java/de/ozgcloud/document/DocumentServiceTest.java
index 460875695c5f88aaae3ee6d0f83b1532bbc6e432..9589ada3b530def97b9876347110100bf7f788a7 100644
--- a/bescheid-manager/src/test/java/de/ozgcloud/document/DocumentServiceTest.java
+++ b/bescheid-manager/src/test/java/de/ozgcloud/document/DocumentServiceTest.java
@@ -47,10 +47,9 @@ import de.ozgcloud.apilib.vorgang.OzgCloudVorgangId;
 import de.ozgcloud.bescheid.Bescheid;
 import de.ozgcloud.bescheid.BescheidCallContextAttachingInterceptor;
 import de.ozgcloud.bescheid.BescheidTestFactory;
+import de.ozgcloud.bescheid.attacheditem.AttachedItem;
 import de.ozgcloud.bescheid.attacheditem.AttachedItemService;
 import de.ozgcloud.bescheid.attacheditem.AttachedItemTestFactory;
-import de.ozgcloud.bescheid.attacheditem.BescheidItem;
-import de.ozgcloud.bescheid.attacheditem.BescheidItemTestFactory;
 import de.ozgcloud.command.Command;
 import de.ozgcloud.command.CommandTestFactory;
 import de.ozgcloud.common.binaryfile.FileId;
@@ -198,11 +197,11 @@ class DocumentServiceTest {
 
 		@Test
 		void shouldCallGetBescheidItem() {
-			when(attachedItemService.getBescheidItem(any())).thenReturn(BescheidItemTestFactory.create());
+			when(attachedItemService.getBescheidItem(any())).thenReturn(AttachedItemTestFactory.createBescheid());
 
 			validateBescheidItem();
 
-			verify(attachedItemService).getBescheidItem(BescheidItemTestFactory.ID);
+			verify(attachedItemService).getBescheidItem(AttachedItemTestFactory.ID);
 		}
 
 		@Test
@@ -215,20 +214,20 @@ class DocumentServiceTest {
 		@Test
 		void shouldNotThrowExceptionIfNotDraft() {
 			when(attachedItemService.getBescheidItem(any())).thenReturn(
-					BescheidItemTestFactory.createBuilder().bescheidData(Map.of(BescheidItem.FIELD_STATUS, "not-draft")).build());
+					AttachedItemTestFactory.createBescheidBuilder().clearItem().itemEntry(Bescheid.FIELD_STATUS, "not-draft").build());
 
 			assertThrows(TechnicalException.class, this::validateBescheidItem);
 		}
 
 		@Test
 		void shouldValidateBescheidItem() {
-			when(attachedItemService.getBescheidItem(any())).thenReturn(BescheidItemTestFactory.create());
+			when(attachedItemService.getBescheidItem(any())).thenReturn(AttachedItemTestFactory.createBescheid());
 
 			assertDoesNotThrow(this::validateBescheidItem);
 		}
 
 		void validateBescheidItem() {
-			service.validateBescheidItem(BescheidItemTestFactory.ID);
+			service.validateBescheidItem(AttachedItemTestFactory.ID);
 		}
 	}
 
@@ -299,14 +298,14 @@ class DocumentServiceTest {
 		void shouldSetVorgangId() {
 			var attachedItem = buildAttachedItem();
 
-			assertThat(attachedItem).containsEntry(BescheidItem.PROPERTY_VORGANG_ID, CommandTestFactory.VORGANG_ID);
+			assertThat(attachedItem).containsEntry(AttachedItem.PROPERTY_VORGANG_ID, CommandTestFactory.VORGANG_ID);
 		}
 
 		@Test
 		void shouldSetClient() {
 			var attachedItem = buildAttachedItem();
 
-			assertThat(attachedItem).containsEntry(BescheidItem.PROPERTY_CLIENT,
+			assertThat(attachedItem).containsEntry(AttachedItem.PROPERTY_CLIENT,
 					BescheidCallContextAttachingInterceptor.BESCHEID_MANAGER_CLIENT_NAME);
 		}
 
@@ -314,14 +313,14 @@ class DocumentServiceTest {
 		void shouldSetItemName() {
 			var attachedItem = buildAttachedItem();
 
-			assertThat(attachedItem).containsEntry(BescheidItem.PROPERTY_ITEM_NAME, DocumentService.DOCUMENT_ITEM_NAME);
+			assertThat(attachedItem).containsEntry(AttachedItem.PROPERTY_ITEM_NAME, DocumentService.DOCUMENT_ITEM_NAME);
 		}
 
 		@Test
 		void shouldSetItem() {
 			var attachedItem = buildAttachedItem();
 
-			assertThat(attachedItem).containsEntry(BescheidItem.PROPERTY_ITEM, ITEM_MAP);
+			assertThat(attachedItem).containsEntry(AttachedItem.PROPERTY_ITEM, ITEM_MAP);
 		}
 
 		private Map<String, Object> buildAttachedItem() {
diff --git a/bescheid-manager/src/test/resources/SD_answer_without_text.xml b/bescheid-manager/src/test/resources/SD_answer_without_text.xml
new file mode 100644
index 0000000000000000000000000000000000000000..62f2d02636091f1b13e7ce9c05208096415be20f
--- /dev/null
+++ b/bescheid-manager/src/test/resources/SD_answer_without_text.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<root>
+   <SmartDocument Version="2.0">
+      <Fields>
+     
+      </Fields>
+   </SmartDocument>
+</root>
\ No newline at end of file
diff --git a/notification-manager/pom.xml b/notification-manager/pom.xml
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/vorgang-manager-base/pom.xml b/vorgang-manager-base/pom.xml
index 5191abd0045b2444ae50c6d14d504d0b13fd8b91..16aaa67122d0dbcbb8bb5a398e981fed2e1293ab 100644
--- a/vorgang-manager-base/pom.xml
+++ b/vorgang-manager-base/pom.xml
@@ -6,7 +6,7 @@
 	<parent>
 		<groupId>de.ozgcloud.common</groupId>
 		<artifactId>ozgcloud-common-parent</artifactId>
-		<version>4.0.1</version>
+		<version>4.1.0-SNAPSHOT</version>
 		<relativePath />
 	</parent>
 
diff --git a/vorgang-manager-command/pom.xml b/vorgang-manager-command/pom.xml
index 2f1a0e52ae4cf2090ae4ae388353898168204b01..ed489b6236cce36418c132be176d709394b0a1f8 100644
--- a/vorgang-manager-command/pom.xml
+++ b/vorgang-manager-command/pom.xml
@@ -4,7 +4,7 @@
 	<parent>
 		<groupId>de.ozgcloud.common</groupId>
 		<artifactId>ozgcloud-common-dependencies</artifactId>
-		<version>4.0.1</version>
+		<version>4.1.0-SNAPSHOT</version>
 		<relativePath/>
 	</parent>
 	
diff --git a/vorgang-manager-interface/pom.xml b/vorgang-manager-interface/pom.xml
index cfb2cc6e25d0c90eabc6ee17b9632e06a41ad9ca..ca299a6d8eb8f93ad3c36d8daadc1b94b267081a 100644
--- a/vorgang-manager-interface/pom.xml
+++ b/vorgang-manager-interface/pom.xml
@@ -30,7 +30,7 @@
 	<parent>
 		<groupId>de.ozgcloud.common</groupId>
 		<artifactId>ozgcloud-common-dependencies</artifactId>
-		<version>4.0.1</version>
+		<version>4.1.0-SNAPSHOT</version>
 		<relativePath/>
 	</parent>
 
diff --git a/vorgang-manager-interface/src/main/protobuf/vorgang.model.proto b/vorgang-manager-interface/src/main/protobuf/vorgang.model.proto
index 7719beb188b32fd0fdec649061e9844c5b7119e6..dc8cc1c5bc16b8277a61fd4b7741fc2fe921c924 100644
--- a/vorgang-manager-interface/src/main/protobuf/vorgang.model.proto
+++ b/vorgang-manager-interface/src/main/protobuf/vorgang.model.proto
@@ -138,6 +138,7 @@ message GrpcAntragsteller {
   string postfachId = 13 [deprecated = true];
 
   GrpcFormData otherData = 30;
+  string firmaName = 31;
 }
 
 message GrpcFormData {
diff --git a/vorgang-manager-server/pom.xml b/vorgang-manager-server/pom.xml
index c4a43800f8c8840b5f69e2f36ace711f45abee4c..a7eb857b2513f868d27f73a78a70284ab7b83e33 100644
--- a/vorgang-manager-server/pom.xml
+++ b/vorgang-manager-server/pom.xml
@@ -32,7 +32,7 @@
 	<parent>
 		<groupId>de.ozgcloud.common</groupId>
 		<artifactId>ozgcloud-common-parent</artifactId>
-		<version>4.0.1</version>
+		<version>4.1.0-SNAPSHOT</version>
 		<relativePath />
 	</parent>
 
@@ -80,7 +80,7 @@
 
 		<dependency>
 			<groupId>de.ozgcloud.nachrichten</groupId>
-			<artifactId>nachrichten-manager-postfach-interface</artifactId>
+			<artifactId>nachrichten-manager-server</artifactId>
 			<version>${nachrichten-manager.version}</version>
 		</dependency>
 		<dependency>
@@ -248,7 +248,14 @@
 		<!-- Test -->
 		<dependency>
 			<groupId>de.ozgcloud.nachrichten</groupId>
-			<artifactId>nachrichten-manager-postfach-interface</artifactId>
+			<artifactId>nachrichten-manager-server</artifactId>
+			<version>${project.version}</version>
+			<type>test-jar</type>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>de.ozgcloud.nachrichten</groupId>
+			<artifactId>nachrichten-manager-interface</artifactId>
 			<version>${project.version}</version>
 			<type>test-jar</type>
 			<scope>test</scope>
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/attached_item/GrpcVorgangAttachedItemService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/attached_item/GrpcVorgangAttachedItemService.java
index ba3e53ac5fcf412fa4b8b5a504cfe78651c06116..bd44ef4fce63620a80f042cb4a8e6f1c9f5eb5ea 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/attached_item/GrpcVorgangAttachedItemService.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/attached_item/GrpcVorgangAttachedItemService.java
@@ -53,7 +53,8 @@ public class GrpcVorgangAttachedItemService extends VorgangAttachedItemServiceIm
 
 		var vorgangAttachedItems = service.find(request.getVorgangId(), Optional.of(request.getClient()), Optional.of(request.getItemName()));
 
-		responseObserver.onNext(buildFindResponse(vorgangAttachedItems));
+		var value = buildFindResponse(vorgangAttachedItems);
+		responseObserver.onNext(value);
 		responseObserver.onCompleted();
 	}
 
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/PersistPostfachNachrichtByCommandService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/PersistPostfachNachrichtByCommandService.java
index 63aee3c41f4aaa594572b35da58cd5270575336e..82bebdd9762ee1a3a698a4a49b3aae60ef7d4e7e 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/PersistPostfachNachrichtByCommandService.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/PersistPostfachNachrichtByCommandService.java
@@ -50,8 +50,6 @@ import de.ozgcloud.nachrichten.postfach.AttachmentFile;
 import de.ozgcloud.nachrichten.postfach.PersistPostfachNachrichtService;
 import de.ozgcloud.nachrichten.postfach.PostfachAddress;
 import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
-import de.ozgcloud.nachrichten.postfach.PostfachNachricht.Direction;
-import de.ozgcloud.nachrichten.postfach.PostfachNachricht.ReplyOption;
 import de.ozgcloud.nachrichten.postfach.StringBasedIdentifier;
 import de.ozgcloud.vorgang.attached_item.VorgangAttachedItem;
 import de.ozgcloud.vorgang.attached_item.VorgangAttachedItemMapper;
@@ -67,7 +65,7 @@ import lombok.extern.log4j.Log4j2;
  * @deprecated Temporally replacement for using GRPC Api by MailService
  */
 @Deprecated
-@Service
+@Service("persistPostfachNachrichtByCommandService")
 @Log4j2
 class PersistPostfachNachrichtByCommandService implements PersistPostfachNachrichtService {
 
@@ -258,21 +256,8 @@ class PersistPostfachNachrichtByCommandService implements PersistPostfachNachric
 	}
 
 	@Override
-	public Stream<PostfachNachricht> findRueckfragen(String postfachId) {
-		// Dummy Implementierung
-		// TODO OZG-5132 do real implementation
-		return Stream.of(PostfachNachricht.builder()
-				.attachments(Collections.emptyList())
-				.createdAt(ZonedDateTime.now())
-				.sentAt(ZonedDateTime.now())
-				.vorgangId("VORGANG_DUMMY_URI")
-				.createdBy("Klaus")
-				.direction(Direction.OUT)
-				.replyOption(ReplyOption.POSSIBLE)
-				.mailBody("Lorem ipsum dolres est")
-				.id(UUID.randomUUID().toString())
-				.subject("Test")
-				.build());
+	public Stream<PostfachNachricht> findRueckfragen(String servicekontoType, String postfachId) {
+		throw new UnsupportedOperationException("Not implemented.");
 	}
 
 	@Override
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/Antragsteller.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/Antragsteller.java
index 6eff50278dcb00f488850aecfe848d8105ce01a5..8d0cb86fd7edaee1461791fa10ad14be4444d64a 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/Antragsteller.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/Antragsteller.java
@@ -33,6 +33,7 @@ import lombok.Getter;
 public class Antragsteller {
 
 	private String anrede;
+	private String firmaName;
 	private String nachname;
 	private String vorname;
 	private String geburtsdatum;
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangHeaderService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangHeaderService.java
index 16ce17aab587901272f51788567cb3f365b9b909..4642e7c3fd2b68dec5f473c237ababc288747913 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangHeaderService.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangHeaderService.java
@@ -48,7 +48,7 @@ class VorgangHeaderService {
 	private SearchService searchService;
 
 	public Page<VorgangHeader> findAll(FindVorgangRequest request) {
-	if (nonNull(searchService) && nonNull(request.getSearchBy())) {
+		if (nonNull(searchService) && nonNull(request.getSearchBy())) {
 			return removeUnpermitted(searchService.find(request));
 		}
 		return removeUnpermitted(repository.findAll(request));
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerITCase.java
index e8c29b2f02cdc8d79a94b3102e8181e1832f5f63..198115bf224f689f5836f5737fb3dc757d42d20a 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerITCase.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerITCase.java
@@ -198,7 +198,7 @@ class BescheidEventListenerITCase {
 
 			await().atMost(60, TimeUnit.SECONDS).untilAsserted(() -> {
 				verify(bescheiTestEventListener).onBescheidSentEvent(bescheidSentEventCaptor.capture());
-				assertThat(loadBescheid(bescheidItem.getId()).getItem()).containsEntry(Bescheid.FIELD_STATUS, Bescheid.Status.SEND.name());
+				assertThat(loadBescheid(bescheidItem.getId()).getItem()).containsEntry(Bescheid.FIELD_STATUS, Bescheid.Status.SENT.name());
 			});
 		}
 
@@ -290,7 +290,7 @@ class BescheidEventListenerITCase {
 
 			await().atMost(60, TimeUnit.SECONDS).untilAsserted(() -> {
 				verify(bescheiTestEventListener).onBescheidSentEvent(bescheidSentEventCaptor.capture());
-				assertThat(loadBescheid(bescheidItem.getId()).getItem()).containsEntry(Bescheid.FIELD_STATUS, Bescheid.Status.SEND.name());
+				assertThat(loadBescheid(bescheidItem.getId()).getItem()).containsEntry(Bescheid.FIELD_STATUS, Bescheid.Status.SENT.name());
 			});
 		}
 
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/bescheid/BescheidGrpcServiceITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/bescheid/BescheidGrpcServiceITCase.java
index 8c7117a2f2d723922ea492a8cb1aa77f354ce1ad..4523bfa243ba39f5ef3fe4581cb2e883a39f4a36 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/bescheid/BescheidGrpcServiceITCase.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/bescheid/BescheidGrpcServiceITCase.java
@@ -24,35 +24,107 @@
 package de.ozgcloud.bescheid;
 
 import static org.assertj.core.api.Assertions.*;
+import static org.mockito.Mockito.*;
 
+import java.util.Map;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
+import org.mockito.Mock;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.data.mongodb.core.MongoOperations;
 import org.springframework.test.annotation.DirtiesContext;
 
 import de.ozgcloud.bescheid.BescheidServiceGrpc.BescheidServiceBlockingStub;
-import de.ozgcloud.common.test.ITCase;
+import de.ozgcloud.bescheid.attacheditem.AttachedItemService;
+import de.ozgcloud.bescheid.common.callcontext.CallContextUser;
+import de.ozgcloud.bescheid.common.callcontext.CurrentUserService;
+import de.ozgcloud.bescheid.common.callcontext.UserProfile;
+import de.ozgcloud.common.test.DataITCase;
 import de.ozgcloud.vorgang.VorgangManagerServerApplication;
+import de.ozgcloud.vorgang.attached_item.VorgangAttachedItem;
+import de.ozgcloud.vorgang.attached_item.VorgangAttachedItemTestFactory;
+import de.ozgcloud.vorgang.vorgang.Vorgang;
+import de.ozgcloud.vorgang.vorgang.VorgangTestFactory;
 import net.devh.boot.grpc.client.inject.GrpcClient;
 
 @SpringBootTest(classes = VorgangManagerServerApplication.class, properties = {
 		"grpc.server.inProcessName=test",
 		"grpc.server.port=-1",
 		"grpc.client.inProzess.address=in-process:test",
+		"grpc.client.vorgang-manager.address=in-process:test",
 })
-@ITCase
+@DataITCase
 @DirtiesContext
 class BescheidGrpcServiceITCase {
 
 	@GrpcClient("inProzess")
 	private BescheidServiceBlockingStub bescheidServiceBlockingStub;
 
-	@Test
-	void shouldReturnBescheidManagerConfig() {
-		var config = bescheidServiceBlockingStub.getConfig(GrpcBescheidManagerConfigRequest.newBuilder().build());
+	@Autowired
+	private MongoOperations mongoOperations;
+
+	@MockBean
+	private CurrentUserService currentUserService;
+	@Mock
+	private CallContextUser callContextUser;
+	@Mock
+	private UserProfile userProfile;
+
+	@Nested
+	class TestFindAll {
+
+		@BeforeEach
+		void init() {
+			mongoOperations.dropCollection(VorgangAttachedItem.COLLECTION_NAME);
+			mongoOperations.dropCollection(Vorgang.COLLECTION_NAME);
+			when(currentUserService.getUser()).thenReturn(callContextUser);
+			when(currentUserService.getUserProfile()).thenReturn(userProfile);
+		}
+
+		@Test
+		void shouldReturnSortedResult() {
+			var vorgangId = mongoOperations.save(VorgangTestFactory.createBuilder().id(null).build()).getId();
+			var bescheidItemFirstId = mongoOperations.save(createBescheidAttachedItem(vorgangId, "2022-10-01")).getId();
+			var bescheidItemLastId = mongoOperations.save(createBescheidAttachedItem(vorgangId, "2024-01-01")).getId();
+
+			var response = bescheidServiceBlockingStub.getAll(GrpcGetAllBescheidRequest.newBuilder().setVorgangId(vorgangId).build());
+
+			assertThat(response.getBescheidList()).hasSize(2);
+			assertThat(response.getBescheidList().get(0).getId()).isEqualTo(bescheidItemLastId);
+			assertThat(response.getBescheidList().get(1).getId()).isEqualTo(bescheidItemFirstId);
+		}
+
+		private VorgangAttachedItem createBescheidAttachedItem(String vorgangId, String beschiedenAm) {
+			return VorgangAttachedItemTestFactory.createBuilder()
+					.id(null)
+					.version(0L)
+					.vorgangId(vorgangId)
+					.itemName(AttachedItemService.BESCHEID_ITEM_NAME)
+					.client(BescheidCallContextAttachingInterceptor.BESCHEID_MANAGER_CLIENT_NAME)
+					.item(Map.of(
+							Bescheid.FIELD_STATUS, Bescheid.Status.DRAFT.name(),
+							Bescheid.FIELD_BESCHIEDEN_AM, beschiedenAm
+					))
+					.build();
+		}
+
+	}
+
+	@Nested
+	class TestGetConfig {
+
+		@Test
+		void shouldReturnBescheidManagerConfig() {
+			var config = bescheidServiceBlockingStub.getConfig(GrpcBescheidManagerConfigRequest.newBuilder().build());
 
-		assertThat(config.getVersion()).isNotEmpty();
-		assertThat(config.getJavaVersion()).isEqualTo(System.getProperty("java.version"));
-		assertThat(config.getFeatures().getCanCreateBescheidDocument()).isFalse();
+			assertThat(config.getVersion()).isNotEmpty();
+			assertThat(config.getJavaVersion()).isEqualTo(System.getProperty("java.version"));
+			assertThat(config.getFeatures().getCanCreateBescheidDocument()).isFalse();
+		}
 	}
 
 }
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/FindVorgangIteratorITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/FindVorgangIteratorITCase.java
new file mode 100644
index 0000000000000000000000000000000000000000..6364448d2c6449bd7726118475033fc9915448bd
--- /dev/null
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/FindVorgangIteratorITCase.java
@@ -0,0 +1,111 @@
+/*
+ * 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.nachrichten.postfach;
+
+import static org.assertj.core.api.Assertions.*;
+import static org.mockito.Mockito.*;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.IntStream;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mock;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.data.mongodb.core.MongoOperations;
+import org.springframework.test.annotation.DirtiesContext;
+
+import de.ozgcloud.common.test.DataITCase;
+import de.ozgcloud.vorgang.VorgangManagerServerApplication;
+import de.ozgcloud.vorgang.callcontext.CallContextUser;
+import de.ozgcloud.vorgang.callcontext.CurrentUserService;
+import de.ozgcloud.vorgang.servicekonto.PostfachAddressTestFactory;
+import de.ozgcloud.vorgang.servicekonto.ServiceKontoTestFactory;
+import de.ozgcloud.vorgang.vorgang.GrpcVorgangHeader;
+import de.ozgcloud.vorgang.vorgang.Vorgang;
+import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub;
+import de.ozgcloud.vorgang.vorgang.VorgangTestFactory;
+import net.devh.boot.grpc.client.inject.GrpcClient;
+
+@SpringBootTest(classes = { VorgangManagerServerApplication.class }, properties = {
+		"grpc.server.inProcessName=test",
+		"grpc.client.inProcess.address=in-process:test"
+})
+@DirtiesContext
+@DataITCase
+class FindVorgangIteratorITCase {
+
+	@GrpcClient("inProcess")
+	private VorgangServiceBlockingStub vorgangServiceStub;
+
+	@Autowired
+	private MongoOperations mongoOperations;
+
+	@MockBean
+	private CurrentUserService currentUserService;
+	@Mock
+	private CallContextUser callContextUser;
+
+	private FindVorgangIterator findVorgangIterator;
+
+	@BeforeEach
+	void init() {
+		mongoOperations.dropCollection(Vorgang.COLLECTION_NAME);
+		when(currentUserService.getUser()).thenReturn(callContextUser);
+		findVorgangIterator = new FindVorgangIterator(vorgangServiceStub, ServiceKontoTestFactory.TYPE,
+				PostfachAddressTestFactory.STRING_BASED_IDENTIFIER_POSTFACH_ID_VALUE);
+	}
+
+	@Test
+	void shouldFindVorgangs() {
+		var vorgang = mongoOperations.save(VorgangTestFactory.createBuilder().id(null).build());
+
+		var hasNext = findVorgangIterator.hasNext();
+		assertThat(hasNext).isTrue();
+
+		var result = findVorgangIterator.next();
+		assertThat(result.getId()).isEqualTo(vorgang.getId());
+	}
+
+	@Test
+	void shouldLoadAllVorgangs() {
+		IntStream.range(0, FindVorgangIterator.LIMIT + 1).forEach(i -> mongoOperations.save(VorgangTestFactory.createBuilder().id(null).build()));
+
+		var result = loadAllVorgangs();
+
+		assertThat(result).hasSize(FindVorgangIterator.LIMIT + 1);
+	}
+
+	private List<GrpcVorgangHeader> loadAllVorgangs() {
+		var result = new ArrayList<GrpcVorgangHeader>();
+		while (findVorgangIterator.hasNext()) {
+			result.add(findVorgangIterator.next());
+		}
+		return result;
+	}
+
+}
\ No newline at end of file
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImplITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImplITCase.java
new file mode 100644
index 0000000000000000000000000000000000000000..81592955e5001a335b2984ac65cab48c325b3507
--- /dev/null
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImplITCase.java
@@ -0,0 +1,117 @@
+/*
+ * 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.nachrichten.postfach;
+
+import static org.assertj.core.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.*;
+import static org.mockito.Mockito.*;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mock;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.util.ReflectionTestUtils;
+
+import de.ozgcloud.common.test.ITCase;
+import de.ozgcloud.vorgang.VorgangManagerServerApplication;
+import de.ozgcloud.vorgang.attached_item.GrpcVorgangAttachedItemTestFactory;
+import de.ozgcloud.vorgang.common.GrpcObject;
+import de.ozgcloud.vorgang.common.GrpcProperty;
+import de.ozgcloud.vorgang.servicekonto.PostfachAddressTestFactory;
+import de.ozgcloud.vorgang.servicekonto.ServiceKontoTestFactory;
+import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangResponse;
+import de.ozgcloud.vorgang.vorgang.GrpcVorgangHeader;
+import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub;
+import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcFindVorgangAttachedItemResponse;
+import de.ozgcloud.vorgang.vorgangAttachedItem.VorgangAttachedItemServiceGrpc.VorgangAttachedItemServiceBlockingStub;
+
+@SpringBootTest(classes = { VorgangManagerServerApplication.class })
+@ITCase
+class PersistPostfachNachrichtServiceImplITCase {
+
+	private static final String MESSAGE_ID = "message-id";
+	@Autowired
+	private PersistPostfachNachrichtServiceImpl service;
+	@Autowired
+	private VorgangRemoteService vorgangRemoteService;
+	@Autowired
+	private AttachedItemRemoteService attachedItemRemoteService;
+
+	private AtomicInteger counter = new AtomicInteger(1);
+	@Mock
+	private VorgangServiceBlockingStub vorgangServiceStub;
+	@Mock
+	private VorgangAttachedItemServiceBlockingStub vorgangAttachedItemServiceStub;
+
+	@BeforeEach
+	void init() {
+		when(vorgangServiceStub.withInterceptors(any())).thenReturn(vorgangServiceStub);
+		ReflectionTestUtils.setField(vorgangRemoteService, "vorgangServiceStub", vorgangServiceStub);
+
+		when(vorgangAttachedItemServiceStub.withInterceptors(any())).thenReturn(vorgangAttachedItemServiceStub);
+		ReflectionTestUtils.setField(attachedItemRemoteService, "vorgangAttachedItemServiceStub", vorgangAttachedItemServiceStub);
+
+		mockFindVorgang();
+		mockFindAttachedItems();
+	}
+
+	@Test
+	void shouldFindRuckfragen() {
+		var rueckfragen = service.findRueckfragen(ServiceKontoTestFactory.TYPE, PostfachAddressTestFactory.STRING_BASED_IDENTIFIER_POSTFACH_ID_VALUE);
+
+		assertThat(rueckfragen).hasSize(1).first().extracting(PostfachNachricht::getId).isEqualTo(MESSAGE_ID);
+	}
+
+	private void mockFindVorgang() {
+		when(vorgangServiceStub.findVorgang(any())).thenAnswer(invocation -> {
+			if (counter.getAndDecrement() == 0) {
+				return GrpcFindVorgangResponse.newBuilder().build();
+			}
+			return GrpcFindVorgangResponse.newBuilder().setTotal(1).addVorgang(GrpcVorgangHeader.newBuilder().build()).build();
+		});
+	}
+
+	private void mockFindAttachedItems() {
+		var attachedItemResponse = GrpcFindVorgangAttachedItemResponse.newBuilder()
+				.addVorgangAttachedItems(GrpcVorgangAttachedItemTestFactory.create())
+				.addVorgangAttachedItems(GrpcVorgangAttachedItemTestFactory.createBuilder().setItem(buildGrpcObject())).build();
+		when(vorgangAttachedItemServiceStub.find(any())).thenReturn(attachedItemResponse);
+	}
+
+	private GrpcObject buildGrpcObject() {
+		return GrpcObject.newBuilder()
+				.addProperty(GrpcProperty.newBuilder()
+						.setName(PostfachNachricht.FIELD_REPLY_OPTION).addValue(PostfachNachricht.ReplyOption.POSSIBLE.name()).build())
+				.addProperty(GrpcProperty.newBuilder()
+						.setName(PostfachNachricht.FIELD_CREATED_AT).addValue(PostfachNachrichtTestFactory.CREATED_AT_STR))
+				.addProperty(GrpcProperty.newBuilder()
+						.setName(PostfachNachricht.FIELD_DIRECTION).addValue(PostfachNachrichtTestFactory.DIRECTION.name()))
+				.addProperty(GrpcProperty.newBuilder()
+						.setName(PostfachNachricht.FIELD_ID).addValue(MESSAGE_ID).build())
+				.build();
+	}
+}
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachMailITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachMailITCase.java
index 8db9ce23a49f33ee2b2a058eb33906fd56882813..3c854a2b30507856ca155319bf708256f53f681a 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachMailITCase.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachMailITCase.java
@@ -231,7 +231,8 @@ class PostfachMailITCase {
 		}
 
 		private GrpcSendPostfachMailRequest buildSendPostfachMailRequestWithoutAttachments() {
-			var grpcPostfachMail = GrpcPostfachMailTestFactory.createBuilder().clearId().clearAttachment().clearCreatedAt().clearDirection().build();
+			var grpcPostfachMail = GrpcPostfachMailTestFactory.createBuilder().clearId().clearAttachment().clearCreatedAt().clearDirection()
+					.setVorgangId(MessageTestFactory.VORGANG_ID).build();
 			return GrpcSendPostfachMailRequestTestFactory.createBuilder().setMail(grpcPostfachMail).build();
 		}
 
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/attached_item/GrpcVorgangAttachedItemTestFactory.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/attached_item/GrpcVorgangAttachedItemTestFactory.java
index 764b878dd36d4c900547277227d05eb8d49b1329..712d28ebb0f6a91f18f27fc6d7514323509ced74 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/attached_item/GrpcVorgangAttachedItemTestFactory.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/attached_item/GrpcVorgangAttachedItemTestFactory.java
@@ -33,11 +33,11 @@ public class GrpcVorgangAttachedItemTestFactory {
 	public static final GrpcObject OBJECT = GrpcObject.newBuilder()
 			.addProperty(GrpcProperty.newBuilder().setName(PROPERTY_NAME).addValue(PROPERTY_NAME_VALUE).build()).build();
 
-	static GrpcVorgangAttachedItem create() {
+	public static GrpcVorgangAttachedItem create() {
 		return createBuilder().build();
 	}
 
-	static GrpcVorgangAttachedItem.Builder createBuilder() {
+	public static GrpcVorgangAttachedItem.Builder createBuilder() {
 		return GrpcVorgangAttachedItem.newBuilder()
 				.setId(VorgangAttachedItemTestFactory.ID)
 				.setClient(VorgangAttachedItemTestFactory.CLIENT)
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandServiceITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandServiceITCase.java
index e067a39f8f711cf6ada2b9801e93fde04cf1ae87..cc936fbc36384816f4eddfc9cc82c9ef66a8d7f9 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandServiceITCase.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandServiceITCase.java
@@ -99,7 +99,7 @@ class CommandServiceITCase {
 					.build();
 
 			Command persistedCommand = commandService.createCommand(request);
-			verify(commandService, timeout(500)).setCommandFinished(eq(persistedCommand.getId()), any());
+			verify(commandService, timeout(60000)).setCommandFinished(eq(persistedCommand.getId()), any());
 
 			Optional<Command> commandOpt = commandService.findCommand(persistedCommand.getId());
 			assertThat(commandOpt).isPresent();
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/AntragstellerTestFactory.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/AntragstellerTestFactory.java
index d21e22dc459fe019b62febb4a21352e6aed6f44c..86c84e32d5547a2341f4e04e9077d4ddf51c182b 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/AntragstellerTestFactory.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/AntragstellerTestFactory.java
@@ -32,6 +32,7 @@ public class AntragstellerTestFactory {
 
 	public static final String ANREDE = "Herr";
 	public static final String NACHNAME = LoremIpsum.getInstance().getLastName();
+	public static final String FIRMA_NAME = "Firma X";
 	public static final String VORNAME = LoremIpsum.getInstance().getFirstName();
 	public static final String GEBURTSDATUM = "1995-01-01";
 	public static final String GEBURTSORT = LoremIpsum.getInstance().getCountry();
@@ -56,6 +57,7 @@ public class AntragstellerTestFactory {
 	public static Antragsteller.AntragstellerBuilder createBuilder() {
 		return Antragsteller.builder()
 				.anrede(ANREDE)
+				.firmaName(FIRMA_NAME)
 				.nachname(NACHNAME)
 				.vorname(VORNAME)
 				.geburtsdatum(GEBURTSDATUM)
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/GrpcAntragstellerTestFactory.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/GrpcAntragstellerTestFactory.java
index 7285adac2106b40a5168f40f2182361c0796eb05..7a077b811aa2dd403138f458f7b6bad6970dadd3 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/GrpcAntragstellerTestFactory.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/GrpcAntragstellerTestFactory.java
@@ -52,6 +52,7 @@ public class GrpcAntragstellerTestFactory {
 	public static GrpcAntragsteller.Builder createBuilder() {
 		return GrpcAntragsteller.newBuilder()
 				.setAnrede(ANREDE)
+				.setFirmaName(AntragstellerTestFactory.FIRMA_NAME)
 				.setGeburtsdatum(GEBURTSDATUM)
 				.setNachname(NACHNAME)
 				.setVorname(VORNAME)
diff --git a/vorgang-manager-utils/pom.xml b/vorgang-manager-utils/pom.xml
index 4a2153ccae3ddc0da1688b870b947b69824ba036..24b78b3a4bf638fbc7ba91582fe1fed92a0a789f 100644
--- a/vorgang-manager-utils/pom.xml
+++ b/vorgang-manager-utils/pom.xml
@@ -30,7 +30,7 @@
 	<parent>
 		<groupId>de.ozgcloud.common</groupId>
 		<artifactId>ozgcloud-common-dependencies</artifactId>
-		<version>4.0.1</version>
+		<version>4.1.0-SNAPSHOT</version>
 		<relativePath/>
 	</parent>