diff --git a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRepresentationsMapper.java b/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRepresentationsMapper.java
index fc61ce304635f52190fc79b1e2f850795a7c300f..7293fb0f6399b0b56f3e8d16bf146013ced93ead 100644
--- a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRepresentationsMapper.java
+++ b/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRepresentationsMapper.java
@@ -23,8 +23,6 @@
  */
 package de.itvsh.kop.eingangsadapter.formsolutions;
 
-import static de.itvsh.kop.eingangsadapter.common.file.TempFileUtils.*;
-
 import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
@@ -51,21 +49,19 @@ class FormSolutionsRepresentationsMapper {
 	public static final String TMP_FILE_PREFIX = "filecached-inputstream-fs";
 	public static final String TMP_FILE_SUFFIX = ".ozg-cloud.tmp";
 
-	List<IncomingFile> mapRepresentations(Map<String, Object> plainMap, Optional<String> json) {
+	List<IncomingFile> mapRepresentations(Map<String, Object> plainMap, File jsonFile) {
 		List<IncomingFile> representations = new ArrayList<>();
 
 		Optional.ofNullable((String) plainMap.get(PDF))
 				.filter(StringUtils::isNoneEmpty)
 				.ifPresent(data -> representations.add(buildPdfFile(data)));
 
-		json.ifPresent(jsonData -> representations.add(buildJsonFile(jsonData)));
+		representations.add(buildJsonFile(jsonFile));
 
 		return representations;
 	}
 
-	private IncomingFile buildJsonFile(String jsonData) {
-		var jsonFile = writeTmpFile(jsonData);
-
+	private IncomingFile buildJsonFile(File jsonFile) {
 		return IncomingFile.builder()
 				.file(jsonFile)
 				.contentType(JSON_CONTENT_TYPE)
diff --git a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapper.java b/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapper.java
index 039c6da7d4dd0604acb52de36fbf57f980cf5986..4d81e93066165ff6fffc5e69cf3c9977a6d9dc39 100644
--- a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapper.java
+++ b/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapper.java
@@ -23,13 +23,14 @@
  */
 package de.itvsh.kop.eingangsadapter.formsolutions;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
 import java.util.Map;
-import java.util.Optional;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
 
@@ -50,36 +51,36 @@ class FormSolutionsRequestMapper {
 	@Autowired
 	private ObjectMapper objectMapper;
 
-	public FormData map(String json) {
-		var formData = buildFormData(json);
+	public FormData map(File jsonFile) {
+		var formData = buildFormData(jsonFile);
 
-		return mapFiles(formData, json);
+		return mapFiles(formData, jsonFile);
 	}
 
-	private FormData buildFormData(String json) {
-		return FormData.builder().formData(mapFormData(json)).build();
+	private FormData buildFormData(File jsonFile) {
+		return FormData.builder().formData(mapFormData(jsonFile)).build();
 	}
 
-	Map<String, Object> mapFormData(String json) {
-		try {
-			return objectMapper.readValue(json, VALUE_TYPE_REF);
-		} catch (JsonProcessingException e) {
+	Map<String, Object> mapFormData(File jsonFile) {
+		try (var in = new FileInputStream(jsonFile)) {
+			return objectMapper.readValue(in, VALUE_TYPE_REF);
+		} catch (IOException e) {
 			throw new TechnicalException("Error parsing JSON from FormSolutions-Server", e);
 		}
 	}
 
-	FormData mapFiles(FormData formData, String json) {
+	FormData mapFiles(FormData formData, File jsonFile) {
 		return FormDataUtils.from(formData)
-				.put(FilesMapperHelper.FIELD_NAME_MAPPED_FILES, buildMappedFiles(formData, json))
+				.put(FilesMapperHelper.FIELD_NAME_MAPPED_FILES, buildMappedFiles(formData, jsonFile))
 				.remove(FormSolutionsAttachmentsMapper.ZIP)
 				.remove(FormSolutionsRepresentationsMapper.PDF)
 				.build();
 
 	}
 
-	private Map<String, Object> buildMappedFiles(FormData formData, String json) {
+	private Map<String, Object> buildMappedFiles(FormData formData, File jsonFile) {
 		return Map.of(
 				FilesMapperHelper.ATTACHMENTS, attachmentMapper.mapAttachments(formData.getFormData()),
-				FilesMapperHelper.REPRESENTATIONS, representationMapper.mapRepresentations(formData.getFormData(), Optional.of(json)));
+				FilesMapperHelper.REPRESENTATIONS, representationMapper.mapRepresentations(formData.getFormData(), jsonFile));
 	}
 }
\ No newline at end of file
diff --git a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpoint.java b/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpoint.java
index f78c38ce83a826df23d8a3af00ca85347f6da800..18b06e2919e02764784ccf16e1481f3acad5f028 100644
--- a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpoint.java
+++ b/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpoint.java
@@ -23,6 +23,8 @@
  */
 package de.itvsh.kop.eingangsadapter.formsolutions;
 
+import java.io.File;
+
 import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.ws.server.endpoint.annotation.Endpoint;
@@ -30,6 +32,7 @@ import org.springframework.ws.server.endpoint.annotation.PayloadRoot;
 import org.springframework.ws.server.endpoint.annotation.RequestPayload;
 import org.springframework.ws.server.endpoint.annotation.ResponsePayload;
 
+import de.itvsh.kop.eingangsadapter.common.file.TempFileUtils;
 import de.itvsh.kop.eingangsadapter.semantik.SemantikAdapter;
 import lombok.extern.log4j.Log4j2;
 
@@ -48,13 +51,16 @@ public class SendFormEndpoint {
 	@ResponsePayload
 	public Response receiveForm(@RequestPayload Request request) {
 		try {
-			semantikAdapter.processFormData(requestMapper.map(request.getJSON()));
+			semantikAdapter.processFormData(requestMapper.map(writeRequestJsonToFile(request.getJSON())));
 			return buildSuccessResponse();
 		} catch (Exception e) {
 			LOG.error("Error on processing FormSolutions Formdata.", e);
 			return ExceptionUtils.rethrow(e);
 		}
+	}
 
+	private File writeRequestJsonToFile(String json) {
+		return TempFileUtils.writeTmpFile(json);
 	}
 
 	private Response buildSuccessResponse() {
diff --git a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapperTest.java b/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapperTest.java
index 9f9cdaac34a856eb1213fe8d2adf88f45c92ba29..e96b8cdc0fa2629fdb2d44b2de65412db61caae5 100644
--- a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapperTest.java
+++ b/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapperTest.java
@@ -29,10 +29,11 @@ import static org.assertj.core.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
 
+import java.io.File;
 import java.util.List;
 import java.util.Map;
-import java.util.Optional;
 
+import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
@@ -47,6 +48,7 @@ import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 import de.itvsh.kop.common.errorhandling.TechnicalException;
+import de.itvsh.kop.eingangsadapter.common.file.TempFileUtils;
 import de.itvsh.kop.eingangsadapter.common.formdata.FormDataTestFactory;
 import de.itvsh.kop.eingangsadapter.semantik.enginebased.FilesMapperHelper;
 
@@ -207,9 +209,17 @@ class FormSolutionsRequestMapperTest {
 
 		@Nested
 		class TestMapFiles {
+
+			private File jsonFile = TempFileUtils.writeTmpFile(ATTACHMENTS_JSON);
+
+			@AfterAll
+			void deleteTempFile() {
+				jsonFile.delete();
+			}
+
 			@Test
 			void shouldCallAttachmentMappers() {
-				mapper.mapFiles(FormDataTestFactory.create(), ATTACHMENTS_JSON);
+				mapper.mapFiles(FormDataTestFactory.create(), jsonFile);
 
 				verify(attachmentMapper).mapAttachments(Mockito.<Map<String, Object>>any());
 			}
@@ -217,23 +227,23 @@ class FormSolutionsRequestMapperTest {
 			@DisplayName("result should have mapped files field")
 			@Test
 			void shouldHaveMappedFilesField() {
-				var result = mapper.mapFiles(FormDataTestFactory.create(), ATTACHMENTS_JSON);
+				var result = mapper.mapFiles(FormDataTestFactory.create(), jsonFile);
 
 				assertThat(result.getFormData()).containsKey(FilesMapperHelper.FIELD_NAME_MAPPED_FILES);
 			}
 
 			@Test
 			void shouldCallRepresentationMapper() {
-				mapper.mapFiles(FormDataTestFactory.create(), ATTACHMENTS_JSON);
+				mapper.mapFiles(FormDataTestFactory.create(), jsonFile);
 
-				verify(representationsMapper).mapRepresentations(Mockito.<Map<String, Object>>any(), eq(Optional.of(ATTACHMENTS_JSON)));
+				verify(representationsMapper).mapRepresentations(Mockito.<Map<String, Object>>any(), jsonFile);
 			}
 
 			@Test
 			void shouldRemoveZip() {
 				var formData = FormDataTestFactory.withFormDataMaps(Map.of(FormSolutionsAttachmentsMapper.ZIP, "test"));
 
-				var dataMap = mapper.mapFiles(formData, ATTACHMENTS_JSON);
+				var dataMap = mapper.mapFiles(formData, jsonFile);
 
 				assertThat(dataMap.getFormData()).doesNotContainKey(FormSolutionsAttachmentsMapper.ZIP);
 			}
@@ -242,7 +252,7 @@ class FormSolutionsRequestMapperTest {
 			void shouldRemovePdf() {
 				var formData = FormDataTestFactory.withFormDataMaps(Map.of(FormSolutionsRepresentationsMapper.PDF, "test"));
 
-				var dataMap = mapper.mapFiles(formData, ATTACHMENTS_JSON);
+				var dataMap = mapper.mapFiles(formData, jsonFile);
 
 				assertThat(dataMap.getFormData()).doesNotContainKey(FormSolutionsRepresentationsMapper.PDF);
 			}
diff --git a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/VorgangRemoteService.java b/router/src/main/java/de/itvsh/kop/eingangsadapter/router/VorgangRemoteService.java
index d96f167c463d7fbbe7be31a74c7fb46c072c0192..120f865a8026aaa5330e803f8c6da3146eab89c9 100644
--- a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/VorgangRemoteService.java
+++ b/router/src/main/java/de/itvsh/kop/eingangsadapter/router/VorgangRemoteService.java
@@ -23,7 +23,6 @@
  */
 package de.itvsh.kop.eingangsadapter.router;
 
-import java.io.IOException;
 import java.io.InputStream;
 import java.util.List;
 import java.util.Optional;
@@ -32,6 +31,7 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 
+import org.apache.tomcat.util.http.fileupload.IOUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -171,15 +171,12 @@ public class VorgangRemoteService {
 				return streamFuture.get(10, TimeUnit.MINUTES);
 			} catch (InterruptedException e) {
 				Thread.currentThread().interrupt();
-				throw new TechnicalException(e.getMessage(), e);
+				throw new TechnicalException("Waiting for finishing upload was interrupted.", e);
 			} catch (ExecutionException | TimeoutException e) {
-				throw new TechnicalException(e.getMessage(), e);
+				streamFuture.cancel(true);
+				throw new TechnicalException("Error / Timeout on uploading data.", e);
 			} finally {
-				try {
-					fileContentStream.close();
-				} catch (IOException e) {
-					LOG.debug("Error closing fileContentStream", e);
-				}
+				IOUtils.closeQuietly(fileContentStream);
 			}
 		}