diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/export/StreamedExportedVorgangFile.java b/alfa-service/src/main/java/de/ozgcloud/alfa/export/StreamedExportedVorgangFile.java
index b51f2653ad632ddb9dd2bbe503550b73cf09239e..4e87099e63b8e3c896b37f8ddf3728b3f2a1dbda 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/export/StreamedExportedVorgangFile.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/export/StreamedExportedVorgangFile.java
@@ -6,15 +6,20 @@ import java.util.Iterator;
 
 import de.ozgcloud.archive.grpc.export.GrpcExportVorgangResponse;
 import de.ozgcloud.common.errorhandling.TechnicalException;
-import lombok.RequiredArgsConstructor;
+import lombok.Getter;
 
-@RequiredArgsConstructor
 class StreamedExportedVorgangFile implements ExportedVorgangFile {
 
+	@Getter
+	private final String fileName;
 	private final Iterator<GrpcExportVorgangResponse> responseIterator;
 
-	@Override
-	public String getFileName() {
+	public StreamedExportedVorgangFile(Iterator<GrpcExportVorgangResponse> responseIterator) {
+		this.fileName = getFileNameFrom(responseIterator);
+		this.responseIterator = responseIterator;
+	}
+
+	static String getFileNameFrom(Iterator<GrpcExportVorgangResponse> responseIterator) {
 		if (!responseIterator.hasNext()) {
 			throw new TechnicalException("Response is empty");
 		}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/export/StreamedExportedVorgangFileTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/export/StreamedExportedVorgangFileTest.java
index 8ff133a927a8c5359d0824a9621611d2ec01519c..293aa49bce8008b40bd9f52e38ad0335bdf5e735 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/export/StreamedExportedVorgangFileTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/export/StreamedExportedVorgangFileTest.java
@@ -7,11 +7,12 @@ import java.io.IOException;
 import java.io.OutputStream;
 import java.util.Iterator;
 
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
 import org.mockito.Mock;
+import org.mockito.MockedStatic;
 
 import com.google.protobuf.ByteString;
 import com.thedeanda.lorem.LoremIpsum;
@@ -23,11 +24,40 @@ class StreamedExportedVorgangFileTest {
 
 	@Mock
 	private Iterator<GrpcExportVorgangResponse> responseIterator;
-	@InjectMocks
-	private StreamedExportedVorgangFile exportedVorgangFile;
 
 	@Nested
-	class TestGetFileName {
+	class TestContructor {
+
+		private MockedStatic<StreamedExportedVorgangFile> mockedStatic;
+
+		@BeforeEach
+		void init() {
+			mockedStatic = mockStatic(StreamedExportedVorgangFile.class);
+			mockedStatic.when(() -> StreamedExportedVorgangFile.getFileNameFrom(responseIterator)).thenReturn(GrpcFileTestFactory.FILE_NAME);
+		}
+
+		@AfterEach
+		void cleanup() {
+			mockedStatic.close();
+		}
+
+		@Test
+		void shouldGetFileNameFromResponseIterator() {
+			new StreamedExportedVorgangFile(responseIterator);
+
+			mockedStatic.verify(() -> StreamedExportedVorgangFile.getFileNameFrom(responseIterator));
+		}
+
+		@Test
+		void shouldSetFileName() {
+			var exportedVorgangFile = new StreamedExportedVorgangFile(responseIterator);
+
+			assertThat(exportedVorgangFile.getFileName()).isEqualTo(GrpcFileTestFactory.FILE_NAME);
+		}
+	}
+
+	@Nested
+	class TestGetFileNameFrom {
 
 		@Nested
 		class OnEmptyResponse {
@@ -39,7 +69,7 @@ class StreamedExportedVorgangFileTest {
 
 			@Test
 			void shouldThrowException() {
-				assertThatExceptionOfType(TechnicalException.class).isThrownBy(exportedVorgangFile::getFileName);
+				assertThatExceptionOfType(TechnicalException.class).isThrownBy(TestGetFileNameFrom.this::callTestedMethod);
 			}
 		}
 
@@ -54,25 +84,29 @@ class StreamedExportedVorgangFileTest {
 
 			@Test
 			void shouldCallHasNext() {
-				exportedVorgangFile.getFileName();
+				callTestedMethod();
 
 				verify(responseIterator).hasNext();
 			}
 
 			@Test
 			void shouldCallNextOnce() {
-				exportedVorgangFile.getFileName();
+				callTestedMethod();
 
 				verify(responseIterator, times(1)).next();
 			}
 
 			@Test
 			void shouldReturnFileName() {
-				var fileName = exportedVorgangFile.getFileName();
+				var fileName = callTestedMethod();
 
 				assertThat(fileName).isEqualTo(GrpcFileTestFactory.FILE_NAME);
 			}
 		}
+
+		private String callTestedMethod() {
+			return StreamedExportedVorgangFile.getFileNameFrom(responseIterator);
+		}
 	}
 
 	@Nested
@@ -84,8 +118,12 @@ class StreamedExportedVorgangFileTest {
 		@Mock
 		private OutputStream outputStream;
 
+		private MockedStatic<StreamedExportedVorgangFile> mockedStatic;
+
 		@BeforeEach
 		void init() {
+			mockedStatic = mockStatic(StreamedExportedVorgangFile.class);
+			mockedStatic.when(() -> StreamedExportedVorgangFile.getFileNameFrom(responseIterator)).thenReturn(GrpcFileTestFactory.FILE_NAME);
 			when(responseIterator.hasNext())
 					.thenReturn(true)
 					.thenReturn(true)
@@ -97,16 +135,19 @@ class StreamedExportedVorgangFileTest {
 					).build());
 		}
 
+		@AfterEach
+		void cleanup() {
+			mockedStatic.close();
+		}
+
 		@Test
 		void shouldWriteFileContentInOrder() throws IOException {
 			var orderVerifier = inOrder(outputStream);
 
-			exportedVorgangFile.writeToOutputStream(outputStream);
+			new StreamedExportedVorgangFile(responseIterator).writeToOutputStream(outputStream);
 
 			orderVerifier.verify(outputStream).write(FILE_CONTENT_1.toByteArray());
 			orderVerifier.verify(outputStream).write(FILE_CONTENT_2.toByteArray());
 		}
-
-
 	}
 }