diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/common/command/grpc/OzgCloudCommandMapper.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/common/command/grpc/OzgCloudCommandMapper.java
index c33ed1a91d16940f522e7113d25e1a8bd74679c8..e041d593ab39fbf8f7000c23fcec0ec790434633 100644
--- a/api-lib-core/src/main/java/de/ozgcloud/apilib/common/command/grpc/OzgCloudCommandMapper.java
+++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/common/command/grpc/OzgCloudCommandMapper.java
@@ -15,6 +15,11 @@ import de.ozgcloud.vorgang.grpc.command.GrpcCreateCommandRequest;
 @Mapper(uses = GrpcObjectMapper.class)
 public interface OzgCloudCommandMapper {
 
+	@Mapping(target = "redirectRequestOrBuilder", ignore = true)
+	@Mapping(target = "orderStringBytes", ignore = true)
+	@Mapping(target = "defaultInstanceForType", ignore = true)
+	@Mapping(target = "callContextOrBuilder", ignore = true)
+	@Mapping(target = "bodyObjOrBuilder", ignore = true)
 	@Mapping(target = "mergeFrom", ignore = true)
 	@Mapping(target = "clearField", ignore = true)
 	@Mapping(target = "clearOneof", ignore = true)
@@ -24,7 +29,6 @@ public interface OzgCloudCommandMapper {
 	@Mapping(target = "mergeUnknownFields", ignore = true)
 	@Mapping(target = "removeBody", ignore = true)
 	@Mapping(target = "callContext", ignore = true)
-
 	@Mapping(target = "redirectRequest", ignore = true)
 	@Mapping(target = "relationIdBytes", ignore = true)
 	@Mapping(target = "unknownFields", ignore = true)
diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/file/grpc/OzgCloudFileMapper.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/file/grpc/OzgCloudFileMapper.java
index f07e2d2349c972700157e47d43b70559c6e7d9de..f2a61f8b63fb6d28aafd3c0ac3f7cc71e1f06372 100644
--- a/api-lib-core/src/main/java/de/ozgcloud/apilib/file/grpc/OzgCloudFileMapper.java
+++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/file/grpc/OzgCloudFileMapper.java
@@ -1,15 +1,22 @@
 package de.ozgcloud.apilib.file.grpc;
 
 import org.mapstruct.Mapper;
+import org.mapstruct.NullValueCheckStrategy;
+import org.mapstruct.ReportingPolicy;
 
 import de.ozgcloud.apilib.file.OzgCloudFile;
-import de.ozgcloud.apilib.file.OzgCloudFileId;
+import de.ozgcloud.apilib.vorgang.OzgCloudFileIdMapper;
 import de.ozgcloud.vorgang.grpc.file.GrpcOzgFile;
+import de.ozgcloud.vorgang.vorgang.GrpcIncomingFile;
 
-@Mapper
+@Mapper(uses = { OzgCloudFileIdMapper.class },
+	unmappedTargetPolicy = ReportingPolicy.WARN,
+	nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS
+)
 public interface OzgCloudFileMapper {
 
 	OzgCloudFile fromGrpc(GrpcOzgFile grpcFile);
 
-	OzgCloudFileId toOzgCloudFileId(String id);
+	OzgCloudFile fromIncomingFile(GrpcIncomingFile grpcFile);
+
 }
diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudAntragsteller.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudAntragsteller.java
index bd3fbb49799a0a98829077274307a9f8ea05bc3c..0cd01f84422b08576d3cd222307532be6039d289 100644
--- a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudAntragsteller.java
+++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudAntragsteller.java
@@ -1,5 +1,7 @@
 package de.ozgcloud.apilib.vorgang;
 
+import java.util.List;
+
 import lombok.Builder;
 import lombok.Getter;
 
@@ -20,7 +22,7 @@ public class OzgCloudAntragsteller {
 	private String geburtsort;
 	/** Name of birth */
 	private String geburtsname;
-
+	private String firmaName;
 	/** Street */
 	private String strasse;
 	/** House Number */
@@ -34,4 +36,5 @@ public class OzgCloudAntragsteller {
 	/** Telephone number */
 	private String telefon;
 
+	private List<OzgCloudFormDataEntry> otherData;
 }
diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudFileIdMapper.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudFileIdMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..5d9b14c296d58273e6f73679c60ff5ed040d64ef
--- /dev/null
+++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudFileIdMapper.java
@@ -0,0 +1,40 @@
+/*
+ * 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.apilib.vorgang;
+
+import java.util.Optional;
+
+import org.apache.commons.lang3.StringUtils;
+import org.mapstruct.Mapper;
+
+import de.ozgcloud.apilib.file.OzgCloudFileId;
+
+@Mapper
+public interface OzgCloudFileIdMapper {
+
+	default OzgCloudFileId toFileId(String fileId) {
+		return Optional.ofNullable(fileId).map(StringUtils::trimToNull).map(OzgCloudFileId::from).orElse(null);
+	}
+}
diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudPostfachAddress.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudPostfachAddress.java
index caf386b63ef83c01c5aac3e80d66075809fc5bf0..65bd91a3690789676e19d90d6487b7d9ac4de992 100644
--- a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudPostfachAddress.java
+++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudPostfachAddress.java
@@ -4,12 +4,14 @@ import java.util.Collection;
 
 import lombok.Builder;
 import lombok.Getter;
+import lombok.Singular;
 
 @Getter
 @Builder
 public class OzgCloudPostfachAddress {
 
 	private String version;
-
-	private Collection<OzgCloudPostfachAddressIdentifier> identifier;
+	private int type;
+	@Singular
+	private Collection<OzgCloudPostfachAddressIdentifier> identifiers;
 }
diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudServiceKonto.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudServiceKonto.java
index 6dff9e12ddeb005dd2ecf629748bff96308523f0..d83638ae44c40e2d85fd9e4a4b6ed91124db7832 100644
--- a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudServiceKonto.java
+++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudServiceKonto.java
@@ -10,4 +10,6 @@ public class OzgCloudServiceKonto {
 	private OzgCloudServiceKontoType type;
 
 	private OzgCloudPostfachAddress address;
+
+	private OzgCloudTrustLevel trustLevel;
 }
diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudServiceKontoType.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudServiceKontoType.java
index f6ba3c4deb3a70240a269e96139ad96bdbf5cc8c..e16a31bce52e5a9f6b9678051eae7f85600cac38 100644
--- a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudServiceKontoType.java
+++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudServiceKontoType.java
@@ -1,5 +1,7 @@
 package de.ozgcloud.apilib.vorgang;
 
+import org.mapstruct.ObjectFactory;
+
 import de.ozgcloud.common.datatype.StringBasedValue;
 
 public class OzgCloudServiceKontoType extends StringBasedValue {
@@ -8,6 +10,7 @@ public class OzgCloudServiceKontoType extends StringBasedValue {
 		super(type);
 	}
 
+	@ObjectFactory
 	public static OzgCloudServiceKontoType from(String type) {
 		return new OzgCloudServiceKontoType(type);
 	}
diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudTrustLevel.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudTrustLevel.java
new file mode 100644
index 0000000000000000000000000000000000000000..dd0c1a4f477b4449646f4aed4bb60e4b3df26ff9
--- /dev/null
+++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudTrustLevel.java
@@ -0,0 +1,41 @@
+/*
+ * 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.apilib.vorgang;
+
+import org.mapstruct.ObjectFactory;
+
+import de.ozgcloud.common.datatype.StringBasedValue;
+
+public class OzgCloudTrustLevel extends StringBasedValue {
+
+	OzgCloudTrustLevel(String trustLevel) {
+		super(trustLevel);
+	}
+
+	@ObjectFactory
+	public static OzgCloudTrustLevel from(String trustLevel) {
+		return new OzgCloudTrustLevel(trustLevel);
+	}
+}
diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudUserIdMapper.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudUserIdMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..3b89ecee3ae677f3705a120dbb815d354e86aade
--- /dev/null
+++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudUserIdMapper.java
@@ -0,0 +1,41 @@
+/*
+ * 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.apilib.vorgang;
+
+import java.util.Optional;
+
+import org.apache.commons.lang3.StringUtils;
+import org.mapstruct.Mapper;
+
+import de.ozgcloud.apilib.user.OzgCloudUserId;
+
+@Mapper
+public interface OzgCloudUserIdMapper {
+
+	default OzgCloudUserId toUserId(String userId) {
+		return Optional.ofNullable(userId).map(StringUtils::trimToNull).map(OzgCloudUserId::from).orElse(null);
+	}
+
+}
diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangStatusMapper.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangStatusMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..8f07b1d57e1d46a1af3bb9eb37ed4400b672926f
--- /dev/null
+++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangStatusMapper.java
@@ -0,0 +1,39 @@
+/*
+ * 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.apilib.vorgang;
+
+import java.util.Optional;
+
+import org.apache.commons.lang3.StringUtils;
+import org.mapstruct.Mapper;
+
+@Mapper
+public interface OzgCloudVorgangStatusMapper {
+
+	default OzgCloudVorgangStatus toVorgangStatus(String status) {
+		return Optional.ofNullable(status).map(StringUtils::trimToNull).map(OzgCloudVorgangStatus::from).orElse(null);
+	}
+
+}
diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudEingangMapper.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudEingangMapper.java
index fb45e1936bee0271ebe3e2cf849a187219b4c6df..6a819018ee2728c92bce1f6b76eb95777b25fa2b 100644
--- a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudEingangMapper.java
+++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudEingangMapper.java
@@ -3,9 +3,13 @@ package de.ozgcloud.apilib.vorgang.grpc;
 import java.util.List;
 import java.util.stream.Stream;
 
+import org.mapstruct.CollectionMappingStrategy;
 import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
+import org.mapstruct.NullValueCheckStrategy;
+import org.mapstruct.ReportingPolicy;
 
+import de.ozgcloud.apilib.file.grpc.OzgCloudFileMapper;
 import de.ozgcloud.apilib.vorgang.OzgCloudEingang;
 import de.ozgcloud.apilib.vorgang.OzgCloudFormDataEntry;
 import de.ozgcloud.apilib.vorgang.OzgCloudFormField;
@@ -15,14 +19,19 @@ import de.ozgcloud.vorgang.vorgang.GrpcFormData;
 import de.ozgcloud.vorgang.vorgang.GrpcFormField;
 import de.ozgcloud.vorgang.vorgang.GrpcSubForm;
 
-@Mapper
+@Mapper(uses = { OzgCloudFileGroupMapper.class, OzgCloudFileMapper.class },
+	collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED,
+	unmappedTargetPolicy = ReportingPolicy.WARN,
+	nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS
+)
 public interface OzgCloudEingangMapper {
 
-	// TODO map files
-	@Mapping(target = "attachments", ignore = true)
-	@Mapping(target = "representations", ignore = true)
+	@Mapping(target = "representation", ignore = true)
+	@Mapping(target = "attachment", ignore = true)
 	@Mapping(target = "formDataEntrys", source = "formData")
 	@Mapping(target = "zustaendigeStelle.organisationsEinheitId", source = "zustaendigeStelle.organisationseinheitenId")
+	@Mapping(target = "attachments", source = "attachmentsList")
+	@Mapping(target = "representations", source = "representationsList")
 	OzgCloudEingang fromGrpc(GrpcEingang eingang);
 
 	default List<OzgCloudFormDataEntry> mapFormData(GrpcFormData value) {
@@ -45,4 +54,5 @@ public interface OzgCloudEingangMapper {
 
 		return Stream.concat(fields, subForms).toList();
 	}
+
 }
diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudFileGroupMapper.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudFileGroupMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..b6283296cc94dc34b343f43152de50cdb7fc1bca
--- /dev/null
+++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudFileGroupMapper.java
@@ -0,0 +1,48 @@
+/*
+ * 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.apilib.vorgang.grpc;
+
+import org.mapstruct.CollectionMappingStrategy;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.NullValueCheckStrategy;
+import org.mapstruct.ReportingPolicy;
+
+import de.ozgcloud.apilib.file.OzgCloudFileGroup;
+import de.ozgcloud.apilib.file.grpc.OzgCloudFileMapper;
+import de.ozgcloud.vorgang.vorgang.GrpcIncomingFileGroup;
+
+@Mapper(uses = { OzgCloudFileMapper.class },
+	collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED,
+	unmappedTargetPolicy = ReportingPolicy.WARN,
+	nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS
+)
+public interface OzgCloudFileGroupMapper {
+
+	@Mapping(target = "file", ignore = true)
+	@Mapping(target = "files", source = "filesList")
+	OzgCloudFileGroup fromIncomingFileGroup(GrpcIncomingFileGroup fileGroup);
+
+}
diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudServiceKontoMapper.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudServiceKontoMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..95c3906b7f7d2fc7a0b63f732060d315a44b8782
--- /dev/null
+++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudServiceKontoMapper.java
@@ -0,0 +1,95 @@
+/*
+ * 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.apilib.vorgang.grpc;
+
+import java.util.List;
+import java.util.Optional;
+
+import org.apache.commons.lang3.StringUtils;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.NullValueCheckStrategy;
+import org.mapstruct.NullValuePropertyMappingStrategy;
+
+import de.ozgcloud.apilib.vorgang.OzgCloudPostfachAddress;
+import de.ozgcloud.apilib.vorgang.OzgCloudPostfachAddressIdentifier;
+import de.ozgcloud.apilib.vorgang.OzgCloudServiceKonto;
+import de.ozgcloud.apilib.vorgang.OzgCloudServiceKontoType;
+import de.ozgcloud.apilib.vorgang.OzgCloudTrustLevel;
+import de.ozgcloud.vorgang.common.GrpcObject;
+import de.ozgcloud.vorgang.common.GrpcProperty;
+import de.ozgcloud.vorgang.vorgang.GrpcPostfachAddress;
+import de.ozgcloud.vorgang.vorgang.GrpcServiceKonto;
+import de.ozgcloud.vorgang.vorgang.GrpcVorgangHead;
+import lombok.extern.log4j.Log4j2;
+
+@Log4j2
+@Mapper(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE, nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
+public abstract class OzgCloudServiceKontoMapper {
+
+	OzgCloudServiceKonto getServiceKonto(GrpcVorgangHead header) {
+		return header.hasServiceKonto() ? fromServiceKonto(header.getServiceKonto()) : null;
+	}
+
+	@Mapping(target = "address", source = "postfachAddressesList")
+	abstract OzgCloudServiceKonto fromServiceKonto(GrpcServiceKonto serviceKonto);
+
+	OzgCloudPostfachAddress fromPostfachAddresses(List<GrpcPostfachAddress> postfachAddresses) {
+		if (postfachAddresses.isEmpty()) {
+			return null;
+		}
+		if (postfachAddresses.size() > 1) {
+			LOG.error("More than one postfach address found. Using the first one.");
+		}
+		return fromPostfachAddress(postfachAddresses.getFirst());
+	}
+
+	@Mapping(target = "identifier", ignore = true)
+	@Mapping(target = "identifiers", source = "identifier")
+	abstract OzgCloudPostfachAddress fromPostfachAddress(GrpcPostfachAddress postfachAddress);
+
+	List<OzgCloudPostfachAddressIdentifier> fromPostfachAddressIdentifier(GrpcObject identifier) {
+		if (!identifier.getSubObjectList().isEmpty()) {
+			LOG.error("Unexpected subObjects found in identifier. Ignoring them.");
+		}
+		return identifier.getPropertyList().stream().map(this::fromProperty).toList();
+	}
+
+	OzgCloudPostfachAddressIdentifier fromProperty(GrpcProperty grpcProperty) {
+		return OzgCloudPostfachAddressIdentifier.builder()
+			.name(grpcProperty.getName())
+			.value(grpcProperty.getValueList().getFirst())
+			.build();
+	}
+
+	OzgCloudServiceKontoType toOzgCloudServiceKontoType(String type) {
+		return Optional.ofNullable(type).map(StringUtils::trimToNull).map(OzgCloudServiceKontoType::from).orElse(null);
+	}
+
+	OzgCloudTrustLevel toOzgCloudTrustLevel(String trustLevel) {
+		return Optional.ofNullable(trustLevel).map(StringUtils::trimToNull).map(OzgCloudTrustLevel::from).orElse(null);
+	}
+
+}
diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangMapper.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangMapper.java
index 6c3b9857bee531d344f2103b5efc16936e604522..b606499b6dd4ccccc6071c2dca64357b3fec1995 100644
--- a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangMapper.java
+++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangMapper.java
@@ -1,18 +1,21 @@
 package de.ozgcloud.apilib.vorgang.grpc;
 
-import java.util.Optional;
-
 import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
+import org.mapstruct.NullValueCheckStrategy;
+import org.mapstruct.NullValuePropertyMappingStrategy;
+import org.mapstruct.factory.Mappers;
 
-import de.ozgcloud.apilib.user.OzgCloudUserId;
-import de.ozgcloud.apilib.vorgang.OzgCloudServiceKontoType;
+import de.ozgcloud.apilib.vorgang.OzgCloudServiceKonto;
+import de.ozgcloud.apilib.vorgang.OzgCloudUserIdMapper;
 import de.ozgcloud.apilib.vorgang.OzgCloudVorgang;
 import de.ozgcloud.apilib.vorgang.OzgCloudVorgangIdMapper;
-import de.ozgcloud.apilib.vorgang.OzgCloudVorgangStatus;
+import de.ozgcloud.apilib.vorgang.OzgCloudVorgangStatusMapper;
 import de.ozgcloud.vorgang.vorgang.GrpcVorgangWithEingang;
 
-@Mapper(uses = { OzgCloudEingangMapper.class, OzgCloudVorgangIdMapper.class })
+@Mapper(uses = { OzgCloudEingangMapper.class, OzgCloudVorgangIdMapper.class, OzgCloudUserIdMapper.class, OzgCloudVorgangStatusMapper.class }, //
+	nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE,
+	nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
 public interface OzgCloudVorgangMapper {
 
 	@Mapping(target = "eingangs", ignore = true)
@@ -22,17 +25,11 @@ public interface OzgCloudVorgangMapper {
 	@Mapping(target = "header.assignedTo", source = "assignedTo")
 	@Mapping(target = "header.createdAt", source = "createdAt")
 	@Mapping(target = "header.status", source = "status")
-	OzgCloudVorgang fromGrpc(GrpcVorgangWithEingang response);
-
-	default OzgCloudServiceKontoType toOzgCloudServiceKontoType(String type) {
-		return Optional.ofNullable(type).map(OzgCloudServiceKontoType::from).orElse(null);
-	}
-
-	default OzgCloudUserId toUserId(String userId) {
-		return Optional.ofNullable(userId).map(OzgCloudUserId::from).orElse(null);
-	}
+	@Mapping(target = "header.serviceKonto", expression = "java(getServiceKonto(grpcVorgangWithEingang))")
+	OzgCloudVorgang fromGrpc(GrpcVorgangWithEingang grpcVorgang);
 
-	default OzgCloudVorgangStatus toVorgangId(String status) {
-		return Optional.ofNullable(status).map(OzgCloudVorgangStatus::from).orElse(null);
+	default OzgCloudServiceKonto getServiceKonto(GrpcVorgangWithEingang grpcVorgang) {
+		var mapper = Mappers.getMapper(OzgCloudServiceKontoMapper.class);
+		return mapper.getServiceKonto(grpcVorgang.getHeader());
 	}
 }
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/file/OzgCloudFileTestFactory.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/file/OzgCloudFileTestFactory.java
index 04b41dc2577759935c667bbbc9e11928f846e135..9f5c7f920648a0e690b485a46418b34fab26e977 100644
--- a/api-lib-core/src/test/java/de/ozgcloud/apilib/file/OzgCloudFileTestFactory.java
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/file/OzgCloudFileTestFactory.java
@@ -4,7 +4,8 @@ import java.util.UUID;
 
 public class OzgCloudFileTestFactory {
 
-	public static final OzgCloudFileId ID = OzgCloudFileId.from(UUID.randomUUID().toString());
+	public static final String ID_STR = UUID.randomUUID().toString();
+	public static final OzgCloudFileId ID = OzgCloudFileId.from(ID_STR);
 	public static final String NAME = "testfile.pdf";
 	public static final String CONTENT_TYPE = "application/pdf";
 	public static final long SIZE = 1024;
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/file/grpc/GrpcOzgCloudFileServiceTest.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/file/grpc/GrpcOzgCloudFileServiceTest.java
index 8a648e34e975be9adb94b28ec9ae85848228e5f4..9a38e82b13193c62cb92fad6dd25a8108b33092c 100644
--- a/api-lib-core/src/test/java/de/ozgcloud/apilib/file/grpc/GrpcOzgCloudFileServiceTest.java
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/file/grpc/GrpcOzgCloudFileServiceTest.java
@@ -87,7 +87,7 @@ class GrpcOzgCloudFileServiceTest {
 			void shouldAddFileId() {
 				var request = service.buildFindFileRequest(OzgCloudFileTestFactory.ID);
 
-				assertThat(request.getFileIdList()).hasSize(1).first().isEqualTo(OzgCloudFileTestFactory.ID.toString());
+				assertThat(request.getFileIdList()).hasSize(1).first().isEqualTo(OzgCloudFileTestFactory.ID_STR);
 			}
 		}
 
@@ -131,7 +131,8 @@ class GrpcOzgCloudFileServiceTest {
 			@Mock
 			private GrpcUploadBinaryFileRequest uploadBinaryFileRequest;
 
-			GrpcUploadBinaryFileResponse response = GrpcUploadBinaryFileResponse.newBuilder().setFileId(OzgCloudFileTestFactory.ID.toString())
+			GrpcUploadBinaryFileResponse response =
+				GrpcUploadBinaryFileResponse.newBuilder().setFileId(OzgCloudFileTestFactory.ID_STR)
 				.build();
 
 			@BeforeEach
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/file/grpc/GrpcOzgFileTestFactory.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/file/grpc/GrpcOzgFileTestFactory.java
index 39790a4284445bff981f91e808b3f88b8c5a8fdd..0025acfdf0aac21dcd4af26cfe7f34c2bcf9ca2e 100644
--- a/api-lib-core/src/test/java/de/ozgcloud/apilib/file/grpc/GrpcOzgFileTestFactory.java
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/file/grpc/GrpcOzgFileTestFactory.java
@@ -11,7 +11,7 @@ public class GrpcOzgFileTestFactory {
 
 	static GrpcOzgFile.Builder createBuilder() {
 		return GrpcOzgFile.newBuilder()
-				.setId(OzgCloudFileTestFactory.ID.toString())
+				.setId(OzgCloudFileTestFactory.ID_STR)
 				.setName(OzgCloudFileTestFactory.NAME)
 				.setContentType(OzgCloudFileTestFactory.CONTENT_TYPE)
 				.setSize(OzgCloudFileTestFactory.SIZE);
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/file/grpc/OzgCloudFileMapperTest.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/file/grpc/OzgCloudFileMapperTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..ec898e7f8bac562d0c0bf1588b868f4013d9d2e2
--- /dev/null
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/file/grpc/OzgCloudFileMapperTest.java
@@ -0,0 +1,52 @@
+/*
+ * 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.apilib.file.grpc;
+
+import static org.assertj.core.api.Assertions.*;
+
+import org.junit.jupiter.api.Test;
+import org.mapstruct.factory.Mappers;
+
+import de.ozgcloud.apilib.file.OzgCloudFileTestFactory;
+import de.ozgcloud.apilib.vorgang.grpc.GrpcIncomingFileTestFactory;
+
+class OzgCloudFileMapperTest {
+
+	private OzgCloudFileMapper mapper = Mappers.getMapper(OzgCloudFileMapper.class);
+
+	@Test
+	void shouldMapFromGrpcOzgFile() {
+		var result = mapper.fromGrpc(GrpcOzgFileTestFactory.create());
+
+		assertThat(result).usingRecursiveComparison().isEqualTo(OzgCloudFileTestFactory.create());
+	}
+
+	@Test
+	void shouldMapFromGrpcIncomingFile() {
+		var result = mapper.fromIncomingFile(GrpcIncomingFileTestFactory.create());
+
+		assertThat(result).usingRecursiveComparison().isEqualTo(OzgCloudFileTestFactory.create());
+	}
+}
\ No newline at end of file
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudAntragstellerTestFactory.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudAntragstellerTestFactory.java
index fb7c115d426b697674f03aabc796cbc604bff60f..bff6096434ac78f6e5ace3995c9869b415916782 100644
--- a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudAntragstellerTestFactory.java
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudAntragstellerTestFactory.java
@@ -1,5 +1,7 @@
 package de.ozgcloud.apilib.vorgang;
 
+import java.util.List;
+
 public class OzgCloudAntragstellerTestFactory {
 
 	public static final String ANREDE = "Mr.";
@@ -15,6 +17,16 @@ public class OzgCloudAntragstellerTestFactory {
 	public static final String ORT = "City";
 	public static final String E_MAIL = "test@local";
 	public static final String TELEFON = "0123 2354 546";
+	public static final String FIRMA_NAME = "TestFirma";
+
+	public static final String FIELD_NAME = "name";
+	public static final String FIELD_LABEL = "label";
+	public static final String FIELD_VALUE = "value";
+	public static final String SUB_FORM_NAME = "sub-form-name";
+	public static final String SUB_FORM_LABEL = "sub-form-label";
+	public static final String SUB_FORM_FIELD_NAME = "sub-form-field-name";
+	public static final String SUB_FORM_FIELD_LABEL = "sub-form-field-label";
+	public static final String SUB_FORM_FIELD_VALUE = "sub-form-field-value";
 
 	public static OzgCloudAntragsteller create() {
 		return createBuilder().build();
@@ -25,6 +37,7 @@ public class OzgCloudAntragstellerTestFactory {
 				.anrede(ANREDE)
 				.vorname(FIRSTNAME)
 				.nachname(NACHNAME)
+				.firmaName(FIRMA_NAME)
 				.geburtsdatum(GEBURTSDATUM)
 				.geburtsort(GEBURTSORT)
 				.geburtsname(GEBURTSNAME)
@@ -33,6 +46,16 @@ public class OzgCloudAntragstellerTestFactory {
 				.plz(PLZ)
 				.ort(ORT)
 				.email(E_MAIL)
-				.telefon(TELEFON);
+				.telefon(TELEFON)
+				.otherData(createOtherData());
+	}
+
+	public static List<OzgCloudFormDataEntry> createOtherData() {
+		return List.of(
+			OzgCloudFormField.builder().name(FIELD_NAME).label(FIELD_LABEL).value(FIELD_VALUE).build(),
+			OzgCloudSubForm.builder().name(SUB_FORM_NAME).label(SUB_FORM_LABEL)
+				.formEntry(OzgCloudFormField.builder().name(SUB_FORM_FIELD_NAME).label(SUB_FORM_FIELD_LABEL).value(SUB_FORM_FIELD_VALUE).build())
+				.build()
+		);
 	}
 }
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudFileIdMapperTest.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudFileIdMapperTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..b1200e28cf17b94430cada924ebfb02105f6cb13
--- /dev/null
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudFileIdMapperTest.java
@@ -0,0 +1,61 @@
+/*
+ * 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.apilib.vorgang;
+
+import static org.assertj.core.api.Assertions.*;
+
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.NullAndEmptySource;
+import org.junit.jupiter.params.provider.ValueSource;
+import org.mapstruct.factory.Mappers;
+
+import de.ozgcloud.apilib.file.OzgCloudFileTestFactory;
+
+class OzgCloudFileIdMapperTest {
+
+
+	private OzgCloudFileIdMapper mapper = Mappers.getMapper(OzgCloudFileIdMapper.class);
+
+	@DisplayName("should map to null")
+	@ParameterizedTest(name = "when value is \"{0}\"")
+	@NullAndEmptySource
+	@ValueSource(strings = { " " })
+	void shouldMapToNull(String value) {
+		var result = mapper.toFileId(value);
+
+		assertThat(result).isNull();
+	}
+
+	@DisplayName("should map to fileId")
+	@Test
+	void shouldMapUserId() {
+		var result = mapper.toFileId(OzgCloudFileTestFactory.ID_STR);
+
+		assertThat(result).isEqualTo(OzgCloudFileTestFactory.ID);
+	}
+
+}
\ No newline at end of file
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudPostfachAddressIdentifierTestFactory.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudPostfachAddressIdentifierTestFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..ac5f7ffec9d74e4a9ffb97627bce952cb7f1c381
--- /dev/null
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudPostfachAddressIdentifierTestFactory.java
@@ -0,0 +1,43 @@
+/*
+ * 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.apilib.vorgang;
+
+import de.ozgcloud.apilib.vorgang.OzgCloudPostfachAddressIdentifier.OzgCloudPostfachAddressIdentifierBuilder;
+
+public class OzgCloudPostfachAddressIdentifierTestFactory {
+
+	public static final String NAME = "postfachId";
+	public static final String VALUE = "0815";
+
+	public static OzgCloudPostfachAddressIdentifier create() {
+		return createBuilder().build();
+	}
+
+	public static OzgCloudPostfachAddressIdentifierBuilder createBuilder() {
+		return OzgCloudPostfachAddressIdentifier.builder()
+				.name(NAME)
+				.value(VALUE);
+	}
+}
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudPostfachAddressTestFactory.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudPostfachAddressTestFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..bd1970999c82573b05b263b8a16ed61e5b25c57a
--- /dev/null
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudPostfachAddressTestFactory.java
@@ -0,0 +1,44 @@
+/*
+ * 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.apilib.vorgang;
+
+import de.ozgcloud.apilib.vorgang.OzgCloudPostfachAddress.OzgCloudPostfachAddressBuilder;
+
+public class OzgCloudPostfachAddressTestFactory {
+
+	public static final String VERSION = "1.0";
+	public static final int TYPE = 1;
+
+	public static OzgCloudPostfachAddress  create() {
+		return createBuilder().build();
+	}
+
+	public static OzgCloudPostfachAddressBuilder createBuilder() {
+		return OzgCloudPostfachAddress.builder()
+				.version(VERSION)
+				.type(TYPE)
+				.identifier(OzgCloudPostfachAddressIdentifierTestFactory.create());
+	}
+}
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudServiceKontoTestFactory.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudServiceKontoTestFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..9d36c69171f0a0ce39bd42a3be7ed7b47a83dd01
--- /dev/null
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudServiceKontoTestFactory.java
@@ -0,0 +1,46 @@
+/*
+ * 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.apilib.vorgang;
+
+import de.ozgcloud.apilib.vorgang.OzgCloudServiceKonto.OzgCloudServiceKontoBuilder;
+
+public class OzgCloudServiceKontoTestFactory {
+
+	public static final String TYPE_STR = "type";
+	public static final OzgCloudServiceKontoType TYPE = OzgCloudServiceKontoType.from(TYPE_STR);
+	public static final String TRUST_LEVEL_STR = "trustLevel";
+	public static final OzgCloudTrustLevel TRUST_LEVEL = OzgCloudTrustLevel.from(TRUST_LEVEL_STR);
+
+	public static OzgCloudServiceKonto create() {
+		return createBuilder().build();
+	}
+
+	public static OzgCloudServiceKontoBuilder createBuilder() {
+		return OzgCloudServiceKonto.builder()
+				.type(TYPE)
+				.trustLevel(TRUST_LEVEL)
+				.address(OzgCloudPostfachAddressTestFactory.create());
+	}
+}
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudUserIdMapperTest.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudUserIdMapperTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..489a1269c5c3e9b3214a314a87ac50ca10873ff3
--- /dev/null
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudUserIdMapperTest.java
@@ -0,0 +1,58 @@
+/*
+ * 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.apilib.vorgang;
+
+import static org.assertj.core.api.Assertions.*;
+
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.NullAndEmptySource;
+import org.junit.jupiter.params.provider.ValueSource;
+import org.mapstruct.factory.Mappers;
+
+class OzgCloudUserIdMapperTest {
+
+	private OzgCloudUserIdMapper mapper = Mappers.getMapper(OzgCloudUserIdMapper.class);
+
+	@DisplayName("should map to null")
+	@ParameterizedTest(name = "when value is \"{0}\"")
+	@NullAndEmptySource
+	@ValueSource(strings = { " " })
+	void shouldMapToNull(String value) {
+		var result = mapper.toUserId(value);
+
+		assertThat(result).isNull();
+	}
+
+	@DisplayName("should map to userId")
+	@Test
+	void shouldMapUserId() {
+		var result = mapper.toUserId(OzgCloudVorgangHeaderTestFactory.USER_ID_STR);
+
+		assertThat(result).isEqualTo(OzgCloudVorgangHeaderTestFactory.USER_ID);
+	}
+
+}
\ No newline at end of file
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangEingangTestFactory.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangEingangTestFactory.java
index 65425325728fb048cfbb4b274d000b25ce738f5a..2ac771bed38259182436e1901023e69135daa9b4 100644
--- a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangEingangTestFactory.java
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangEingangTestFactory.java
@@ -2,6 +2,9 @@ package de.ozgcloud.apilib.vorgang;
 
 import java.util.List;
 
+import de.ozgcloud.apilib.file.OzgCloudFileTestFactory;
+import de.ozgcloud.apilib.vorgang.grpc.OzgCloudFileGroupTestFactory;
+
 public class OzgCloudVorgangEingangTestFactory {
 
 	public static final String FIELD_NAME = "firstname";
@@ -23,14 +26,19 @@ public class OzgCloudVorgangEingangTestFactory {
 				.header(OzgCloudEingangHeaderTestFactory.create())
 				.antragsteller(OzgCloudAntragstellerTestFactory.create())
 				.zustaendigeStelle(OzgCloudZustaendigeStelleTestFactory.create())
-				.attachments(List.of(AttachmentTestFactory.createFileGroup()))
-				.formDataEntrys(List.<OzgCloudFormDataEntry>of(
-						OzgCloudFormField.builder().name(FIELD_NAME).label(FIELD_LABEL).value(FIELD_VALUE).build(),
-						OzgCloudSubForm.builder().name(SUB_FORM_NAME).label(SUB_FORM_LABEL)
-								.formEntry(OzgCloudFormField.builder()
-										.name(SUB_FORM_FIELD_NAME)
-										.label(SUB_FORM_FIELD_LABEL)
-										.value(SUB_FORM_FIELD_VALUE).build())
-								.build()));
+				.attachment(OzgCloudFileGroupTestFactory.create())
+				.representation(OzgCloudFileTestFactory.create())
+				.formDataEntrys(createFormData());
+	}
+
+	public static List<OzgCloudFormDataEntry> createFormData() {
+		return List.of(
+			OzgCloudFormField.builder().name(FIELD_NAME).label(FIELD_LABEL).value(FIELD_VALUE).build(),
+			OzgCloudSubForm.builder().name(SUB_FORM_NAME).label(SUB_FORM_LABEL)
+				.formEntry(OzgCloudFormField.builder()
+					.name(SUB_FORM_FIELD_NAME)
+					.label(SUB_FORM_FIELD_LABEL)
+					.value(SUB_FORM_FIELD_VALUE).build())
+				.build());
 	}
 }
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangHeaderTestFactory.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangHeaderTestFactory.java
index 3af1c6b618ec8cfd1211cc9b56fae2e2ba91dc41..dc49a95bcbb8d0217289219915b339e7fe9a3680 100644
--- a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangHeaderTestFactory.java
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangHeaderTestFactory.java
@@ -7,11 +7,13 @@ import de.ozgcloud.apilib.user.OzgCloudUserId;
 
 public class OzgCloudVorgangHeaderTestFactory {
 
-	public static OzgCloudVorgangStatus STATUS = OzgCloudVorgangStatus.from("WORKING");
-	public static String CREATED_AT_STR = "2023-04-01T10:00:15Z";
-	public static ZonedDateTime CREATED_AT = ZonedDateTime.parse(CREATED_AT_STR);
-	public static OzgCloudUserId ASSIGNED_TO = OzgCloudUserId.from(UUID.randomUUID().toString());
-	public static String AKTENZEICHEN = "DE_12345_XY";
+	public static final String STATUS_STR = "WORKING";
+	public static final OzgCloudVorgangStatus STATUS = OzgCloudVorgangStatus.from(STATUS_STR);
+	public static final String CREATED_AT_STR = "2023-04-01T10:00:15Z";
+	public static final ZonedDateTime CREATED_AT = ZonedDateTime.parse(CREATED_AT_STR);
+	public static final String USER_ID_STR = UUID.randomUUID().toString();
+	public static final OzgCloudUserId USER_ID = OzgCloudUserId.from(USER_ID_STR);
+	public static final String AKTENZEICHEN = "DE_12345_XY";
 
 	public static OzgCloudVorgangHeader create() {
 		return createBuilder().build();
@@ -21,7 +23,8 @@ public class OzgCloudVorgangHeaderTestFactory {
 		return OzgCloudVorgangHeader.builder()
 				.status(STATUS)
 				.createdAt(CREATED_AT)
-				.assignedTo(ASSIGNED_TO)
-				.aktenzeichen(AKTENZEICHEN);
+				.assignedTo(USER_ID)
+				.aktenzeichen(AKTENZEICHEN)
+				.serviceKonto(OzgCloudServiceKontoTestFactory.create());
 	}
 }
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangStatusMapperTest.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangStatusMapperTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..5757cd593844adbf23f04570202dc6e7192e652b
--- /dev/null
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangStatusMapperTest.java
@@ -0,0 +1,57 @@
+/*
+ * 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.apilib.vorgang;
+
+import static org.assertj.core.api.Assertions.*;
+
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.NullAndEmptySource;
+import org.junit.jupiter.params.provider.ValueSource;
+import org.mapstruct.factory.Mappers;
+
+class OzgCloudVorgangStatusMapperTest {
+
+	private OzgCloudVorgangStatusMapper mapper = Mappers.getMapper(OzgCloudVorgangStatusMapper.class);
+
+	@DisplayName("should map to null")
+	@ParameterizedTest(name = "when value is \"{0}\"")
+	@NullAndEmptySource
+	@ValueSource(strings = { " " })
+	void shouldMapToNull(String value) {
+		var result = mapper.toVorgangStatus(value);
+
+		assertThat(result).isNull();
+	}
+
+	@DisplayName("should map to vorgangStatus")
+	@Test
+	void shouldMapUserId() {
+		var result = mapper.toVorgangStatus(OzgCloudVorgangHeaderTestFactory.STATUS_STR);
+
+		assertThat(result).isEqualTo(OzgCloudVorgangHeaderTestFactory.STATUS);
+	}
+}
\ No newline at end of file
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcAntragstellerTestFactory.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcAntragstellerTestFactory.java
index 41e623094a2cbb4488e683c9d3ee6fc606f21881..55473e92261ef1dde24ae00edd873fbd27dbce07 100644
--- a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcAntragstellerTestFactory.java
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcAntragstellerTestFactory.java
@@ -3,6 +3,9 @@ package de.ozgcloud.apilib.vorgang.grpc;
 import static de.ozgcloud.apilib.vorgang.OzgCloudAntragstellerTestFactory.*;
 
 import de.ozgcloud.vorgang.vorgang.GrpcAntragsteller;
+import de.ozgcloud.vorgang.vorgang.GrpcFormData;
+import de.ozgcloud.vorgang.vorgang.GrpcFormField;
+import de.ozgcloud.vorgang.vorgang.GrpcSubForm;
 
 public class GrpcAntragstellerTestFactory {
 
@@ -15,6 +18,7 @@ public class GrpcAntragstellerTestFactory {
 				.setAnrede(ANREDE)
 				.setVorname(FIRSTNAME)
 				.setNachname(NACHNAME)
+				.setFirmaName(FIRMA_NAME)
 				.setGeburtsdatum(GEBURTSDATUM)
 				.setGeburtsort(GEBURTSORT)
 				.setGeburtsname(GEBURTSNAME)
@@ -23,6 +27,15 @@ public class GrpcAntragstellerTestFactory {
 				.setPlz(PLZ)
 				.setOrt(ORT)
 				.setEmail(E_MAIL)
-				.setTelefon(TELEFON);
+				.setTelefon(TELEFON)
+				.setOtherData(createOtherData());
+	}
+
+	public static GrpcFormData createOtherData() {
+		return GrpcFormData.newBuilder()
+			.addField(GrpcFormField.newBuilder().setName(FIELD_NAME).setLabel(FIELD_LABEL).setValue(FIELD_VALUE))
+			.addForm(GrpcSubForm.newBuilder().setTitle(SUB_FORM_NAME).setLabel(SUB_FORM_LABEL)
+				.addField(GrpcFormField.newBuilder().setName(SUB_FORM_FIELD_NAME).setLabel(SUB_FORM_FIELD_LABEL).setValue(SUB_FORM_FIELD_VALUE)))
+			.build();
 	}
 }
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcEingangTestFactory.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcEingangTestFactory.java
index 46ec136ef9ceb19cb1ef4da0e47f2f9939f12e8b..72c4ec45d4021e14679fd9f86b9baabaf064d4e7 100644
--- a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcEingangTestFactory.java
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcEingangTestFactory.java
@@ -18,6 +18,10 @@ public class GrpcEingangTestFactory {
 				.setHeader(GrpcEingangHeaderTestFactory.create())
 				.setAntragsteller(GrpcAntragstellerTestFactory.create())
 				.setZustaendigeStelle(GrpcZustaendigeStelleTestFactory.create())
+				.setNumberOfAttachments(1)
+				.addAttachments(GrpcIncomingFileGroupTestFactory.create())
+				.setNumberOfRepresentations(1)
+				.addRepresentations(GrpcIncomingFileTestFactory.create())
 				.setFormData(createFormData());
 	}
 
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcIncomingFileGroupTestFactory.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcIncomingFileGroupTestFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..3c72a423340bed378beccfb281888f198765a293
--- /dev/null
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcIncomingFileGroupTestFactory.java
@@ -0,0 +1,40 @@
+/*
+ * 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.apilib.vorgang.grpc;
+
+import de.ozgcloud.vorgang.vorgang.GrpcIncomingFileGroup;
+
+public class GrpcIncomingFileGroupTestFactory {
+
+	public static GrpcIncomingFileGroup create() {
+		return createBuilder().build();
+	}
+
+	public static GrpcIncomingFileGroup.Builder createBuilder() {
+		return GrpcIncomingFileGroup.newBuilder()
+				.setName(OzgCloudFileGroupTestFactory.NAME)
+				.addFiles(GrpcIncomingFileTestFactory.create());
+	}
+}
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcIncomingFileTestFactory.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcIncomingFileTestFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..978a2fdfb16506a3a8795d62f0576afdbd70267e
--- /dev/null
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcIncomingFileTestFactory.java
@@ -0,0 +1,43 @@
+/*
+ * 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.apilib.vorgang.grpc;
+
+import de.ozgcloud.apilib.file.OzgCloudFileTestFactory;
+import de.ozgcloud.vorgang.vorgang.GrpcIncomingFile;
+
+public class GrpcIncomingFileTestFactory {
+
+	public static GrpcIncomingFile create() {
+		return createBuilder().build();
+	}
+
+	public static GrpcIncomingFile.Builder createBuilder() {
+		return GrpcIncomingFile.newBuilder()
+				.setId(OzgCloudFileTestFactory.ID_STR)
+				.setName(OzgCloudFileTestFactory.NAME)
+				.setContentType(OzgCloudFileTestFactory.CONTENT_TYPE)
+				.setSize(OzgCloudFileTestFactory.SIZE);
+	}
+}
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcServiceKontoTestFactory.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcServiceKontoTestFactory.java
index 0ef9d48626480d6c3fb2f60ad14b1e46d192456f..6da9ab317a867a2580e605c922ba6a1912b4c72e 100644
--- a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcServiceKontoTestFactory.java
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcServiceKontoTestFactory.java
@@ -1,5 +1,8 @@
 package de.ozgcloud.apilib.vorgang.grpc;
 
+import de.ozgcloud.apilib.vorgang.OzgCloudPostfachAddressIdentifierTestFactory;
+import de.ozgcloud.apilib.vorgang.OzgCloudPostfachAddressTestFactory;
+import de.ozgcloud.apilib.vorgang.OzgCloudServiceKontoTestFactory;
 import de.ozgcloud.vorgang.common.GrpcObject;
 import de.ozgcloud.vorgang.common.GrpcProperty;
 import de.ozgcloud.vorgang.vorgang.GrpcPostfachAddress;
@@ -7,20 +10,20 @@ import de.ozgcloud.vorgang.vorgang.GrpcServiceKonto;
 
 public class GrpcServiceKontoTestFactory {
 
-	public static final String TYPE = "OSI";
-	public static final String VERSION = "1.0";
-
 	public static GrpcServiceKonto create() {
 		return createBuilder().build();
 	}
 
 	public static GrpcServiceKonto.Builder createBuilder() {
 		return GrpcServiceKonto.newBuilder()
-				.setType(TYPE)
+				.setType(OzgCloudServiceKontoTestFactory.TYPE_STR)
+				.setTrustLevel(OzgCloudServiceKontoTestFactory.TRUST_LEVEL_STR)
 				.addPostfachAddresses(GrpcPostfachAddress.newBuilder()
-						.setVersion(VERSION)
+						.setVersion(OzgCloudPostfachAddressTestFactory.VERSION)
+						.setType(OzgCloudPostfachAddressTestFactory.TYPE)
 						.setIdentifier(GrpcObject.newBuilder().addProperty(GrpcProperty.newBuilder()
-								.setName("postfachId").addValue("0815").build())));
+								.setName(OzgCloudPostfachAddressIdentifierTestFactory.NAME)
+								.addValue(OzgCloudPostfachAddressIdentifierTestFactory.VALUE).build())));
 	}
 
 }
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcVorgangHeaderTestFactory.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcVorgangHeaderTestFactory.java
index 18ba7a20a7c956b5418d2f5f551ba31e9804dc6a..319263888a6adb81ba2b5ed5b70db84bf85adc03 100644
--- a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcVorgangHeaderTestFactory.java
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcVorgangHeaderTestFactory.java
@@ -15,11 +15,11 @@ public class GrpcVorgangHeaderTestFactory {
 		return GrpcVorgangHeader.newBuilder()
 				.setId(ID.toString())
 				.setVersion(VERSION)
-				.setStatus(STATUS.toString())
+				.setStatus(STATUS_STR)
 				.setName(VORGANG_NAME)
 				.setCreatedAt(CREATED_AT_STR)
 				.setAktenzeichen(AKTENZEICHEN)
-				.setAssignedTo(ASSIGNED_TO.toString())
+				.setAssignedTo(USER_ID_STR)
 				.setNummer(VORGANG_NUMMER);
 	}
 }
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcVorgangWithEingangTestFactory.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcVorgangWithEingangTestFactory.java
index 2a151612dcd4f89f6f01e3dcb6095da11e335ae4..02c944cd8ec4c48cd8325fe9c1e744c3f1f9a926 100644
--- a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcVorgangWithEingangTestFactory.java
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcVorgangWithEingangTestFactory.java
@@ -18,9 +18,9 @@ public class GrpcVorgangWithEingangTestFactory {
 				.setName(VORGANG_NAME)
 				.setNummer(VORGANG_NUMMER)
 				.setAktenzeichen(AKTENZEICHEN)
-				.setAssignedTo(ASSIGNED_TO.toString())
+				.setAssignedTo(USER_ID.toString())
 				.setCreatedAt(CREATED_AT_STR)
-				.setStatus(STATUS.toString())
+				.setStatus(STATUS_STR)
 				.setHeader(GrpcVorgangHeadTestFactory.create())
 				.setEingang(GrpcEingangTestFactory.create());
 	}
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudEingangMapperTest.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudEingangMapperTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..c30939096624f2302d3186e50ac875e761f46ab5
--- /dev/null
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudEingangMapperTest.java
@@ -0,0 +1,45 @@
+/*
+ * 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.apilib.vorgang.grpc;
+
+import static org.assertj.core.api.Assertions.*;
+
+import org.junit.jupiter.api.Test;
+import org.mapstruct.factory.Mappers;
+
+import de.ozgcloud.apilib.vorgang.OzgCloudVorgangEingangTestFactory;
+
+class OzgCloudEingangMapperTest {
+
+	private OzgCloudEingangMapper ozgCloudEingangMapper = Mappers.getMapper(OzgCloudEingangMapper.class);
+
+	@Test
+	void shouldMapFromGrpcEingang() {
+		var result = ozgCloudEingangMapper.fromGrpc(GrpcEingangTestFactory.create());
+
+		assertThat(result).usingRecursiveComparison().isEqualTo(OzgCloudVorgangEingangTestFactory.create());
+	}
+
+}
\ No newline at end of file
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudFileGroupMapperTest.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudFileGroupMapperTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..fbdbb062926af203351bc32333082eb11c2d36aa
--- /dev/null
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudFileGroupMapperTest.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
+ * Ministerpräsidenten des Landes Schleswig-Holstein
+ * Staatskanzlei
+ * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+ *
+ * Lizenziert unter der EUPL, Version 1.2 oder - sobald
+ * diese von der Europäischen Kommission genehmigt wurden -
+ * Folgeversionen der EUPL ("Lizenz");
+ * Sie dürfen dieses Werk ausschließlich gemäß
+ * dieser Lizenz nutzen.
+ * Eine Kopie der Lizenz finden Sie hier:
+ *
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+ *
+ * Sofern nicht durch anwendbare Rechtsvorschriften
+ * gefordert oder in schriftlicher Form vereinbart, wird
+ * die unter der Lizenz verbreitete Software "so wie sie
+ * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+ * ausdrücklich oder stillschweigend - verbreitet.
+ * Die sprachspezifischen Genehmigungen und Beschränkungen
+ * unter der Lizenz sind dem Lizenztext zu entnehmen.
+ */
+
+package de.ozgcloud.apilib.vorgang.grpc;
+
+import static org.assertj.core.api.Assertions.*;
+
+import org.junit.jupiter.api.Test;
+import org.mapstruct.factory.Mappers;
+
+class OzgCloudFileGroupMapperTest {
+
+	private OzgCloudFileGroupMapper mapper = Mappers.getMapper(OzgCloudFileGroupMapper.class);
+
+	@Test
+	void shouldMapFromGrpc() {
+		var result = mapper.fromIncomingFileGroup(GrpcIncomingFileGroupTestFactory.create());
+
+		assertThat(result).usingRecursiveComparison().isEqualTo(OzgCloudFileGroupTestFactory.create());
+	}
+}
\ No newline at end of file
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudFileGroupTestFactory.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudFileGroupTestFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..340c223a65a498aa04bebdd578cf2a9775634bcf
--- /dev/null
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudFileGroupTestFactory.java
@@ -0,0 +1,44 @@
+/*
+ * 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.apilib.vorgang.grpc;
+
+import de.ozgcloud.apilib.file.OzgCloudFileGroup;
+import de.ozgcloud.apilib.file.OzgCloudFileGroup.OzgCloudFileGroupBuilder;
+import de.ozgcloud.apilib.file.OzgCloudFileTestFactory;
+
+public class OzgCloudFileGroupTestFactory {
+
+	public static final String NAME = "File Group Name";
+
+	public static OzgCloudFileGroup create() {
+		return createBuilder().build();
+	}
+
+	public static OzgCloudFileGroupBuilder createBuilder() {
+		return OzgCloudFileGroup.builder()
+			.name(NAME)
+			.file(OzgCloudFileTestFactory.create());
+	}
+}
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudServiceKontoMapperTest.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudServiceKontoMapperTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..34527bc6501bf5b2ff1b551ad7ae216027891b66
--- /dev/null
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudServiceKontoMapperTest.java
@@ -0,0 +1,75 @@
+/*
+ * 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.apilib.vorgang.grpc;
+
+import static org.assertj.core.api.Assertions.*;
+import static org.mockito.Mockito.*;
+
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.mapstruct.factory.Mappers;
+import org.mockito.Spy;
+
+import de.ozgcloud.apilib.vorgang.OzgCloudServiceKontoTestFactory;
+
+class OzgCloudServiceKontoMapperTest {
+
+	@Spy
+	private OzgCloudServiceKontoMapper mapper = Mappers.getMapper(OzgCloudServiceKontoMapper.class);
+
+	@Nested
+	class TestGetServiceKonto {
+
+		@Test
+		void shouldCallToServiceKonto() {
+			var serviceKonto = OzgCloudServiceKontoTestFactory.create();
+			doReturn(serviceKonto).when(mapper).fromServiceKonto(any());
+			var grpcServiceKonto = GrpcServiceKontoTestFactory.create();
+
+			mapper.getServiceKonto(GrpcVorgangHeadTestFactory.createBuilder().setServiceKonto(grpcServiceKonto).build());
+
+			verify(mapper).fromServiceKonto(grpcServiceKonto);
+		}
+
+		@Test
+		void shouldReturnNull() {
+			var result = mapper.getServiceKonto(GrpcVorgangHeadTestFactory.createBuilder().clearServiceKonto().build());
+
+			assertThat(result).isNull();
+		}
+	}
+
+	@Nested
+	class TestFromServiceKonto {
+
+		@Test
+		void shouldMapServiceKonto() {
+			var result = mapper.fromServiceKonto(GrpcServiceKontoTestFactory.create());
+
+			assertThat(result).usingRecursiveComparison().isEqualTo(OzgCloudServiceKontoTestFactory.create());
+		}
+	}
+
+}
\ No newline at end of file
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangMapperTest.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangMapperTest.java
index 197b54dfe9e8a549b39924c54e172cda05a7d139..dce9d6c121361753ee1415f6e4895a1f852cb9be 100644
--- a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangMapperTest.java
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangMapperTest.java
@@ -1,3 +1,27 @@
+/*
+ * 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.apilib.vorgang.grpc;
 
 import static org.assertj.core.api.Assertions.*;
@@ -51,5 +75,4 @@ class OzgCloudVorgangMapperTest {
 					.isEqualTo(OzgCloudVorgangEingangTestFactory.create());
 		}
 	}
-
 }