diff --git a/src/main/java/de/ozgcloud/xta/client/mapper/ResponseMapper.java b/src/main/java/de/ozgcloud/xta/client/mapper/ResponseMapper.java
index 215fdbff3514c178e77945aba58ca8daa0d66a62..8f317058e5db9e39c534f2615cec7ff592d3e5d7 100644
--- a/src/main/java/de/ozgcloud/xta/client/mapper/ResponseMapper.java
+++ b/src/main/java/de/ozgcloud/xta/client/mapper/ResponseMapper.java
@@ -51,6 +51,8 @@ public interface ResponseMapper {
 	@Mapping(target = "authorIdentifier", source = "originators.author.identifier")
 	@Mapping(target = "readerIdentifier", source = "destinations.reader.identifier")
 	@Mapping(target = "messageSize", source = "msgSize")
+	@Mapping(target = "deliveryAttributesOrigin", source = "deliveryAttributes.origin")
+	@Mapping(target = "deliveryAttributesDelivery", source = "deliveryAttributes.delivery")
 	XtaMessageMetaData mapXtaMessageMetaData(MessageMetaData messageMetaData);
 
 	@Named("mapBusinessScenarioCode")
@@ -83,7 +85,7 @@ public interface ResponseMapper {
 	XtaTransportReport mapXtaTransportReport(TransportReport transportReport);
 
 	default ZonedDateTime mapZonedDateTime(XMLGregorianCalendar xmlGregorianCalendar) {
-		return xmlGregorianCalendar.toGregorianCalendar().toZonedDateTime();
+		return xmlGregorianCalendar == null ? null : xmlGregorianCalendar.toGregorianCalendar().toZonedDateTime();
 	}
 
 	default XtaMessageStatus mapXtaMessageStatus(MessageStatusType statusType) {
diff --git a/src/main/java/de/ozgcloud/xta/client/model/XtaMessageMetaData.java b/src/main/java/de/ozgcloud/xta/client/model/XtaMessageMetaData.java
index 9e065b08b3111bed5483b48e9e74b9e6cad36057..6b38b6c4757b2fe3c86d8cbd03ad6c6b4d38baf3 100644
--- a/src/main/java/de/ozgcloud/xta/client/model/XtaMessageMetaData.java
+++ b/src/main/java/de/ozgcloud/xta/client/model/XtaMessageMetaData.java
@@ -1,6 +1,7 @@
 package de.ozgcloud.xta.client.model;
 
 import java.math.BigInteger;
+import java.time.ZonedDateTime;
 
 import jakarta.annotation.Nullable;
 import jakarta.validation.Valid;
@@ -26,7 +27,9 @@ import lombok.Builder;
  * @param messageId Unique identifier of the message. <p>The ID is generated by the server and thus not required when sending.</p>
  * @param authorIdentifier Identifier of the author of the message. <p>This field is required.</p>
  * @param readerIdentifier Identifier of the reader of the message. <p>This field is required.</p>
- * @param messageSize Size of the message in bytes. <p>The size is determined by the server an thus not required when sending.</p>
+ * @param messageSize Size of the message in bytes. <p>The size is determined by the server and thus not required when sending.</p>
+ * @param deliveryAttributesOrigin Timestamp when the message was sent. <p>This field is only set for received messages and not required when sending.</p>
+ * @param deliveryAttributesDelivery Timestamp when the message was delivered. <p>This field is only set for received messages and not required when sending.</p>
  */
 @Builder(toBuilder = true)
 public record XtaMessageMetaData(
@@ -39,9 +42,8 @@ public record XtaMessageMetaData(
 		@Nullable String messageId,
 		@NotNull @Valid XtaIdentifier authorIdentifier,
 		@NotNull @Valid XtaIdentifier readerIdentifier,
-		@Nullable @PositiveOrZero BigInteger messageSize
-		// TODO
-		// DeliveryAttributes.origin
-		// @Nullable ZonedDateTime deliveryAttributesOrigin;
+		@Nullable @PositiveOrZero BigInteger messageSize,
+		@Nullable ZonedDateTime deliveryAttributesOrigin,
+		@Nullable ZonedDateTime deliveryAttributesDelivery
 ) {
 }
diff --git a/src/main/java/de/ozgcloud/xta/client/xdomea/mapper/MetadataMapper.java b/src/main/java/de/ozgcloud/xta/client/xdomea/mapper/MetadataMapper.java
index 5d02ec81a0186c44be01e8bbdc098d6bb4505630..fcd254756fd2da9110deaa6b274b4c66395d02f2 100644
--- a/src/main/java/de/ozgcloud/xta/client/xdomea/mapper/MetadataMapper.java
+++ b/src/main/java/de/ozgcloud/xta/client/xdomea/mapper/MetadataMapper.java
@@ -45,6 +45,8 @@ public interface MetadataMapper {
 	@Mapping(target = "readerIdentifier", source = "readerIdSuffix", qualifiedByName = "mapReaderIdentifier")
 	@Mapping(target = "messageId", ignore = true)
 	@Mapping(target = "messageSize", ignore = true)
+	@Mapping(target = "deliveryAttributesOrigin", ignore = true)
+	@Mapping(target = "deliveryAttributesDelivery", ignore = true)
 	XtaMessageMetaData mapXtaMessageMetadata(XdomeaXmlValues xdomeaXmlValues);
 
 	@Named("getServiceByMessageTypeCode")
diff --git a/src/test/java/de/ozgcloud/xta/client/factory/MessageMetaDataTestFactory.java b/src/test/java/de/ozgcloud/xta/client/factory/MessageMetaDataTestFactory.java
index b3c069d6d8e5da3896c5e8b8dddc432dad88a180..71a9057474497663e09f534ff83d3b801aa9362a 100644
--- a/src/test/java/de/ozgcloud/xta/client/factory/MessageMetaDataTestFactory.java
+++ b/src/test/java/de/ozgcloud/xta/client/factory/MessageMetaDataTestFactory.java
@@ -2,7 +2,14 @@ package de.ozgcloud.xta.client.factory;
 
 import static de.ozgcloud.xta.client.mapper.RequestMapper.*;
 
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.XMLGregorianCalendar;
 import java.math.BigInteger;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
+import java.util.GregorianCalendar;
+
+import lombok.SneakyThrows;
 
 import de.ozgcloud.xta.client.gen.v3.eu.osci.ws.x2014.x10.transport.MessageMetaData;
 import de.ozgcloud.xta.client.gen.v3.eu.osci.ws.x2014.x10.transport.PartyIdentifierType;
@@ -39,6 +46,9 @@ public class MessageMetaDataTestFactory {
 
 	public static final BigInteger MESSAGE_SIZE = BigInteger.valueOf(1234);
 
+	public static final ZonedDateTime DELIVERY_ATTRIBUTES_ORIGIN_TIME = ZonedDateTime.of(2021, 1, 1, 12, 0, 0, 0, ZoneId.of("UTC"));
+	public static final ZonedDateTime DELIVERY_ATTRIBUTES_DELIVERY_TIME = ZonedDateTime.of(2021, 1, 1, 12, 5, 0, 0, ZoneId.of("UTC"));
+
 	public static MessageMetaData create() {
 		return createWithDefined(true);
 	}
@@ -48,6 +58,18 @@ public class MessageMetaDataTestFactory {
 
 	}
 
+	@SneakyThrows
+	public static MessageMetaData createWithDeliveryAttributes() {
+		final XMLGregorianCalendar deliveryAttributesOrigin = DatatypeFactory.newInstance()
+				.newXMLGregorianCalendar(GregorianCalendar.from(DELIVERY_ATTRIBUTES_ORIGIN_TIME));
+		final XMLGregorianCalendar deliveryAttributesDelivery = DatatypeFactory.newInstance()
+				.newXMLGregorianCalendar(GregorianCalendar.from(DELIVERY_ATTRIBUTES_DELIVERY_TIME));
+		var messageMetaData = createWithDefined(true);
+		messageMetaData.getDeliveryAttributes().setOrigin(deliveryAttributesOrigin);
+		messageMetaData.getDeliveryAttributes().setDelivery(deliveryAttributesDelivery);
+		return messageMetaData;
+	}
+
 	public static MessageMetaData create(String messageId, String messageType, BigInteger messageSize, boolean businessScenarioDefined) {
 		var messageMetaData = new MessageMetaData();
 
diff --git a/src/test/java/de/ozgcloud/xta/client/mapper/ResponseMapperTest.java b/src/test/java/de/ozgcloud/xta/client/mapper/ResponseMapperTest.java
index 9659845c1b848c37e50abd8d55164b214be0ccd2..2f040079782622876daee6cb507ca276f3ef0ee6 100644
--- a/src/test/java/de/ozgcloud/xta/client/mapper/ResponseMapperTest.java
+++ b/src/test/java/de/ozgcloud/xta/client/mapper/ResponseMapperTest.java
@@ -99,7 +99,7 @@ class ResponseMapperTest {
 	@Nested
 	class TestMapXtaMessageMeta {
 
-		private final MessageMetaData messageMetaData = MessageMetaDataTestFactory.create();
+		private final MessageMetaData messageMetaData = MessageMetaDataTestFactory.createWithDeliveryAttributes();
 
 		@DisplayName("should map message id")
 		@Test
@@ -189,6 +189,22 @@ class ResponseMapperTest {
 			assertThat(result.messageSize()).isEqualTo(MESSAGE_SIZE);
 		}
 
+		@DisplayName("should map delivery attributes origin")
+		@Test
+		void shouldMapDeliveryAttributesOrigin() {
+			var result = doMapping();
+
+			assertThat(result.deliveryAttributesOrigin()).isEqualTo(DELIVERY_ATTRIBUTES_ORIGIN_TIME);
+		}
+
+		@DisplayName("should map delivery attributes delivery")
+		@Test
+		void shouldMapDeliveryAttributesDelivery() {
+			var result = doMapping();
+
+			assertThat(result.deliveryAttributesDelivery()).isEqualTo(DELIVERY_ATTRIBUTES_DELIVERY_TIME);
+		}
+
 		private XtaMessageMetaData doMapping() {
 			return mapper.mapXtaMessageMetaData(messageMetaData);
 		}