diff --git a/src/main/java/de/ozgcloud/xta/test/app/data/XtaTransportReportRepository.java b/src/main/java/de/ozgcloud/xta/test/app/data/XtaTransportReportRepository.java
index 4c05cb5ced3589124be3dcb1fe53a1f282e1dd44..6f67093387f7da3b03953af445443fa875144686 100644
--- a/src/main/java/de/ozgcloud/xta/test/app/data/XtaTransportReportRepository.java
+++ b/src/main/java/de/ozgcloud/xta/test/app/data/XtaTransportReportRepository.java
@@ -1,6 +1,7 @@
 package de.ozgcloud.xta.test.app.data;
 
 import java.time.Clock;
+import java.time.LocalDateTime;
 import java.util.HashMap;
 import java.util.Optional;
 
@@ -13,20 +14,37 @@ import de.ozgcloud.xta.test.app.model.XtaTransportReport;
 @Component
 @RequiredArgsConstructor
 public class XtaTransportReportRepository {
-	private final HashMap<String, XtaTransportReport> transportReports = new HashMap<>();
+	private final HashMap<String, XtaMessageMetaData> messageIdTomessageMetaData = new HashMap<>();
+	private final HashMap<String, XtaTransportReport.MessageStatus> messageIdToStatus = new HashMap<>();
 	private final Clock clock;
 
-	public void add(XtaMessageMetaData messageMetaData) {
-		// TODO Auto-generated method stub
-
+	public boolean add(XtaMessageMetaData messageMetaData) {
+		if (messageIdTomessageMetaData.containsKey(messageMetaData.messageId())) {
+			return false;
+		}
+		messageIdTomessageMetaData.put(messageMetaData.messageId(), messageMetaData);
+		messageIdToStatus.put(messageMetaData.messageId(), XtaTransportReport.MessageStatus.OFFEN);
+		return true;
 	}
 
-	public void setClosedStatus(String messageId) {
-		// TODO Auto-generated method stub
+	public boolean setClosedStatus(String messageId) {
+		if (!messageIdToStatus.containsKey(messageId)) {
+			return false;
+		}
+
+		messageIdToStatus.put(messageId, XtaTransportReport.MessageStatus.GRUEN);
+		return true;
+
 	}
 
 	public Optional<XtaTransportReport> get(String messageId) {
-		// TODO Auto-generated method stub
+		if (messageIdTomessageMetaData.containsKey(messageId)) {
+			return Optional.of(XtaTransportReport.builder()
+					.messageMetaData(messageIdTomessageMetaData.get(messageId))
+					.status(messageIdToStatus.get(messageId))
+					.reportTime(LocalDateTime.now(clock))
+					.build());
+		}
 		return Optional.empty();
 	}
 }
diff --git a/src/test/java/de/ozgcloud/xta/test/app/data/XtaTransportReportRepositoryTest.java b/src/test/java/de/ozgcloud/xta/test/app/data/XtaTransportReportRepositoryTest.java
index 51d147e2f93eea4efce610ddafc2f35d875e84d4..cc20e5c0c8c5b99f21598ee5019155d84333a7df 100644
--- a/src/test/java/de/ozgcloud/xta/test/app/data/XtaTransportReportRepositoryTest.java
+++ b/src/test/java/de/ozgcloud/xta/test/app/data/XtaTransportReportRepositoryTest.java
@@ -1,7 +1,6 @@
 package de.ozgcloud.xta.test.app.data;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.when;
 
 import java.time.Clock;
 import java.time.Instant;
@@ -10,7 +9,6 @@ import java.time.LocalDateTime;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
-import org.mockito.Mock;
 
 import de.ozgcloud.xta.test.app.factory.XtaMessageMetaDataTestFactory;
 import de.ozgcloud.xta.test.app.model.XtaMessageMetaData;
@@ -18,13 +16,13 @@ import de.ozgcloud.xta.test.app.model.XtaTransportReport;
 
 public class XtaTransportReportRepositoryTest {
 	private XtaTransportReportRepository repository;
-	@Mock
 	private Clock clock;
 
 	private final XtaMessageMetaData messageMetaData = XtaMessageMetaDataTestFactory.create();
 
 	@BeforeEach
 	void beforeEach() {
+		clock = Clock.fixed(Instant.now(), Clock.systemDefaultZone().getZone());
 		repository = new XtaTransportReportRepository(clock);
 	}
 
@@ -39,11 +37,26 @@ public class XtaTransportReportRepositoryTest {
 			assertThat(result).isPresent();
 			assertThat(result.get().messageMetaData()).isEqualTo(messageMetaData);
 		}
+
+		@Test
+		void shouldReturnTrue() {
+			var result = repository.add(messageMetaData);
+
+			assertThat(result).isTrue();
+		}
+
+		@Test
+		void shouldReturnFalseForDuplicateMessageId() {
+			repository.add(messageMetaData);
+			var result = repository.add(messageMetaData);
+
+			assertThat(result).isFalse();
+		}
+
 	}
 
 	@Nested
 	class Get {
-		private final Instant instant = Instant.now();
 
 		@Test
 		void shouldReturnEmpty() {
@@ -64,13 +77,12 @@ public class XtaTransportReportRepositoryTest {
 
 		@Test
 		void shouldSetReportTimeNow() {
-			when(clock.instant()).thenReturn(instant);
 			repository.add(messageMetaData);
 
 			var result = repository.get(messageMetaData.messageId());
 
 			assertThat(result).isPresent();
-			assertThat(result.get().reportTime()).isEqualTo(LocalDateTime.from(instant));
+			assertThat(result.get().reportTime()).isEqualTo(LocalDateTime.now(clock));
 		}
 	}
 
@@ -79,12 +91,28 @@ public class XtaTransportReportRepositoryTest {
 		@Test
 		void shouldSetClosedStatus() {
 			repository.add(messageMetaData);
+
 			repository.setClosedStatus(messageMetaData.messageId());
+			var report = repository.get(messageMetaData.messageId());
 
-			var result = repository.get(messageMetaData.messageId());
+			assertThat(report).isPresent();
+			assertThat(report.get().status()).isEqualTo(XtaTransportReport.MessageStatus.GRUEN);
+		}
 
-			assertThat(result).isPresent();
-			assertThat(result.get().status()).isEqualTo(XtaTransportReport.MessageStatus.GRUEN);
+		@Test
+		void shouldReturnTrueOnSuccess() {
+			repository.add(messageMetaData);
+
+			var result = repository.setClosedStatus(messageMetaData.messageId());
+
+			assertThat(result).isTrue();
+		}
+
+		@Test
+		void shouldReturnFalseOnMissingMessageId() {
+			var result = repository.setClosedStatus(messageMetaData.messageId());
+
+			assertThat(result).isFalse();
 		}
 	}
 }