diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/AttachmentFile.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/file/AttachmentFile.java
similarity index 68%
rename from nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/AttachmentFile.java
rename to nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/file/AttachmentFile.java
index 0133636869be97afda3d6b5f1475c5773fe5a720..5ec6c9997f5cee38ec7beb42e98a71635457c2c6 100644
--- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/AttachmentFile.java
+++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/file/AttachmentFile.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,33 +21,17 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.ozgcloud.nachrichten.postfach;
+package de.ozgcloud.nachrichten.file;
 
-import static java.util.Objects.*;
-
-import java.io.InputStream;
-import java.util.function.Supplier;
-
-import lombok.AccessLevel;
 import lombok.Builder;
 import lombok.Getter;
-import lombok.ToString;
 
 @Builder
 @Getter
-@ToString
 public class AttachmentFile {
+
 	private String name;
 	private String contentType;
-	@Getter(AccessLevel.NONE)
-	@ToString.Exclude
-	private Supplier<InputStream> content;
-
-	public InputStream getContent() {
-		if (isNull(content)) {
-			return InputStream.nullInputStream();
-		}
-		return content.get();
-	}
+	private String vorgangId;
 
 }
diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtService.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtService.java
index 813c1732414b2cfde6aee08b8bea55f1e4a49afe..d21051cb54f7afdd2aeda4422a5cd1c482e4cc76 100644
--- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtService.java
+++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtService.java
@@ -27,6 +27,8 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Stream;
 
+import de.ozgcloud.nachrichten.file.AttachmentFile;
+
 //Temporally replacement for usign GRPC Api
 public interface PersistPostfachNachrichtService {
 
diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImpl.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImpl.java
index 154404a4d8c7fb71f22e51016e004f8f63a0f5d6..cacd0ccc3fdfa334e5cdd7567484b7268961697f 100644
--- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImpl.java
+++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImpl.java
@@ -42,6 +42,7 @@ import de.ozgcloud.apilib.vorgang.OzgCloudVorgangId;
 import de.ozgcloud.nachrichten.NachrichtenManagerConfiguration;
 import de.ozgcloud.nachrichten.attributes.ClientAttributeService;
 import de.ozgcloud.nachrichten.common.vorgang.VorgangService;
+import de.ozgcloud.nachrichten.file.AttachmentFile;
 import de.ozgcloud.nachrichten.postfach.PostfachNachricht.Direction;
 
 @Service
diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/bayernid/BayernIdAttachmentService.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/bayernid/BayernIdAttachmentService.java
index 0110fcc97ad21678c6c98d0871ff129feef6c52a..d2d27121106bfcebd58a5602ae4c4c37f13c0f89 100644
--- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/bayernid/BayernIdAttachmentService.java
+++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/bayernid/BayernIdAttachmentService.java
@@ -24,45 +24,32 @@
 package de.ozgcloud.nachrichten.postfach.bayernid;
 
 import java.io.InputStream;
-import java.util.Optional;
 
-import org.bson.Document;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.stereotype.Service;
 
-import com.mongodb.client.gridfs.model.GridFSFile;
-
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import de.ozgcloud.nachrichten.postfach.BinaryFileService;
+import de.ozgcloud.nachrichten.file.AttachmentFile;
+import de.ozgcloud.nachrichten.file.AttachmentFileService;
 import de.ozgcloud.nachrichten.postfach.FileId;
+import lombok.RequiredArgsConstructor;
 
 @Service
 @ConditionalOnProperty(prefix = "ozgcloud.bayernid", name = { "enabled" })
+@RequiredArgsConstructor
 public class BayernIdAttachmentService {
 
-	static final String NAME_KEY = "name";
-	static final String CONTENT_TYPE_KEY = "contentType";
-
-	@Autowired
-	private BinaryFileService binaryFileService;
+	private final AttachmentFileService attachmentFileService;
 
 	public BayernIdAttachment getMessageAttachment(FileId fileId) {
-		return Optional.ofNullable(binaryFileService.getFile(fileId))
-				.map(GridFSFile::getMetadata)
-				.map(metadata -> buildBayernIdAttachment(metadata, getAttachmentContentStream(fileId)))
-				.orElseThrow(() -> new TechnicalException("Can not find attachment with id " + fileId));
+		return buildBayernIdAttachment(attachmentFileService.getFile(fileId), attachmentFileService.getFileContent(fileId));
 	}
 
-	BayernIdAttachment buildBayernIdAttachment(Document metadata, InputStream attachmentContent) {
+	BayernIdAttachment buildBayernIdAttachment(AttachmentFile attachmentFile, InputStream attachmentContent) {
 		return BayernIdAttachment.builder()
-				.fileName(metadata.getString(NAME_KEY))
-				.contentType(metadata.getString(CONTENT_TYPE_KEY))
+				.fileName(attachmentFile.getName())
+				.contentType(attachmentFile.getContentType())
 				.content(attachmentContent)
 				.build();
 	}
 
-	InputStream getAttachmentContentStream(FileId fileId) {
-		return binaryFileService.getUploadedFileStream(fileId);
-	}
 }
diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/bayernid/BayernIdAttachmentServiceTest.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/bayernid/BayernIdAttachmentServiceTest.java
index 5db43d5340835019620df44b1c52465a50dd793d..67be8d6b18244c0926b10e1f7d3bc07955b3dddc 100644
--- a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/bayernid/BayernIdAttachmentServiceTest.java
+++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/bayernid/BayernIdAttachmentServiceTest.java
@@ -25,26 +25,22 @@ package de.ozgcloud.nachrichten.postfach.bayernid;
 
 import static de.ozgcloud.nachrichten.postfach.bayernid.BayernIdAttachmentTestFactory.*;
 import static org.assertj.core.api.Assertions.*;
-import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
 
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 
-import org.bson.Document;
 import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
 
-import com.mongodb.client.gridfs.model.GridFSFile;
-
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import de.ozgcloud.nachrichten.postfach.BinaryFileService;
+import de.ozgcloud.nachrichten.file.AttachmentFile;
+import de.ozgcloud.nachrichten.file.AttachmentFileService;
+import de.ozgcloud.nachrichten.file.AttachmentFileTestFactory;
 import de.ozgcloud.nachrichten.postfach.FileId;
 
 class BayernIdAttachmentServiceTest {
@@ -53,74 +49,54 @@ class BayernIdAttachmentServiceTest {
 
 	@InjectMocks
 	@Spy
-	private BayernIdAttachmentService bayernIdAttachmentService;
-
-	@Mock
-	private BinaryFileService fileService;
-
-	@Mock
-	private GridFSFile gridFsfile;
+	private BayernIdAttachmentService service;
 
 	@Mock
-	private Document metadata;
+	private AttachmentFileService attachmentFileService;
 
 	@Nested
-	class TestLoadingAttachment {
+	class TestGetMessageAttachment {
+
+		@Mock
+		private AttachmentFile attachmentFile;
+		@Mock
+		private InputStream fileContent;
+		@Mock
+		private BayernIdAttachment bayernIdAttachment;
 
 		@BeforeEach
 		void init() {
-			when(gridFsfile.getMetadata()).thenReturn(metadata);
-			when(fileService.getFile(any())).thenReturn(gridFsfile);
+			when(attachmentFileService.getFile(any())).thenReturn(attachmentFile);
+			when(attachmentFileService.getFileContent(any())).thenReturn(fileContent);
+			doReturn(bayernIdAttachment).when(service).buildBayernIdAttachment(any(), any());
 		}
 
 		@Test
 		void shouldCallGetFile() {
-			when(fileService.getUploadedFileStream(any())).thenReturn(new ByteArrayInputStream(CONTENT));
+			service.getMessageAttachment(FILE_ID);
 
-			bayernIdAttachmentService.getMessageAttachment(FILE_ID);
-
-			verify(fileService).getFile(FILE_ID);
+			verify(attachmentFileService).getFile(FILE_ID);
 		}
 
 		@Test
-		void shouldCallGetAttachmentContent() {
-			when(fileService.getUploadedFileStream(any())).thenReturn(new ByteArrayInputStream(CONTENT));
-
-			bayernIdAttachmentService.getMessageAttachment(FILE_ID);
+		void shouldCallGetFileContent() {
+			service.getMessageAttachment(FILE_ID);
 
-			verify(bayernIdAttachmentService).getMessageAttachment(FILE_ID);
+			verify(attachmentFileService).getFileContent(FILE_ID);
 		}
 
 		@Test
 		void shouldCallBuildBayernIdAttachment() {
-			var contentStream = getContentStream();
-			doReturn(contentStream).when(bayernIdAttachmentService).getAttachmentContentStream(any());
+			service.getMessageAttachment(FILE_ID);
 
-			bayernIdAttachmentService.getMessageAttachment(FILE_ID);
-
-			verify(bayernIdAttachmentService).buildBayernIdAttachment(metadata, contentStream);
+			verify(service).buildBayernIdAttachment(attachmentFile, fileContent);
 		}
 
-	}
-
-	@Nested
-	class TestLoadAttachmentError {
-
 		@Test
-		@DisplayName("should throw TechnicalException if attachment not found")
-		void shouldThrowException() {
-			when(fileService.getFile(any())).thenReturn(null);
+		void shouldReturnBayernIdAttachment() {
+			var attachment = service.getMessageAttachment(FILE_ID);
 
-			assertThrows(TechnicalException.class, () -> bayernIdAttachmentService.getMessageAttachment(FILE_ID));
-		}
-
-		@Test
-		@DisplayName("should throw TechnicalException if metadata is null")
-		void shouldThrowExceptionIfNoMetadata() {
-			when(fileService.getFile(any())).thenReturn(gridFsfile);
-			when(gridFsfile.getMetadata()).thenReturn(null);
-
-			assertThrows(TechnicalException.class, () -> bayernIdAttachmentService.getMessageAttachment(FILE_ID));
+			assertThat(attachment).isSameAs(bayernIdAttachment);
 		}
 	}
 
@@ -129,8 +105,6 @@ class BayernIdAttachmentServiceTest {
 
 		@BeforeEach
 		void setup() {
-			when(metadata.getString(BayernIdAttachmentService.NAME_KEY)).thenReturn(BayernIdAttachmentTestFactory.FILENAME);
-			when(metadata.getString(BayernIdAttachmentService.CONTENT_TYPE_KEY)).thenReturn(BayernIdAttachmentTestFactory.CONTENT_TYPE);
 		}
 
 		@Test
@@ -155,25 +129,7 @@ class BayernIdAttachmentServiceTest {
 		}
 
 		private BayernIdAttachment buildBayernIdAttachment() {
-			return bayernIdAttachmentService.buildBayernIdAttachment(metadata, getContentStream());
-		}
-	}
-
-	@Nested
-	class TestLoadingAttachmentContent {
-
-		@BeforeEach
-		void init() {
-			when(fileService.getUploadedFileStream(any()))
-					.thenReturn(new ByteArrayInputStream(CONTENT));
+			return service.buildBayernIdAttachment(AttachmentFileTestFactory.create(), getContentStream());
 		}
-
-		@Test
-		void shouldGetInputStream() {
-			InputStream input = bayernIdAttachmentService.getAttachmentContentStream(FILE_ID);
-
-			assertThat(input).hasSameContentAs(getContentStream());
-		}
-
 	}
 }
\ No newline at end of file
diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/bayernid/BayernIdAttachmentTestFactory.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/bayernid/BayernIdAttachmentTestFactory.java
index 2fe959b6e55845a65ad5596239816a23945759b3..0ae8abb39ab76a2dc5548865a0ea84ccf61935a3 100644
--- a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/bayernid/BayernIdAttachmentTestFactory.java
+++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/bayernid/BayernIdAttachmentTestFactory.java
@@ -26,12 +26,13 @@ package de.ozgcloud.nachrichten.postfach.bayernid;
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 
+import de.ozgcloud.nachrichten.file.AttachmentFileTestFactory;
 import de.ozgcloud.nachrichten.postfach.bayernid.BayernIdAttachment.BayernIdAttachmentBuilder;
 
 public class BayernIdAttachmentTestFactory {
 
-	public final static String FILENAME = "test.txt";
-	public final static String CONTENT_TYPE = "text/plain";
+	public final static String FILENAME = AttachmentFileTestFactory.NAME;
+	public final static String CONTENT_TYPE = AttachmentFileTestFactory.CONTENT_TYPE;
 	public static final byte[] CONTENT = "test".getBytes();
 	public static final long SIZE = 4L;
 
diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/osi/MessageAttachmentTestFactory.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/osi/MessageAttachmentTestFactory.java
index 17181b240ad7645e49afd5c977cefdb925226425..b0ca53c550055aa6c20865dec1745589dd2bb865 100644
--- a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/osi/MessageAttachmentTestFactory.java
+++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/osi/MessageAttachmentTestFactory.java
@@ -23,9 +23,11 @@
  */
 package de.ozgcloud.nachrichten.postfach.osi;
 
+import de.ozgcloud.nachrichten.file.AttachmentFileTestFactory;
+
 public class MessageAttachmentTestFactory {
 
-	public final static String FILENAME = "test.txt";
+	public final static String FILENAME = AttachmentFileTestFactory.NAME;
 	public static final String CONTENT = "dGVzdA==";
 	public static final String DECODED_CONTENT = "test";
 	public static final long SIZE = 4L;