diff --git a/api/pom.xml b/api/pom.xml
index aefd16a137f468ce58cd0614bc8bdbb792556669..abd1e29fae8b72f35aa77c2f31f2c2c73445a7f9 100644
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -29,6 +29,14 @@
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
         </dependency>
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-classic</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
     </dependencies>
 
 </project>
\ No newline at end of file
diff --git a/api/src/main/java/dev/fitko/fitconnect/api/domain/sender/ReceivedReply.java b/api/src/main/java/dev/fitko/fitconnect/api/domain/sender/ReceivedReply.java
index 496d7e836d3d50e8248a31869c22c3659ea0c161..afa115711583d3d01b0638f08bfa1aa8ae586f95 100644
--- a/api/src/main/java/dev/fitko/fitconnect/api/domain/sender/ReceivedReply.java
+++ b/api/src/main/java/dev/fitko/fitconnect/api/domain/sender/ReceivedReply.java
@@ -2,12 +2,10 @@ package dev.fitko.fitconnect.api.domain.sender;
 
 import dev.fitko.fitconnect.api.FitConnectService;
 import dev.fitko.fitconnect.api.domain.model.attachment.Attachment;
-import dev.fitko.fitconnect.api.domain.model.event.authtags.AuthenticationTags;
 import dev.fitko.fitconnect.api.domain.model.event.problems.Problem;
 import dev.fitko.fitconnect.api.domain.model.metadata.Metadata;
 import dev.fitko.fitconnect.api.domain.model.reply.AcceptReply;
-import dev.fitko.fitconnect.api.domain.model.reply.Reply;
-import dev.fitko.fitconnect.api.domain.subscriber.ReceivedData;
+import dev.fitko.fitconnect.api.domain.subscriber.ReceivedReplyData;
 
 import java.net.URI;
 import java.util.Arrays;
@@ -17,28 +15,19 @@ import java.util.UUID;
 public class ReceivedReply {
 
     private final transient FitConnectService fitConnectService;
-    private final Reply reply;
-    private final ReceivedData receivedData;
-    private final Metadata metadata;
-    private final List<Attachment> attachments;
-    private final AuthenticationTags authenticationTags;
+    private final ReceivedReplyData receivedReplyData;
 
-
-    public ReceivedReply(final FitConnectService fitConnectService, final Reply reply, final ReceivedData receivedData, final Metadata metadata, final List<Attachment> attachments, final AuthenticationTags authenticationTags) {
+    public ReceivedReply(final FitConnectService fitConnectService, ReceivedReplyData receivedReplyData) {
         this.fitConnectService = fitConnectService;
-        this.reply = reply;
-        this.receivedData = receivedData;
-        this.metadata = metadata;
-        this.attachments = attachments;
-        this.authenticationTags = authenticationTags;
+        this.receivedReplyData = receivedReplyData;
     }
 
     public void acceptReply(final Problem... problems) {
-        fitConnectService.acceptReply(reply.getReplyId(), new AcceptReply(Arrays.asList(problems), authenticationTags));
+        fitConnectService.acceptReply(receivedReplyData.getReply().getReplyId(), new AcceptReply(Arrays.asList(problems), receivedReplyData.getAuthenticationTags()));
     }
 
     public void rejectReply(final List<Problem> problems) {
-        fitConnectService.rejectReply(reply.getReplyId(), problems);
+        fitConnectService.rejectReply(receivedReplyData.getReply().getReplyId(), problems);
     }
 
     /**
@@ -47,7 +36,7 @@ public class ReceivedReply {
      * @return data as string
      */
     public String getDataAsString() {
-        return receivedData.getData();
+        return receivedReplyData.getData();
     }
 
     /**
@@ -56,7 +45,7 @@ public class ReceivedReply {
      * @return mimetype string
      */
     public String getDataMimeType() {
-        return receivedData.getMimeType().value();
+        return receivedReplyData.getMetadata().getContentStructure().getData().getSubmissionSchema().getMimeType().value();
     }
 
     /**
@@ -65,7 +54,7 @@ public class ReceivedReply {
      * @return data schema as URI
      */
     public URI getDataSchemaUri() {
-        return metadata.getContentStructure().getData().getSubmissionSchema().getSchemaUri();
+        return receivedReplyData.getMetadata().getContentStructure().getData().getSubmissionSchema().getSchemaUri();
     }
 
     /**
@@ -74,7 +63,7 @@ public class ReceivedReply {
      * @return list of {@link Attachment}
      */
     public List<Attachment> getAttachments() {
-        return attachments;
+        return receivedReplyData.getAttachments();
     }
 
     /**
@@ -83,7 +72,7 @@ public class ReceivedReply {
      * @return metadata
      */
     public Metadata getMetadata() {
-        return metadata;
+        return receivedReplyData.getMetadata();
     }
 
     /**
@@ -92,7 +81,7 @@ public class ReceivedReply {
      * @return caseId as UUID
      */
     public UUID getCaseId() {
-        return reply.getCaseId();
+        return receivedReplyData.getReply().getCaseId();
     }
 
     /**
@@ -101,6 +90,6 @@ public class ReceivedReply {
      * @return replyId as UUID
      */
     public UUID getReplyId() {
-        return reply.getReplyId();
+        return receivedReplyData.getReply().getReplyId();
     }
 }
diff --git a/api/src/main/java/dev/fitko/fitconnect/api/domain/sender/SendableReply.java b/api/src/main/java/dev/fitko/fitconnect/api/domain/sender/SendableReply.java
index df23f86e737652e35835212df31421eec26aa592..a85899e3cbb97065fe393b5d480b3efa5b9413eb 100644
--- a/api/src/main/java/dev/fitko/fitconnect/api/domain/sender/SendableReply.java
+++ b/api/src/main/java/dev/fitko/fitconnect/api/domain/sender/SendableReply.java
@@ -2,6 +2,7 @@ package dev.fitko.fitconnect.api.domain.sender;
 
 import dev.fitko.fitconnect.api.domain.model.attachment.Attachment;
 import dev.fitko.fitconnect.api.domain.model.callback.Callback;
+import dev.fitko.fitconnect.api.domain.model.metadata.AdditionalReferenceInfo;
 import dev.fitko.fitconnect.api.domain.model.metadata.AuthenticationInformation;
 import dev.fitko.fitconnect.api.domain.model.metadata.data.MimeType;
 import dev.fitko.fitconnect.api.domain.model.metadata.data.SubmissionSchema;
@@ -31,6 +32,7 @@ public final class SendableReply {
     private final String serviceName;
     private final String serviceIdentifier;
     private final List<AuthenticationInformation> authenticationInformation;
+    private final AdditionalReferenceInfo additionalReferenceInfo;
     private final PaymentInformation paymentInformation;
     private final ReplyChannel replyChannel;
     private final Callback callback;
@@ -45,6 +47,7 @@ public final class SendableReply {
         serviceName = builder.getServiceName();
         serviceIdentifier = builder.getServiceIdentifier();
         authenticationInformation = builder.getAuthenticationInformation();
+        additionalReferenceInfo = builder.getAdditionalReferenceInfo();
         replyChannel = builder.getReplyChannel();
         paymentInformation = builder.getPaymentInformation();
         callback = builder.getCallback();
@@ -68,6 +71,7 @@ public final class SendableReply {
         private final List<AuthenticationInformation> authenticationInformation;
         private final PaymentInformation paymentInformation;
         private final ReplyChannel replyChannel;
+        private final AdditionalReferenceInfo additionalReferenceInfo;
         private URI schemaUri;
         private final Callback callback;
 
@@ -81,6 +85,7 @@ public final class SendableReply {
             replyChannel = receivedSubmission.getMetadata().getReplyChannel();
             authenticationInformation = receivedSubmission.getMetadata().getAuthenticationInformation();
             paymentInformation = receivedSubmission.getMetadata().getPaymentInformation();
+            additionalReferenceInfo = receivedSubmission.getMetadata().getAdditionalReferenceInfo();
         }
 
         public OptionalReplyPropertiesStep setJsonData(final String replyData, final URI replyDataSchemaUri) {
diff --git a/api/src/main/java/dev/fitko/fitconnect/api/domain/sender/SendableSubmission.java b/api/src/main/java/dev/fitko/fitconnect/api/domain/sender/SendableSubmission.java
index 39ee2c2a99886ad0a53bf61f4b019f0b9f6c6e5f..c3578379bcf025f2e737c26ed83712bf00a61347 100644
--- a/api/src/main/java/dev/fitko/fitconnect/api/domain/sender/SendableSubmission.java
+++ b/api/src/main/java/dev/fitko/fitconnect/api/domain/sender/SendableSubmission.java
@@ -36,10 +36,10 @@ public final class SendableSubmission {
     private final String serviceName;
     private final String serviceIdentifier;
     private final List<AuthenticationInformation> authenticationInformation;
+    private final AdditionalReferenceInfo additionalReferenceInfo;
     private final PaymentInformation paymentInformation;
     private final ReplyChannel replyChannel;
     private final Callback callback;
-    private final AdditionalReferenceInfo additionalReferenceInfo;
 
     private SendableSubmission(final Builder builder) {
         destinationId = builder.getDestinationId();
diff --git a/api/src/main/java/dev/fitko/fitconnect/api/domain/sender/steps/unencrypted/OptionalPropertiesStep.java b/api/src/main/java/dev/fitko/fitconnect/api/domain/sender/steps/unencrypted/OptionalPropertiesStep.java
index ef4cd2b180eb152f4bfa11bd36de9851771ea90d..330db5c042cd82df778df4027f8c5fece98eec53 100644
--- a/api/src/main/java/dev/fitko/fitconnect/api/domain/sender/steps/unencrypted/OptionalPropertiesStep.java
+++ b/api/src/main/java/dev/fitko/fitconnect/api/domain/sender/steps/unencrypted/OptionalPropertiesStep.java
@@ -8,6 +8,7 @@ import dev.fitko.fitconnect.api.domain.model.attachment.Attachment;
 import dev.fitko.fitconnect.api.domain.sender.SendableSubmission;
 
 import java.net.URI;
+import java.time.LocalDate;
 import java.util.List;
 import java.util.UUID;
 
@@ -64,6 +65,15 @@ public interface OptionalPropertiesStep {
      */
     OptionalPropertiesStep setPaymentInformation(PaymentInformation paymentInformation);
 
+    /**
+     * Sets the application date when the submission was handed in.
+     * This date can differ from the technical date the submission was sent via FIT-Connect.
+     *
+     * @return next step to set more additional properties
+     */
+    OptionalPropertiesStep setApplicationDate(LocalDate applicationDate);
+
+
     /**
      * Set {@link Callback} to be informed about submission status updates asynchronous without polling.
      *
diff --git a/api/src/main/java/dev/fitko/fitconnect/api/domain/subscriber/ReceivedReplyData.java b/api/src/main/java/dev/fitko/fitconnect/api/domain/subscriber/ReceivedReplyData.java
new file mode 100644
index 0000000000000000000000000000000000000000..63d5bdcab94e2c545c32c52005629f2475daffbb
--- /dev/null
+++ b/api/src/main/java/dev/fitko/fitconnect/api/domain/subscriber/ReceivedReplyData.java
@@ -0,0 +1,18 @@
+package dev.fitko.fitconnect.api.domain.subscriber;
+
+import dev.fitko.fitconnect.api.domain.model.attachment.Attachment;
+import dev.fitko.fitconnect.api.domain.model.event.authtags.AuthenticationTags;
+import dev.fitko.fitconnect.api.domain.model.metadata.Metadata;
+import dev.fitko.fitconnect.api.domain.model.reply.Reply;
+import lombok.Value;
+
+import java.util.List;
+
+@Value
+public class ReceivedReplyData {
+    String data;
+    Metadata metadata;
+    Reply reply;
+    List<Attachment> attachments;
+    AuthenticationTags authenticationTags;
+}
\ No newline at end of file
diff --git a/api/src/main/java/dev/fitko/fitconnect/api/domain/subscriber/ReceivedSubmission.java b/api/src/main/java/dev/fitko/fitconnect/api/domain/subscriber/ReceivedSubmission.java
index c576b6a281e369d9b9f021f28480100705b3dde8..08b723224ff0007473ef8b9ab789ba03be6e5511 100644
--- a/api/src/main/java/dev/fitko/fitconnect/api/domain/subscriber/ReceivedSubmission.java
+++ b/api/src/main/java/dev/fitko/fitconnect/api/domain/subscriber/ReceivedSubmission.java
@@ -5,40 +5,31 @@ import dev.fitko.fitconnect.api.domain.model.attachment.Attachment;
 import dev.fitko.fitconnect.api.domain.model.callback.Callback;
 import dev.fitko.fitconnect.api.domain.model.event.Event;
 import dev.fitko.fitconnect.api.domain.model.event.EventPayload;
-import dev.fitko.fitconnect.api.domain.model.event.SubmissionStatus;
 import dev.fitko.fitconnect.api.domain.model.event.problems.Problem;
 import dev.fitko.fitconnect.api.domain.model.metadata.Metadata;
 import dev.fitko.fitconnect.api.domain.model.submission.ServiceType;
 import dev.fitko.fitconnect.api.exceptions.client.FitConnectSubscriberException;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.net.URI;
 import java.time.LocalDate;
-import java.time.format.DateTimeFormatter;
 import java.time.format.DateTimeParseException;
 import java.util.Date;
 import java.util.List;
 import java.util.Optional;
 import java.util.UUID;
 
-import static dev.fitko.fitconnect.api.domain.model.event.EventPayload.forRejectEvent;
-import static dev.fitko.fitconnect.api.domain.model.event.EventPayload.forAcceptEvent;
-import static dev.fitko.fitconnect.api.domain.model.event.EventPayload.forAcceptEventWithAttachments;
 import static dev.fitko.fitconnect.api.domain.model.event.EventPayload.forRejectEvent;
 
-@Builder
-@AllArgsConstructor
 public class ReceivedSubmission implements Comparable<ReceivedSubmission> {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(ReceivedSubmission.class);
 
     private final transient FitConnectService subscriber;
-    private final ReceivedData receivedData;
+    private final ReceivedSubmissionData receivedData;
 
-    public ReceivedSubmission(final Subscriber subscriber, ReceivedData receivedData) {
+    public ReceivedSubmission(final FitConnectService subscriber, ReceivedSubmissionData receivedData) {
         this.subscriber = subscriber;
         this.receivedData = receivedData;
     }
@@ -189,7 +180,7 @@ public class ReceivedSubmission implements Comparable<ReceivedSubmission> {
      * @return callback
      */
     public Callback getCallback() {
-        return submission.getCallback();
+        return receivedData.getSubmission().getCallback();
     }
 
     /**
@@ -198,7 +189,7 @@ public class ReceivedSubmission implements Comparable<ReceivedSubmission> {
      * @return timestamp as {@link Date}
      */
     public Date getSubmittedAt() {
-        return submitState.getIssuedAt();
+        return receivedData.getSubmissionStatus().getIssuedAt();
     }
 
     private EventPayload getEventPayload(final Problem[] problems) {
diff --git a/api/src/main/java/dev/fitko/fitconnect/api/domain/subscriber/ReceivedData.java b/api/src/main/java/dev/fitko/fitconnect/api/domain/subscriber/ReceivedSubmissionData.java
similarity index 66%
rename from api/src/main/java/dev/fitko/fitconnect/api/domain/subscriber/ReceivedData.java
rename to api/src/main/java/dev/fitko/fitconnect/api/domain/subscriber/ReceivedSubmissionData.java
index a5d202fea9fd38f8bdc159672929de45e356cd4a..377c2560ab18303d7bbb13f0de67f59b592f343c 100644
--- a/api/src/main/java/dev/fitko/fitconnect/api/domain/subscriber/ReceivedData.java
+++ b/api/src/main/java/dev/fitko/fitconnect/api/domain/subscriber/ReceivedSubmissionData.java
@@ -1,8 +1,9 @@
 package dev.fitko.fitconnect.api.domain.subscriber;
 
+import dev.fitko.fitconnect.api.domain.model.attachment.Attachment;
+import dev.fitko.fitconnect.api.domain.model.event.SubmissionStatus;
 import dev.fitko.fitconnect.api.domain.model.metadata.Metadata;
 import dev.fitko.fitconnect.api.domain.model.submission.Submission;
-import dev.fitko.fitconnect.client.sender.model.Attachment;
 import lombok.Value;
 
 import java.util.List;
@@ -10,10 +11,11 @@ import java.util.Map;
 import java.util.UUID;
 
 @Value
-public class ReceivedData {
+public class ReceivedSubmissionData {
     String data;
     Metadata metadata;
     Submission submission;
+    SubmissionStatus submissionStatus;
     List<Attachment> attachments;
     Map<UUID, String> encryptedAttachments;
-}
+}
\ No newline at end of file
diff --git a/client/src/main/java/dev/fitko/fitconnect/client/sender/ReplyReceiver.java b/client/src/main/java/dev/fitko/fitconnect/client/sender/ReplyReceiver.java
index e9db9cef45c15b0a18cb3a44ff6cc4bb67a8a98f..1948fd24a9af8e66b0ea64469e59a10507487f24 100644
--- a/client/src/main/java/dev/fitko/fitconnect/client/sender/ReplyReceiver.java
+++ b/client/src/main/java/dev/fitko/fitconnect/client/sender/ReplyReceiver.java
@@ -18,10 +18,9 @@ import dev.fitko.fitconnect.api.domain.model.event.problems.submission.NotExactl
 import dev.fitko.fitconnect.api.domain.model.metadata.Metadata;
 import dev.fitko.fitconnect.api.domain.model.metadata.attachment.ApiAttachment;
 import dev.fitko.fitconnect.api.domain.model.metadata.attachment.AttachmentForValidation;
-import dev.fitko.fitconnect.api.domain.model.metadata.data.MimeType;
 import dev.fitko.fitconnect.api.domain.model.reply.Reply;
 import dev.fitko.fitconnect.api.domain.sender.ReceivedReply;
-import dev.fitko.fitconnect.api.domain.subscriber.ReceivedData;
+import dev.fitko.fitconnect.api.domain.subscriber.ReceivedReplyData;
 import dev.fitko.fitconnect.api.domain.validation.ValidationResult;
 import dev.fitko.fitconnect.api.exceptions.client.FitConnectReplyException;
 import dev.fitko.fitconnect.api.exceptions.internal.AuthenticationTagsEmptyException;
@@ -142,10 +141,10 @@ public class ReplyReceiver {
     }
 
     private ReceivedReply buildReceivedReply(final Reply reply, final Metadata metadata, final byte[] decryptedData, final List<AttachmentForValidation> attachments, final AuthenticationTags authenticationTags) {
-        final MimeType mimeType = metadata.getContentStructure().getData().getSubmissionSchema().getMimeType();
-        final ReceivedData receivedData = new ReceivedData(new String(decryptedData, StandardCharsets.UTF_8), mimeType);
+        final String data = new String(decryptedData, StandardCharsets.UTF_8);
         final List<Attachment> receivedAttachments = attachments.stream().map(this::toApiAttachment).collect(Collectors.toList());
-        return new ReceivedReply(fitConnectService, reply, receivedData, metadata, receivedAttachments, authenticationTags);
+        final ReceivedReplyData receivedData = new ReceivedReplyData(data, metadata, reply, receivedAttachments, authenticationTags );
+        return new ReceivedReply(fitConnectService, receivedData);
     }
 
     private Attachment toApiAttachment(final AttachmentForValidation attachment) {
diff --git a/client/src/main/java/dev/fitko/fitconnect/client/sender/SubmissionSender.java b/client/src/main/java/dev/fitko/fitconnect/client/sender/SubmissionSender.java
index 37c81d821897fd11affe3ad3ef784d39ff31dc5c..a417f440f9f702f6550c9b64954d9db8b3e3792f 100644
--- a/client/src/main/java/dev/fitko/fitconnect/client/sender/SubmissionSender.java
+++ b/client/src/main/java/dev/fitko/fitconnect/client/sender/SubmissionSender.java
@@ -177,6 +177,9 @@ public class SubmissionSender {
         if (sendableSubmission.getPaymentInformation() != null) {
             metadata.setPaymentInformation(sendableSubmission.getPaymentInformation());
         }
+        if (sendableSubmission.getAdditionalReferenceInfo() != null) {
+            metadata.setAdditionalReferenceInfo(sendableSubmission.getAdditionalReferenceInfo());
+        }
     }
 
     private List<AttachmentPayload> encryptAndHashAttachments(final RSAKey encryptionKey, final List<Attachment> attachments) {
diff --git a/client/src/main/java/dev/fitko/fitconnect/client/sender/steps/unencrypted/OptionalPropertiesStep.java b/client/src/main/java/dev/fitko/fitconnect/client/sender/steps/unencrypted/OptionalPropertiesStep.java
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/client/src/main/java/dev/fitko/fitconnect/client/sender/strategies/SendNewSubmissionStrategy.java b/client/src/main/java/dev/fitko/fitconnect/client/sender/strategies/SendNewSubmissionStrategy.java
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/client/src/main/java/dev/fitko/fitconnect/client/subscriber/ReplySender.java b/client/src/main/java/dev/fitko/fitconnect/client/subscriber/ReplySender.java
index 2ece4b85304cffdc5f3b1850cb2a6b98d4883fae..daf75b17c67d0592d757d421ec85a56a0ff623ab 100644
--- a/client/src/main/java/dev/fitko/fitconnect/client/subscriber/ReplySender.java
+++ b/client/src/main/java/dev/fitko/fitconnect/client/subscriber/ReplySender.java
@@ -103,6 +103,7 @@ public class ReplySender {
         metadata.setReplyChannel(sendableReply.getReplyChannel());
         metadata.setPaymentInformation(sendableReply.getPaymentInformation());
         metadata.setAuthenticationInformation(sendableReply.getAuthenticationInformation());
+        metadata.setAdditionalReferenceInfo(sendableReply.getAdditionalReferenceInfo());
 
         return metadata;
     }
diff --git a/client/src/main/java/dev/fitko/fitconnect/client/subscriber/SubmissionReceiver.java b/client/src/main/java/dev/fitko/fitconnect/client/subscriber/SubmissionReceiver.java
index b391a8facfac7c2c72a3b5ba46ba531fd1c2efb7..6c5d267c455cf3a42c5cd2049c801f66f6ae711a 100644
--- a/client/src/main/java/dev/fitko/fitconnect/client/subscriber/SubmissionReceiver.java
+++ b/client/src/main/java/dev/fitko/fitconnect/client/subscriber/SubmissionReceiver.java
@@ -7,6 +7,7 @@ import dev.fitko.fitconnect.api.FitConnectService;
 import dev.fitko.fitconnect.api.config.ApplicationConfig;
 import dev.fitko.fitconnect.api.domain.model.attachment.Attachment;
 import dev.fitko.fitconnect.api.domain.model.event.EventPayload;
+import dev.fitko.fitconnect.api.domain.model.event.SubmissionStatus;
 import dev.fitko.fitconnect.api.domain.model.event.authtags.AuthenticationTags;
 import dev.fitko.fitconnect.api.domain.model.event.problems.Problem;
 import dev.fitko.fitconnect.api.domain.model.event.problems.attachment.AttachmentEncryptionIssue;
@@ -21,7 +22,7 @@ import dev.fitko.fitconnect.api.domain.model.metadata.Metadata;
 import dev.fitko.fitconnect.api.domain.model.metadata.attachment.ApiAttachment;
 import dev.fitko.fitconnect.api.domain.model.metadata.attachment.AttachmentForValidation;
 import dev.fitko.fitconnect.api.domain.model.submission.Submission;
-import dev.fitko.fitconnect.api.domain.subscriber.ReceivedData;
+import dev.fitko.fitconnect.api.domain.subscriber.ReceivedSubmissionData;
 import dev.fitko.fitconnect.api.domain.subscriber.ReceivedSubmission;
 import dev.fitko.fitconnect.api.domain.validation.ValidationResult;
 import dev.fitko.fitconnect.api.exceptions.internal.AuthenticationTagsEmptyException;
@@ -142,15 +143,10 @@ public class SubmissionReceiver {
     private ReceivedSubmission buildReceivedSubmission(final Submission submission, final Metadata metadata, final byte[] decryptedData, final List<AttachmentForValidation> attachments) {
         final List<Attachment> receivedAttachments = attachments.stream().map(this::toApiAttachment).collect(Collectors.toList());
         final Map<UUID, String> encryptedAttachments = attachments.stream().collect(Collectors.toMap(AttachmentForValidation::getAttachmentId, AttachmentForValidation::getEncryptedData));
-        return ReceivedSubmission.builder()
-                .subscriber(subscriber)
-                .submission(submission)
-                .metadata(metadata)
-                .receivedData(receivedData)
-                .attachments(receivedAttachments)
-                .encryptedAttachments(encryptedAttachments)
-                .submitState(subscriber.getSubmitState(submission))
-                .build();
+        final String data = new String(decryptedData, StandardCharsets.UTF_8);
+        final SubmissionStatus submitState = subscriber.getSubmitState(submission);
+        return new ReceivedSubmission(subscriber, new ReceivedSubmissionData(data, metadata, submission, submitState, receivedAttachments, encryptedAttachments));
+
     }
 
     private Attachment toApiAttachment(final AttachmentForValidation attachment) {
diff --git a/core/src/test/java/dev/fitko/fitconnect/core/validation/DefaultValidationServiceTest.java b/core/src/test/java/dev/fitko/fitconnect/core/validation/DefaultValidationServiceTest.java
index c10f46f740c8aad10558910ecf1584c35f98d237..604d6272e9d39ae39095957662cac5740263c8b6 100644
--- a/core/src/test/java/dev/fitko/fitconnect/core/validation/DefaultValidationServiceTest.java
+++ b/core/src/test/java/dev/fitko/fitconnect/core/validation/DefaultValidationServiceTest.java
@@ -468,7 +468,7 @@ class DefaultValidationServiceTest {
 
         // Then
         assertFalse(validationResult.isValid());
-        assertThat(validationResult.getError().getMessage(), containsString("$.replyChannel: may only have a maximum of 1 properties"));
+        assertThat(validationResult.getError().getMessage(), containsString("$.replyChannel: must only have a maximum of 1 properties"));
     }
 
     @Test