diff --git a/src/main/java/de/ozgcloud/eingang/intelliform/DepositDataMapper.java b/src/main/java/de/ozgcloud/eingang/intelliform/DepositDataMapper.java
index f4b42d22220e907979e96ccdc21b684084ef0ac7..34e09920fcc5620a2f1edc3dd4dd459f24687e33 100644
--- a/src/main/java/de/ozgcloud/eingang/intelliform/DepositDataMapper.java
+++ b/src/main/java/de/ozgcloud/eingang/intelliform/DepositDataMapper.java
@@ -30,6 +30,7 @@ import java.util.Collection;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.Set;
 import java.util.UUID;
 import java.util.stream.Collectors;
@@ -49,6 +50,7 @@ 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.FormData.FormDataControl;
 import de.ozgcloud.eingang.common.formdata.IncomingFile;
 import de.ozgcloud.eingang.common.formdata.IncomingFileGroup;
 import lombok.RequiredArgsConstructor;
@@ -57,7 +59,8 @@ import lombok.RequiredArgsConstructor;
 @RequiredArgsConstructor
 class DepositDataMapper {
 
-	// TODO Resolve code duplication (xta-adapter: de.ozgcloud.eingang.xdomea.XMLHelper)
+	// TODO Resolve code duplication (xta-adapter:
+	// de.ozgcloud.eingang.xdomea.XMLHelper)
 	private static final DocumentBuilder DOCUMENT_BUILDER = createDocumentBuilder();
 
 	private static DocumentBuilder createDocumentBuilder() {
@@ -75,10 +78,13 @@ class DepositDataMapper {
 		var document = parsePrimaryXmlRepresentation(depositData, incomingFileMap);
 		var attachmentGroups = findAttachmentGroups(document);
 
-		return mapToFormDataWithRepresentationsAndAttachments(
+		var formData = mapToFormDataWithRepresentationsAndAttachments(
 				getRepresentations(incomingFileMap, getAttachmentFileIds(attachmentGroups)),
-				getAttachmentFileGroups(attachmentGroups, incomingFileMap)
-		);
+				getAttachmentFileGroups(attachmentGroups, incomingFileMap));
+
+		return formData.toBuilder()
+				.control(FormDataControl.builder().metaData(Optional.of(buildMetaData(depositData))).build())
+				.build();
 	}
 
 	private List<String> getAttachmentFileIds(Map<String, List<String>> attachmentGroups) {
@@ -89,8 +95,7 @@ class DepositDataMapper {
 
 	private FormData mapToFormDataWithRepresentationsAndAttachments(
 			List<IncomingFile> representations,
-			List<IncomingFileGroup> attachments
-	) {
+			List<IncomingFileGroup> attachments) {
 		return FormData.builder()
 				.attachments(attachments)
 				.numberOfAttachments(attachments.size())
@@ -131,8 +136,7 @@ class DepositDataMapper {
 	private Document parsePrimaryXmlRepresentation(DepositData depositData, Map<String, IncomingFile> incomingFileMap) {
 		// Expect that the <primaryDataAttachmentId> refers to the XML file
 		return parseDocument(
-				getIncomingFileById(depositData.getPrimaryDataAttachmentId(), incomingFileMap)
-		);
+				getIncomingFileById(depositData.getPrimaryDataAttachmentId(), incomingFileMap));
 	}
 
 	private static Document parseDocument(IncomingFile incomingFile) {
@@ -185,4 +189,13 @@ class DepositDataMapper {
 				.map(Element.class::cast);
 	}
 
+	IntelliFormMetaData buildMetaData(DepositData depositData) {
+		var builder = IntelliFormMetaData.builder().origin(depositData.getTimestamp().toGregorianCalendar().toZonedDateTime());
+
+		depositData.getCustomParameters()
+				.forEach(entry -> builder.customParameter(IntelliFormMetaData.CUSTOM_PARAM_PREFIX + entry.key.toUpperCase(), entry.value));
+
+		return builder.build();
+	}
+
 }
diff --git a/src/main/java/de/ozgcloud/eingang/intelliform/IntelliFormMetaData.java b/src/main/java/de/ozgcloud/eingang/intelliform/IntelliFormMetaData.java
new file mode 100644
index 0000000000000000000000000000000000000000..3e8732b9f78a989969a489dd037147e40fd1d06c
--- /dev/null
+++ b/src/main/java/de/ozgcloud/eingang/intelliform/IntelliFormMetaData.java
@@ -0,0 +1,31 @@
+package de.ozgcloud.eingang.intelliform;
+
+import java.time.ZonedDateTime;
+import java.util.Map;
+
+import de.ozgcloud.eingang.common.formdata.FormMetaData;
+import lombok.AccessLevel;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.Singular;
+
+@Builder
+@Getter
+class IntelliFormMetaData implements FormMetaData {
+
+	private final ZonedDateTime origin;
+	@Builder.Default
+	private final ZonedDateTime delivery = ZonedDateTime.now();
+
+	static final String CUSTOM_PARAM_PREFIX = "CUSTOMPARAMETER_";
+
+	@Singular
+	@Getter(AccessLevel.NONE)
+	private Map<String, String> customParameters;
+
+	@Override
+	public String getEntry(String name) {
+		return customParameters.get(name);
+	}
+
+}
\ No newline at end of file
diff --git a/src/test/java/de/ozgcloud/eingang/intelliform/DepositDataMapperTest.java b/src/test/java/de/ozgcloud/eingang/intelliform/DepositDataMapperTest.java
index 14e6051660099f272547fd68a7ec71fe265422e5..d79547b271ed4fca0afd96bc71549dbac2f3b608 100644
--- a/src/test/java/de/ozgcloud/eingang/intelliform/DepositDataMapperTest.java
+++ b/src/test/java/de/ozgcloud/eingang/intelliform/DepositDataMapperTest.java
@@ -27,11 +27,14 @@ import static de.ozgcloud.eingang.intelliform.AttachmentTestFactory.*;
 import static de.ozgcloud.eingang.intelliform.DepositDataTestFactory.*;
 import static java.util.Collections.*;
 import static org.assertj.core.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
 
 import java.io.IOException;
 import java.io.StringReader;
 import java.nio.charset.Charset;
+import java.time.ZonedDateTime;
+import java.time.temporal.ChronoUnit;
 import java.util.List;
 
 import javax.xml.parsers.DocumentBuilderFactory;
@@ -53,6 +56,7 @@ 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.intelliform.AttachmentTestFactory.MetaAttachment;
 import lombok.SneakyThrows;
 
 class DepositDataMapperTest {
@@ -147,8 +151,7 @@ class DepositDataMapperTest {
 						withEmptyName(createPdf()),
 						createPdf(),
 						withEmptyName(createPng()),
-						createPng()
-				));
+						createPng()));
 			}
 
 			private Attachment withEmptyName(Attachment attachment) {
@@ -211,8 +214,7 @@ class DepositDataMapperTest {
 				assertThat(incomingFileIds).containsExactly(
 						XML_ATTACHMENT_ID,
 						XML_ROHFORM_ATTACHMENT_ID,
-						XML_ORIGINALFORM_ATTACHMENT_ID
-				);
+						XML_ORIGINALFORM_ATTACHMENT_ID);
 			}
 
 			@DisplayName("should return with attachment groups")
@@ -237,8 +239,7 @@ class DepositDataMapperTest {
 						PDF2_ATTACHMENT_ID,
 						ODT_ATTACHMENT_ID,
 						JPG_ATTACHMENT_ID,
-						PNG_ATTACHMENT_ID
-				);
+						PNG_ATTACHMENT_ID);
 			}
 		}
 
@@ -255,6 +256,15 @@ class DepositDataMapperTest {
 			}
 		}
 
+		@Test
+		void shouldAddMetaData() {
+			depositData = DepositDataTestFactory.create();
+
+			doMapping();
+
+			verify(mapper).buildMetaData(any());
+		}
+
 		private FormData doMapping() {
 			return mapper.mapToFormData(depositData);
 		}
@@ -295,12 +305,10 @@ class DepositDataMapperTest {
 							.name("XML-Daten (Rohform).xml")
 							.contentType(XML_CONTENT_TYPE)
 							.content("abc")
-							.build()
-					),
+							.build()),
 					AttachmentTestFactory.createPdf(),
 					AttachmentTestFactory.createXmlDaten(),
-					AttachmentTestFactory.createPng()
-			));
+					AttachmentTestFactory.createPng()));
 
 			var incomingFileMap = mapper.mapDepositAttachmentsToSortedIncomingFiles(depositData);
 
@@ -314,8 +322,7 @@ class DepositDataMapperTest {
 			var depositData = DepositDataTestFactory.create(List.of(
 					AttachmentTestFactory.createXmlDaten(),
 					AttachmentTestFactory.createPdf(),
-					AttachmentTestFactory.createXmlDaten()
-			));
+					AttachmentTestFactory.createXmlDaten()));
 
 			var incomingFileMap = mapper.mapDepositAttachmentsToSortedIncomingFiles(depositData);
 
@@ -445,4 +452,29 @@ class DepositDataMapperTest {
 		}
 	}
 
+	@Nested
+	class TestCreateMetaData {
+
+		@Test
+		void shouldHaveOrigin() {
+			var metaData = mapper.buildMetaData(DepositDataTestFactory.create());
+
+			assertThat(metaData.getOrigin()).isEqualTo(DepositDataTestFactory.TIMESTAMP_DATETIME);
+		}
+
+		@Test
+		void shouldHaveDelivery() {
+			var metaData = mapper.buildMetaData(DepositDataTestFactory.create());
+
+			assertThat(metaData.getDelivery()).isCloseTo(ZonedDateTime.now(), within(1, ChronoUnit.SECONDS));
+		}
+
+		@Test
+		void shouldHaveCustomParameter() {
+			var metaData = mapper.buildMetaData(DepositDataTestFactory.create());
+
+			assertThat(metaData.getEntry("CUSTOMPARAMETER_PARAM_KEY")).isEqualTo(DepositDataTestFactory.CUTOMPARA_VALUE);
+		}
+	}
+
 }
diff --git a/src/test/java/de/ozgcloud/eingang/intelliform/DepositDataTestFactory.java b/src/test/java/de/ozgcloud/eingang/intelliform/DepositDataTestFactory.java
index e6382bf2009f146b5fa4c176a8caa8c0f632d338..2486984f0675861a02b26cff179a1e817ff8b376 100644
--- a/src/test/java/de/ozgcloud/eingang/intelliform/DepositDataTestFactory.java
+++ b/src/test/java/de/ozgcloud/eingang/intelliform/DepositDataTestFactory.java
@@ -26,20 +26,37 @@ package de.ozgcloud.eingang.intelliform;
 import static de.ozgcloud.eingang.intelliform.AttachmentTestFactory.*;
 
 import java.time.Instant;
+import java.time.ZonedDateTime;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.XMLGregorianCalendar;
+
 import de.ozgcloud.common.test.TestUtils;
 
 public class DepositDataTestFactory {
 
+	static final String TIMESTAMP_STRING = "2024-12-03T07:49:46.969+01:00";
+	public static final XMLGregorianCalendar TIMESTAMP = DatatypeFactory.newDefaultInstance().newXMLGregorianCalendar(TIMESTAMP_STRING);
+	public static final ZonedDateTime TIMESTAMP_DATETIME = ZonedDateTime.parse(TIMESTAMP_STRING);
+	public static final String CUSTOMPARA_KEY = "param_key";
+	public static final String CUTOMPARA_VALUE = "param_value";
+	private static final Entry CUSTOMPARA_ENTRY;
+
+	static {
+		var entry = new Entry();
+		entry.setKey(CUSTOMPARA_KEY);
+		entry.setValue(CUTOMPARA_VALUE);
+		CUSTOMPARA_ENTRY = entry;
+	}
+
 	public static final List<Attachment> ATTACHMENTS = List.of(
 			AttachmentTestFactory.createXmlDaten(),
 			AttachmentTestFactory.createPdf(),
-			AttachmentTestFactory.createPng()
-	);
+			AttachmentTestFactory.createPng());
 
 	public static final List<Attachment> MANY_ATTACHMENTS = createManyAttachments(
 			TestUtils.loadTextFile("intelliform/XML-Daten-complex.template.xml"),
@@ -52,8 +69,7 @@ public class DepositDataTestFactory {
 					"anrede_code", ANTRAGSTELLER_ANREDE_CODE,
 					"antragsteller_nachname", ANTRAGSTELLER_NACHNAME,
 					"antragsteller_vorname", "Max",
-					"antragsteller_email", "max.mustermann@example.com"
-			),
+					"antragsteller_email", "max.mustermann@example.com"),
 			DOCX1_ATTACHMENT_ID, "Document1.docx", DOCX_ATTACHMENT_CONTENT_TYPE, DOCX_ATTACHMENT_CONTENT, "fileid-docx1",
 			PDF_ATTACHMENT_ID, "Document2.pdf", PDF_ATTACHMENT_CONTENT_TYPE, PDF_ATTACHMENT_CONTENT, "fileid-pdf1",
 			DOCX2_ATTACHMENT_ID, "Document3.docx", DOCX_ATTACHMENT_CONTENT_TYPE, DOCX_ATTACHMENT_CONTENT, "fileid-docx2",
@@ -68,8 +84,14 @@ public class DepositDataTestFactory {
 			JPG_ATTACHMENT_ID, "Document11.jpg", "image/jpeg", "TestContent6", "fileid-jpg1",
 			PNG_ATTACHMENT_ID, "Document12.png", "image/png", "TestContent7", "fileid-png1");
 
+	public static DepositData create() {
+		return create(ATTACHMENTS);
+	}
+
 	public static DepositData create(Collection<Attachment> attachments) {
 		var depositData = new DepositData();
+		depositData.setTimestamp(TIMESTAMP);
+		depositData.getCustomParameters().add(CUSTOMPARA_ENTRY);
 		depositData.setPrimaryDataAttachmentId(AttachmentTestFactory.XML_ATTACHMENT_ID);
 		depositData.getAttachments().addAll(attachments);
 		return depositData;