diff --git a/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/DepositDataMapper.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/DepositDataMapper.java
index dd8a74b7d1f5b0c4065c745b5be3c66fb9217f70..61150c388c09f190d0388929da670b3ca9a2d0b9 100644
--- a/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/DepositDataMapper.java
+++ b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/DepositDataMapper.java
@@ -23,6 +23,7 @@
  */
 package de.ozgcloud.eingang.intelliform;
 
+import java.io.IOException;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
@@ -32,29 +33,55 @@ import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 import java.util.stream.Stream;
 
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
 import org.springframework.stereotype.Component;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
 
 import de.ozgcloud.common.binaryfile.TempFileUtils;
 import de.ozgcloud.eingang.common.errorhandling.TechnicalException;
 import de.ozgcloud.eingang.common.formdata.FormData;
 import de.ozgcloud.eingang.common.formdata.IncomingFile;
 import de.ozgcloud.eingang.common.formdata.IncomingFileGroup;
-import de.ozgcloud.eingang.common.xml.XMLHelper;
 import lombok.RequiredArgsConstructor;
 
 @Component
 @RequiredArgsConstructor
 class DepositDataMapper {
 
+	// TODO Resolve code duplication (xta-adapter: de.ozgcloud.eingang.xdomea.XMLHelper)
+	private static final DocumentBuilder DOCUMENT_BUILDER = createDocumentBuilder();
+
+	private static DocumentBuilder createDocumentBuilder() {
+		var documentBuilderFactory = DocumentBuilderFactory.newInstance();
+		try {
+			documentBuilderFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
+			return documentBuilderFactory.newDocumentBuilder();
+		} catch (ParserConfigurationException e) {
+			throw new TechnicalException("Failed to configure document builder", e);
+		}
+	}
+
 	public FormData mapToFormData(DepositData depositData) {
 		Map<String, IncomingFile> incomingFileMap = mapDepositAttachmentsToIncomingFiles(depositData);
 		Document document = parsePrimaryXmlRepresentation(depositData, incomingFileMap);
 		List<String> attachmentFileIds = findAttachmentFileIds(document);
-		var attachments = getAttachmentFileGroups(attachmentFileIds, incomingFileMap);
-		var representations = getRepresentations(incomingFileMap, attachmentFileIds);
+
+		return mapToFormDataWithRepresentationsAndAttachments(
+				getRepresentations(incomingFileMap, attachmentFileIds),
+				getAttachmentFileGroups(attachmentFileIds, incomingFileMap)
+		);
+	}
+
+	private FormData mapToFormDataWithRepresentationsAndAttachments(
+			List<IncomingFile> representations,
+			List<IncomingFileGroup> attachments
+	) {
 		return FormData.builder()
 				.attachments(attachments)
 				.numberOfAttachments(attachments.size())
@@ -85,11 +112,19 @@ class DepositDataMapper {
 
 	private Document parsePrimaryXmlRepresentation(DepositData depositData, Map<String, IncomingFile> incomingFileMap) {
 		// Expect that the <primaryDataAttachmentId> refers to the XML file
-		return XMLHelper.parseDocument(
+		return parseDocument(
 				getIncomingFileById(depositData.getPrimaryDataAttachmentId(), incomingFileMap)
 		);
 	}
 
+	private static Document parseDocument(IncomingFile incomingFile) {
+		try (var inputStream = incomingFile.getContentStream()) {
+			return DOCUMENT_BUILDER.parse(inputStream);
+		} catch (SAXException | IOException e) {
+			throw new TechnicalException("Failed to parse xml document!", e);
+		}
+	}
+
 	private List<String> findAttachmentFileIds(Document document) {
 		return streamElements(document.getElementsByTagName("file"))
 				.map(element -> element.getAttribute("id"))
diff --git a/common/src/main/java/de/ozgcloud/eingang/common/xml/XMLHelper.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XMLHelper.java
similarity index 98%
rename from common/src/main/java/de/ozgcloud/eingang/common/xml/XMLHelper.java
rename to xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XMLHelper.java
index ba8d658736acd922bfdcb586c76284282b3bb8c3..1eb09f2e7a2fd4e6b194e855f40ea50e110dc044 100644
--- a/common/src/main/java/de/ozgcloud/eingang/common/xml/XMLHelper.java
+++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XMLHelper.java
@@ -1,4 +1,4 @@
-package de.ozgcloud.eingang.common.xml;
+package de.ozgcloud.eingang.xdomea;
 
 import java.io.IOException;
 
diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaXMLValueReader.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaXMLValueReader.java
index f0fc982a33fc939726023ff751d36873e811b105..8408c70c76662633d4ee31716ef2c8b6fad904ee 100644
--- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaXMLValueReader.java
+++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaXMLValueReader.java
@@ -1,6 +1,6 @@
 package de.ozgcloud.eingang.xdomea;
 
-import static de.ozgcloud.eingang.common.xml.XMLHelper.*;
+import static de.ozgcloud.eingang.xdomea.XMLHelper.*;
 
 import java.util.List;
 import java.util.stream.IntStream;
@@ -17,7 +17,6 @@ import org.w3c.dom.NodeList;
 
 import de.ozgcloud.eingang.common.errorhandling.TechnicalException;
 import de.ozgcloud.eingang.common.formdata.IncomingFile;
-import de.ozgcloud.eingang.common.xml.XMLHelper;
 
 @Component
 public class XdomeaXMLValueReader {