diff --git a/collaboration-manager-server/src/main/java/de/ozgcloud/collaboration/common/grpc/GrpcDownloader.java b/collaboration-manager-server/src/main/java/de/ozgcloud/collaboration/common/grpc/GrpcDownloader.java
index d658d645fa766ed2d9f3a180c93150cd67678254..6d777066a4cea56cb6df3276760a5f44df47b567 100644
--- a/collaboration-manager-server/src/main/java/de/ozgcloud/collaboration/common/grpc/GrpcDownloader.java
+++ b/collaboration-manager-server/src/main/java/de/ozgcloud/collaboration/common/grpc/GrpcDownloader.java
@@ -16,26 +16,21 @@ import de.ozgcloud.apilib.file.OzgCloudFileId;
 import de.ozgcloud.common.errorhandling.TechnicalException;
 import io.grpc.stub.CallStreamObserver;
 import lombok.Builder;
-import lombok.Getter;
 
 public class GrpcDownloader<T> {
 
 	private static final int CHUNK_SIZE = 255 * 1024;
 
-	@Getter
 	private CallStreamObserver<T> callObserver;
-	@Getter
 	private Function<ByteString, T> chunkBuilder;
-	@Getter
 	private Consumer<OutputStream> downloadConsumer;
-	@Getter
 	private TaskExecutor taskExecutor;
 
 	private final byte[] buffer = new byte[GrpcDownloader.CHUNK_SIZE];
+	private final AtomicBoolean downloadInProgress = new AtomicBoolean(false);
 
 	private PipedInputStream inputStream;
 	private PipedOutputStream outputStream;
-	private AtomicBoolean downloadInProgress = new AtomicBoolean(false);
 
 	@Builder
 	public GrpcDownloader(CallStreamObserver<T> callObserver, OzgCloudFileId fileId, Function<ByteString, T> chunkBuilder,
@@ -88,7 +83,7 @@ public class GrpcDownloader<T> {
 		while (callObserver.isReady() && (bytesRead = inputStream.read(buffer)) != -1) {
 			callObserver.onNext(chunkBuilder.apply(ByteString.copyFrom(buffer, 0, bytesRead)));
 		}
-		if (hasFinishedDownload()) {
+		if (!downloadInProgress.get()) {
 			inputStream.close();
 			callObserver.onCompleted();
 		}
@@ -109,10 +104,6 @@ public class GrpcDownloader<T> {
 	}
 
 	private void throwException(IOException e) {
-		throw new TechnicalException("Error occured during downloading file content download.", e);
-	}
-
-	private boolean hasFinishedDownload() throws IOException {
-		return !downloadInProgress.get() && inputStream.available() == 0;
+		throw new TechnicalException("Error occurred during downloading file content download.", e);
 	}
 }
\ No newline at end of file
diff --git a/collaboration-manager-server/src/test/java/de/ozgcloud/collaboration/CollaborationGrpcServiceTest.java b/collaboration-manager-server/src/test/java/de/ozgcloud/collaboration/CollaborationGrpcServiceTest.java
index 7a7038c8febda85ddfc7e6a30a5166b3e298b4e2..7614a782ae107dcd1fdd6d3e5c521d6777b98e36 100644
--- a/collaboration-manager-server/src/test/java/de/ozgcloud/collaboration/CollaborationGrpcServiceTest.java
+++ b/collaboration-manager-server/src/test/java/de/ozgcloud/collaboration/CollaborationGrpcServiceTest.java
@@ -27,7 +27,10 @@ import static org.assertj.core.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
 
+import java.io.OutputStream;
 import java.util.UUID;
+import java.util.function.Consumer;
+import java.util.function.Function;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
@@ -37,6 +40,9 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
 import org.springframework.core.task.TaskExecutor;
+import org.springframework.test.util.ReflectionTestUtils;
+
+import com.google.protobuf.ByteString;
 
 import de.ozgcloud.collaboration.common.grpc.GrpcDownloader;
 import de.ozgcloud.collaboration.vorgang.CollaborationVorgangMapper;
@@ -188,28 +194,47 @@ class CollaborationGrpcServiceTest {
 		void shouldContainCallObserver() {
 			var downloader = grpcService.buildDownloader(fileId, callStreamObserver);
 
-			assertThat(downloader.getCallObserver()).isEqualTo(callStreamObserver);
+			assertThat(getCallObserver(downloader)).isEqualTo(callStreamObserver);
 		}
 
 		@Test
 		void shouldContainDownloadConsumer() {
 			var downloader = grpcService.buildDownloader(fileId, callStreamObserver);
 
-			assertThat(downloader.getDownloadConsumer()).isNotNull();
+			assertThat(getDownloadConsumer(downloader)).isNotNull();
 		}
 
 		@Test
 		void shouldContainChunkBuilder() {
 			var downloader = grpcService.buildDownloader(fileId, callStreamObserver);
 
-			assertThat(downloader.getChunkBuilder()).isNotNull();
+			assertThat(getChunkBuilder(downloader)).isNotNull();
 		}
 
 		@Test
 		void shouldContainTaskBuilder() {
 			var downloader = grpcService.buildDownloader(fileId, callStreamObserver);
 
-			assertThat(downloader.getTaskExecutor()).isEqualTo(taskExecutor);
+			assertThat(getTaskExecuter(downloader)).isEqualTo(taskExecutor);
+		}
+
+		@SuppressWarnings("unchecked")
+		private CallStreamObserver<GrpcGetFileContentResponse> getCallObserver(GrpcDownloader<GrpcGetFileContentResponse> downloader) {
+			return (CallStreamObserver<GrpcGetFileContentResponse>) ReflectionTestUtils.getField(downloader, "callObserver");
+		}
+
+		@SuppressWarnings("unchecked")
+		private Consumer<OutputStream> getDownloadConsumer(GrpcDownloader<GrpcGetFileContentResponse> downloader) {
+			return (Consumer<OutputStream>) ReflectionTestUtils.getField(downloader, "downloadConsumer");
+		}
+
+		@SuppressWarnings("unchecked")
+		private Function<ByteString, GrpcGetFileContentResponse> getChunkBuilder(GrpcDownloader<GrpcGetFileContentResponse> downloader) {
+			return (Function<ByteString, GrpcGetFileContentResponse>) ReflectionTestUtils.getField(downloader, "chunkBuilder");
+		}
+
+		private TaskExecutor getTaskExecuter(GrpcDownloader<GrpcGetFileContentResponse> downloader) {
+			return (TaskExecutor) ReflectionTestUtils.getField(downloader, "taskExecutor");
 		}
 	}
 }
\ No newline at end of file
diff --git a/collaboration-manager-server/src/test/java/de/ozgcloud/collaboration/common/grpc/GrpcDownloaderTest.java b/collaboration-manager-server/src/test/java/de/ozgcloud/collaboration/common/grpc/GrpcDownloaderTest.java
index 1eb5787a7776283cf0da1e90c4a88348c6ec37bd..5a20435f5a258fb348bcc0c11a5abf3b9a5e5372 100644
--- a/collaboration-manager-server/src/test/java/de/ozgcloud/collaboration/common/grpc/GrpcDownloaderTest.java
+++ b/collaboration-manager-server/src/test/java/de/ozgcloud/collaboration/common/grpc/GrpcDownloaderTest.java
@@ -247,7 +247,6 @@ class GrpcDownloaderTest {
 			@Test
 			void shouldCallOnCompleted() {
 				ReflectionTestUtils.setField(downloader, "downloadInProgress", new AtomicBoolean(false));
-				when(inputStream.available()).thenReturn(0);
 
 				downloader.doSendChunks();
 
@@ -258,7 +257,6 @@ class GrpcDownloaderTest {
 			@Test
 			void shouldCloseInputStream() {
 				ReflectionTestUtils.setField(downloader, "downloadInProgress", new AtomicBoolean(false));
-				when(inputStream.available()).thenReturn(0);
 
 				downloader.doSendChunks();