diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcService.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcService.java
index 3684ce3c2f2c29b5dda1966a5e48bcc4d1ed0cbd..671fb18c5d5a7a5b1da73250644081a911848c85 100644
--- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcService.java
+++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcService.java
@@ -31,6 +31,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 
 import de.ozgcloud.common.errorhandling.TechnicalException;
+import de.ozgcloud.nachrichten.common.vorgang.VorgangService;
 import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
 import io.grpc.stub.StreamObserver;
 import lombok.RequiredArgsConstructor;
@@ -40,12 +41,15 @@ import net.devh.boot.grpc.server.service.GrpcService;
 @RequiredArgsConstructor
 @ConditionalOnProperty(AntragraumProperties.PROPERTY_ANTRAGSRAUM_URL)
 class AntragraumGrpcService extends AntragraumServiceGrpc.AntragraumServiceImplBase {
-	private final AntragraumService antragraumService;
+	private final AntragraumService service;
 	private final AntragraumNachrichtMapper mapper;
+	private final RueckfrageMapper rueckfrageMapper;
+
+	private final VorgangService vorgangService;
 
 	@Override
 	public void findRueckfragen(GrpcFindRueckfragenRequest request, StreamObserver<GrpcFindRueckfragenResponse> streamObserver) {
-		var rueckfragen = antragraumService.findRueckfragen(request.getSamlToken())
+		var rueckfragen = service.findRueckfragen(request.getSamlToken())
 				.map(mapper::toGrpc)
 				.map(rueckfrage -> addAnswers(request.getSamlToken(), rueckfrage));
 
@@ -58,27 +62,26 @@ class AntragraumGrpcService extends AntragraumServiceGrpc.AntragraumServiceImplB
 	}
 
 	List<GrpcRueckfrageAnswer> findRueckfrageAnswers(String samlToken, String rueckfrageId) {
-		return antragraumService.findAnswers(samlToken, rueckfrageId).map(mapper::toRueckfrageAnswer).toList();
+		return service.findAnswers(samlToken, rueckfrageId).map(mapper::toRueckfrageAnswer).toList();
 	}
 
 	private GrpcFindRueckfragenResponse buildFindRueckfragenResponse(Stream<GrpcRueckfrage> rueckfragen) {
 		return GrpcFindRueckfragenResponse.newBuilder().addAllRueckfrage(rueckfragen.toList()).build();
-
 	}
 
 	@Override
 	public void sendRueckfrageAnswer(GrpcSendRueckfrageAnswerRequest request, StreamObserver<GrpcSendRueckfrageAnswerResponse> streamObserver) {
 		var answer = mapper.fromRueckfrageAnswer(request.getAnswer());
 
-		answer = enrichRueckfrageAnswer(answer, getRueckfrage(request.getSamlToken(), request.getAnswer().getRueckfrageId()));
-		var commandId = antragraumService.sendRueckfrageAnswer(request.getSamlToken(), request.getAnswer().getRueckfrageId(), answer);
+		answer = enrichRueckfrageAnswer(answer, getRueckfrageByNachricht(request.getSamlToken(), request.getAnswer().getRueckfrageId()));
+		var commandId = service.sendRueckfrageAnswer(request.getSamlToken(), request.getAnswer().getRueckfrageId(), answer);
 
 		streamObserver.onNext(GrpcSendRueckfrageAnswerResponse.newBuilder().setCommandId(commandId).build());
 		streamObserver.onCompleted();
 	}
 
-	Rueckfrage getRueckfrage(String samlToken, String postfachNachrichtId) {
-		return antragraumService.findRueckfragen(samlToken)
+	Rueckfrage getRueckfrageByNachricht(String samlToken, String postfachNachrichtId) {
+		return service.findRueckfragen(samlToken)
 				.filter(rueckfrage -> StringUtils.equals(rueckfrage.getId(), postfachNachrichtId))
 				.findFirst()
 				.orElseThrow(() -> new TechnicalException(String.format("No rueckfrage found for answer with id %s", postfachNachrichtId)));
@@ -91,4 +94,30 @@ class AntragraumGrpcService extends AntragraumServiceGrpc.AntragraumServiceImplB
 				.sentAt(ZonedDateTime.now())
 				.build();
 	}
+
+	@Override
+	public void getRueckfrage(GrpcGetRueckfrageRequest request, StreamObserver<GrpcGetRueckfrageResponse> responseObserver) {
+		var reuckfrage = buildRueckfrage(request);
+
+		responseObserver.onNext(buildGetRueckfrageResponse(reuckfrage));
+		responseObserver.onCompleted();
+	}
+
+	GrpcRueckfrage buildRueckfrage(GrpcGetRueckfrageRequest request) {
+		var rueckfrage = service.getRueckfrage(request.getSamlToken(), request.getId());
+		var vorgang = vorgangService.getVorgang(rueckfrage.getVorgangId());
+
+		var answers = service.findAnswers(request.getSamlToken(), request.getId()).toList();
+		var firstAnswerSentAt = service.getFirstSentAt(answers.stream());
+
+		return addAnswers(rueckfrageMapper.toRueckfrage(firstAnswerSentAt, vorgang, rueckfrage), answers);
+	}
+
+	GrpcRueckfrage addAnswers(GrpcRueckfrage rueckfrage, List<PostfachNachricht> answers) {
+		return rueckfrage.toBuilder().addAllAnswers(answers.stream().map(mapper::toRueckfrageAnswer).toList()).build();
+	}
+
+	GrpcGetRueckfrageResponse buildGetRueckfrageResponse(GrpcRueckfrage rueckfrage) {
+		return GrpcGetRueckfrageResponse.newBuilder().setRueckfrage(rueckfrage).build();
+	}
 }
diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumService.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumService.java
index 3e10f0004cdf6859e59c8dd37927c04a2ede9b08..d6a76afc390f7c76fb8c2abe4f45d1a5f3f06882 100644
--- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumService.java
+++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumService.java
@@ -44,6 +44,7 @@ import de.ozgcloud.nachrichten.common.vorgang.Vorgang;
 import de.ozgcloud.nachrichten.common.vorgang.VorgangService;
 import de.ozgcloud.nachrichten.postfach.PersistPostfachNachrichtService;
 import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
+import de.ozgcloud.nachrichten.postfach.PostfachNachrichtMapper;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.log4j.Log4j2;
 
@@ -76,6 +77,7 @@ public class AntragraumService {
 	private final RueckfrageMapper rueckfrageMapper;
 	@Qualifier(NachrichtenManagerConfiguration.NACHRICHTEN_VORGANG_SERVICE)
 	private final VorgangService vorgangService;
+	private final PostfachNachrichtMapper nachrichtMapper;
 
 	@PostConstruct
 	void init() {
@@ -147,14 +149,20 @@ public class AntragraumService {
 		return postfachNachrichtService.findAnswers(BAYERN_ID_SERVICE_KONTO_TYPE, getPostfachId(samlToken), rueckfrageId);
 	}
 
+	String getPostfachId(String samlToken) {
+		return decrypter.decryptPostfachId(parser.parse(samlToken));
+	}
+
+	public PostfachNachricht getRueckfrage(String samlToken, String id) {
+		verifyToken(samlToken);
+
+		return nachrichtMapper.fromMapToPostfachMail(postfachNachrichtService.getById(id));
+	}
+
 	void verifyToken(String token) {
 		var errors = verifier.verify(token);
 		if (CollectionUtils.isNotEmpty(errors)) {
 			throw new SecurityException("SAML Token verification failed. Errors: %s".formatted(errors));
 		}
 	}
-
-	String getPostfachId(String samlToken) {
-		return decrypter.decryptPostfachId(parser.parse(samlToken));
-	}
-}
+}
\ No newline at end of file
diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/RueckfrageMapper.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/RueckfrageMapper.java
index 439961c766b90a6952961e916a0117210115dc63..a9dfefdf3b38485bc28ffd12bbd7a4d40854e998 100644
--- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/RueckfrageMapper.java
+++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/RueckfrageMapper.java
@@ -1,11 +1,17 @@
 package de.ozgcloud.nachrichten.antragraum;
 
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Optional;
+
+import org.apache.commons.lang3.StringUtils;
 import org.mapstruct.CollectionMappingStrategy;
 import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
 import org.mapstruct.NullValueCheckStrategy;
 import org.mapstruct.ReportingPolicy;
 
+import de.ozgcloud.nachrichten.common.vorgang.Vorgang;
 import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
 
 @Mapper(collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED, //
@@ -13,10 +19,55 @@ import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
 		nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
 interface RueckfrageMapper {
 
+	final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssX");
+
 	@Mapping(target = "answeredAt", ignore = true)
 	@Mapping(target = "status", ignore = true)
 	@Mapping(target = "text", source = "mailBody")
 	@Mapping(target = "vorgangName", ignore = true)
 	Rueckfrage fromPostfachNachricht(PostfachNachricht postfachNachricht);
 
+	@Mapping(target = "mergeFrom", ignore = true)
+	@Mapping(target = "clearField", ignore = true)
+	@Mapping(target = "clearOneof", ignore = true)
+	@Mapping(target = "mergeUnknownFields", ignore = true)
+	@Mapping(target = "removeAnswers", ignore = true)
+	@Mapping(target = "accessible", ignore = true) // TODO
+	@Mapping(target = "accessibleBytes", ignore = true)
+	@Mapping(target = "answeredAt", expression = "java(setAnsweredAt(firstAnswerSentAt))")
+	@Mapping(target = "answeredAtBytes", ignore = true)
+	@Mapping(target = "idBytes", ignore = true)
+	@Mapping(target = "sentAtBytes", ignore = true)
+	@Mapping(target = "status", expression = "java(setStatus(firstAnswerSentAt))")
+	@Mapping(target = "statusBytes", ignore = true)
+	@Mapping(target = "textBytes", ignore = true)
+	@Mapping(target = "trustLevel", ignore = true) // TODO
+	@Mapping(target = "trustLevelBytes", ignore = true)
+	@Mapping(target = "unknownFields", ignore = true)
+	@Mapping(target = "vorgangIdBytes", ignore = true)
+	@Mapping(target = "vorgangName", source = "vorgang.name")
+	@Mapping(target = "vorgangNameBytes", ignore = true)
+	@Mapping(target = "vorgangNummer", source = "vorgang.nummer")
+	@Mapping(target = "vorgangNummerBytes", ignore = true)
+	@Mapping(target = "allFields", ignore = true)
+	@Mapping(target = "answersBuilderList", ignore = true)
+	@Mapping(target = "answersList", ignore = true)
+	@Mapping(target = "answersOrBuilderList", ignore = true)
+	@Mapping(target = "attachmentFileIdList", source = "rueckfrage.attachments")
+	@Mapping(target = "sentAt", source = "rueckfrage.sentAt", dateFormat = "yyyy-MM-dd'T'HH:mm:ss")
+	@Mapping(target = "id", source = "rueckfrage.id")
+	@Mapping(target = "text", source = "rueckfrage.mailBody")
+	GrpcRueckfrage toRueckfrage(Optional<ZonedDateTime> firstAnswerSentAt, Vorgang vorgang, PostfachNachricht rueckfrage);
+
+	default String setVorgangName(Vorgang vorgang) {
+		return vorgang.getName();
+	}
+
+	default String setAnsweredAt(Optional<ZonedDateTime> firstAnswerSentAt) {
+		return firstAnswerSentAt.map(formatter::format).orElseGet(() -> StringUtils.EMPTY);
+	}
+
+	default String setStatus(Optional<ZonedDateTime> firstAnswerSentAt) {
+		return firstAnswerSentAt.map(answeredAt -> RueckfrageStatus.ANSWERED.name()).orElseGet(RueckfrageStatus.NEW::name);
+	}
 }
\ No newline at end of file
diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachNachrichtMapper.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachNachrichtMapper.java
index c2783a9fbe16fea8bf94b4740b5f304e937d3547..fa6905abc07b0fe4d3a89939d4b895d374e39dec 100644
--- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachNachrichtMapper.java
+++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachNachrichtMapper.java
@@ -125,7 +125,7 @@ public abstract class PostfachNachrichtMapper {
 		return fromMapToPostfachMail(grpcObjectMapper.mapFromGrpc(grpcVorgangAttachedItem.getItem()));
 	}
 
-	PostfachNachricht fromMapToPostfachMail(Map<String, Object> mailMap) {
+	public PostfachNachricht fromMapToPostfachMail(Map<String, Object> mailMap) {
 		var postfachMailBuilder = PostfachNachricht.builder()
 				.id(MapUtils.getString(mailMap, PostfachNachricht.FIELD_ID))
 				.vorgangId(MapUtils.getString(mailMap, (PostfachNachricht.FIELD_VORGANG_ID)))
diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcServiceTest.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcServiceTest.java
index 6b96cc3be43f4a2797608efb1350768c1c50f502..f90512f50f318d5c579a913700637c2598f86877 100644
--- a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcServiceTest.java
+++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcServiceTest.java
@@ -26,6 +26,8 @@ import static org.mockito.Mockito.*;
 
 import java.time.ZonedDateTime;
 import java.time.temporal.ChronoUnit;
+import java.util.List;
+import java.util.Optional;
 import java.util.UUID;
 import java.util.stream.Stream;
 
@@ -33,13 +35,19 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
 
 import de.ozgcloud.common.errorhandling.TechnicalException;
+import de.ozgcloud.nachrichten.common.vorgang.Vorgang;
+import de.ozgcloud.nachrichten.common.vorgang.VorgangService;
+import de.ozgcloud.nachrichten.common.vorgang.VorgangTestFactory;
 import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
 import de.ozgcloud.nachrichten.postfach.PostfachNachrichtTestFactory;
+import de.ozgcloud.nachrichten.postfach.osi.MessageTestFactory;
 import io.grpc.stub.StreamObserver;
 
 class AntragraumGrpcServiceTest {
@@ -50,6 +58,11 @@ class AntragraumGrpcServiceTest {
 	private AntragraumService service;
 	@Mock
 	private AntragraumNachrichtMapper nachrichtMapper;
+	@Mock
+	private RueckfrageMapper rueckfrageMapper;
+
+	@Mock
+	private VorgangService vorgangService;
 
 	@Nested
 	class TestFindRueckfragen {
@@ -88,7 +101,7 @@ class AntragraumGrpcServiceTest {
 		void shouldLoadAnswers() {
 			grpcService.findRueckfragen(GrpcFindRueckfrageRequestTestFactory.create(), streamObserver);
 
-			verify(service).findAnswers(GrpcFindRueckfrageRequestTestFactory.SAML_TOKEN, GrpcRueckfrageTestFactory.ID);
+			verify(service).findAnswers(GrpcFindRueckfrageRequestTestFactory.SAML_TOKEN, PostfachNachrichtTestFactory.ID);
 		}
 	}
 
@@ -106,7 +119,7 @@ class AntragraumGrpcServiceTest {
 			when(service.sendRueckfrageAnswer(anyString(), anyString(), any(PostfachNachricht.class)))
 					.thenReturn(UUID.randomUUID().toString());
 			doReturn(postfachNachricht).when(grpcService).enrichRueckfrageAnswer(any(), any());
-			doReturn(rueckfrage).when(grpcService).getRueckfrage(any(), any());
+			doReturn(rueckfrage).when(grpcService).getRueckfrageByNachricht(anyString(), anyString());
 		}
 
 		@Test
@@ -120,7 +133,7 @@ class AntragraumGrpcServiceTest {
 		void shouldGetRueckfrage() {
 			sendRueckfrageAnswer();
 
-			verify(grpcService).getRueckfrage(GrpcSendRueckfrageAnswerRequestTestFactory.SAML_TOKEN,
+			verify(grpcService).getRueckfrageByNachricht(GrpcSendRueckfrageAnswerRequestTestFactory.SAML_TOKEN,
 					GrpcRueckfrageAnswerTestFactory.RUECKFRAGE_ID);
 		}
 
@@ -157,9 +170,9 @@ class AntragraumGrpcServiceTest {
 		}
 	}
 
-	@DisplayName("Get rueckfrage")
+	@DisplayName("Get rueckfrage by nachricht")
 	@Nested
-	class TestGetRueckfrage {
+	class TestGetRueckfrageByNachricht {
 
 		private final Rueckfrage matchingRueckfrage = RueckfrageTestFactory.createBuilder().id(GrpcRueckfrageAnswerTestFactory.RUECKFRAGE_ID)
 				.build();
@@ -192,7 +205,7 @@ class AntragraumGrpcServiceTest {
 		}
 
 		private Rueckfrage getRueckfrage() {
-			return grpcService.getRueckfrage(GrpcSendRueckfrageAnswerRequestTestFactory.SAML_TOKEN,
+			return grpcService.getRueckfrageByNachricht(GrpcSendRueckfrageAnswerRequestTestFactory.SAML_TOKEN,
 					GrpcRueckfrageAnswerTestFactory.RUECKFRAGE_ID);
 		}
 	}
@@ -230,4 +243,189 @@ class AntragraumGrpcServiceTest {
 			assertThat(enrichedPostfachNachricht.getSentAt()).isCloseTo(ZonedDateTime.now(), within(2, ChronoUnit.SECONDS));
 		}
 	}
+
+	@DisplayName("Get rueckfrage")
+	@Nested
+	class TestGetRueckfrage {
+
+		@Mock
+		private StreamObserver<GrpcGetRueckfrageResponse> streamObserver;
+
+		private final GrpcGetRueckfrageRequest request = GrpcGetRueckfrageRequestTestFactory.create();
+
+		private final GrpcGetRueckfrageResponse getRueckfrageResponse = GrpcGetRueckfrageResponseTestFactory.create();
+
+		private final GrpcRueckfrage grpcRueckfrage = GrpcRueckfrageTestFactory.create();
+
+		@BeforeEach
+		void mock() {
+			doReturn(getRueckfrageResponse).when(grpcService).buildGetRueckfrageResponse(any());
+			doReturn(grpcRueckfrage).when(grpcService).buildRueckfrage(any());
+		}
+
+		@Test
+		void shouldBuildRueckfrage() {
+			getRueckfrage();
+
+			verify(grpcService).buildRueckfrage(request);
+		}
+
+		@Test
+		void shouldCallBuildRueckfrageResponse() {
+			getRueckfrage();
+
+			verify(grpcService).buildGetRueckfrageResponse(grpcRueckfrage);
+		}
+
+		@Test
+		void shouldCallOnNext() {
+			getRueckfrage();
+
+			verify(streamObserver).onNext(getRueckfrageResponse);
+		}
+
+		@Test
+		void shouldCallOnCompleted() {
+			getRueckfrage();
+
+			verify(streamObserver).onCompleted();
+		}
+
+		private void getRueckfrage() {
+			grpcService.getRueckfrage(GrpcGetRueckfrageRequestTestFactory.create(), streamObserver);
+		}
+	}
+
+	@DisplayName("Build rueckfrage")
+	@Nested
+	class TestBuildRueckfrage {
+
+		@Captor
+		private ArgumentCaptor<Stream<PostfachNachricht>> answersStreamCaptor;
+
+		@Captor
+		private ArgumentCaptor<List<PostfachNachricht>> answersListCaptor;
+
+		private final GrpcGetRueckfrageRequest request = GrpcGetRueckfrageRequestTestFactory.create();
+
+		private final PostfachNachricht rueckfrage = PostfachNachrichtTestFactory.create();
+
+		private final PostfachNachricht answer = PostfachNachrichtTestFactory.create();
+
+		private final ZonedDateTime now = ZonedDateTime.now();
+		private final Optional<ZonedDateTime> sentAt = Optional.of(now);
+
+		private final Vorgang vorgang = VorgangTestFactory.create();
+
+		private final GrpcRueckfrage grpcRueckfrage = GrpcRueckfrageTestFactory.create();
+
+		@BeforeEach
+		void mock() {
+			when(service.getRueckfrage(any(), any())).thenReturn(rueckfrage);
+			when(service.findAnswers(any(), any())).thenReturn(Stream.of(answer));
+			when(service.getFirstSentAt(any())).thenReturn(sentAt);
+			when(vorgangService.getVorgang(any())).thenReturn(vorgang);
+			when(rueckfrageMapper.toRueckfrage(any(), any(), any())).thenReturn(grpcRueckfrage);
+			doReturn(grpcRueckfrage).when(grpcService).addAnswers(any(), any());
+		}
+
+		@Test
+		void shouldCallServiceToGetRueckfrage() {
+			buildRueckfrage();
+
+			verify(service).getRueckfrage(GrpcGetRueckfrageRequestTestFactory.SAML_TOKEN, RueckfrageTestFactory.ID);
+		}
+
+		@Test
+		void shouldCallVorgangService() {
+			buildRueckfrage();
+
+			verify(vorgangService).getVorgang(MessageTestFactory.VORGANG_ID);
+		}
+
+		@Test
+		void shouldCallServiceToGetAnswers() {
+			buildRueckfrage();
+
+			verify(service).findAnswers(GrpcGetRueckfrageRequestTestFactory.SAML_TOKEN, RueckfrageTestFactory.ID);
+		}
+
+		@Test
+		void shouldCallServiceToGetFirstSentAt() {
+			buildRueckfrage();
+
+			verify(service).getFirstSentAt(answersStreamCaptor.capture());
+			assertThat(answersStreamCaptor.getValue().toList().get(0)).isEqualTo(answer);
+		}
+
+		@Test
+		void shouldCallMapper() {
+			buildRueckfrage();
+
+			verify(rueckfrageMapper).toRueckfrage(sentAt, vorgang, rueckfrage);
+		}
+
+		@Test
+		void shouldCallAddAnswers() {
+			buildRueckfrage();
+
+			verify(grpcService).addAnswers(eq(grpcRueckfrage), answersListCaptor.capture());
+			assertThat(answersListCaptor.getValue().get(0)).isEqualTo(answer);
+		}
+
+		@Test
+		void shouldReturnRueckfrage() {
+			var buildedRueckfrage = buildRueckfrage();
+
+			assertThat(buildedRueckfrage).isEqualTo(grpcRueckfrage);
+		}
+
+		private GrpcRueckfrage buildRueckfrage() {
+			return grpcService.buildRueckfrage(request);
+		}
+	}
+
+	@DisplayName("Add answers")
+	@Nested
+	class TestAddAnswers {
+
+		private final PostfachNachricht answer = PostfachNachrichtTestFactory.create();
+
+		private final GrpcRueckfrage grpcRueckfrage = GrpcRueckfrageTestFactory.create();
+
+		private final GrpcRueckfrageAnswer grpcRueckfrageAnwswer = GrpcRueckfrageAnswerTestFactory.create();
+
+		@BeforeEach
+		void mock() {
+			when(nachrichtMapper.toRueckfrageAnswer(any())).thenReturn(grpcRueckfrageAnwswer);
+		}
+
+		@Test
+		void shouldCallMapper() {
+			grpcService.addAnswers(grpcRueckfrage, List.of(answer));
+
+			verify(nachrichtMapper).toRueckfrageAnswer(answer);
+		}
+
+		@Test
+		void shouldReturnRueckfrageWithAnswers() {
+			var enhancedRueckfrage = grpcService.addAnswers(grpcRueckfrage, List.of(answer));
+
+			assertThat(enhancedRueckfrage.getAnswersList().get(0)).isEqualTo(grpcRueckfrageAnwswer);
+		}
+	}
+
+	@DisplayName("Build get rueckfrage response")
+	@Nested
+	class TestBuildGetRueckfrageResponse {
+
+		private final GrpcRueckfrage grpcRueckfrage = GrpcRueckfrageTestFactory.create();
+
+		@Test
+		void shouldReturnResponseIncludingRueckfrage() {
+			var rueckfrageResponse = grpcService.buildGetRueckfrageResponse(grpcRueckfrage);
+
+			assertThat(rueckfrageResponse.getRueckfrage()).isEqualTo(grpcRueckfrage);
+		}
+	}
 }
\ No newline at end of file
diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumServiceTest.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumServiceTest.java
index 36523ddfe28228a5b7276c294dffcd500b2cea46..2188ed9d19949f4aa20ead0e34315e033d46b108 100644
--- a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumServiceTest.java
+++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumServiceTest.java
@@ -7,6 +7,7 @@ import static org.mockito.Mockito.*;
 import java.time.ZonedDateTime;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
 import java.util.UUID;
 import java.util.stream.Stream;
@@ -25,6 +26,7 @@ import de.ozgcloud.nachrichten.common.vorgang.VorgangService;
 import de.ozgcloud.nachrichten.common.vorgang.VorgangTestFactory;
 import de.ozgcloud.nachrichten.postfach.PersistPostfachNachrichtService;
 import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
+import de.ozgcloud.nachrichten.postfach.PostfachNachrichtMapper;
 import de.ozgcloud.nachrichten.postfach.PostfachNachrichtTestFactory;
 
 class AntragraumServiceTest {
@@ -49,6 +51,8 @@ class AntragraumServiceTest {
 	private RueckfrageMapper rueckfrageMapper;
 	@Mock
 	private VorgangService vorgangService;
+	@Mock
+	private PostfachNachrichtMapper nachrichtMapper;
 
 	@Nested
 	class TestGetAntragsraumUrl {
@@ -362,4 +366,54 @@ class AntragraumServiceTest {
 			verify(decrypter).decryptPostfachId(response);
 		}
 	}
+
+	@DisplayName("Get rueckfrage")
+	@Nested
+	class TestGetRueckfrage {
+
+		private final String samlToken = "DummySamlToken";
+
+		private final Map<String, Object> nachrichtAsMap = PostfachNachrichtTestFactory.asMap();
+		private final PostfachNachricht nachricht = PostfachNachrichtTestFactory.create();
+
+		@BeforeEach
+		void mock() {
+			when(postfachNachrichtService.getById(any())).thenReturn(nachrichtAsMap);
+			when(nachrichtMapper.fromMapToPostfachMail(any())).thenReturn(nachricht);
+
+			doNothing().when(service).verifyToken(any());
+		}
+
+		@Test
+		void shouldVerifySamlToken() {
+			getRueckfrage();
+
+			verify(service).verifyToken(samlToken);
+		}
+
+		@Test
+		void shouldCallPersistPostfachNachrichtService() {
+			getRueckfrage();
+
+			verify(postfachNachrichtService).getById(RueckfrageTestFactory.ID);
+		}
+
+		@Test
+		void shouldCallNachrichtMapper() {
+			getRueckfrage();
+
+			verify(nachrichtMapper).fromMapToPostfachMail(nachrichtAsMap);
+		}
+
+		@Test
+		void shouldReturnValue() {
+			var rueckfrage = getRueckfrage();
+
+			assertThat(rueckfrage).isEqualTo(nachricht);
+		}
+
+		private PostfachNachricht getRueckfrage() {
+			return service.getRueckfrage(samlToken, RueckfrageTestFactory.ID);
+		}
+	}
 }
\ No newline at end of file
diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcGetRueckfrageRequestTestFactory.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcGetRueckfrageRequestTestFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..164cc0e42e902c18f0c3681972d30d5aec1acfcd
--- /dev/null
+++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcGetRueckfrageRequestTestFactory.java
@@ -0,0 +1,19 @@
+package de.ozgcloud.nachrichten.antragraum;
+
+import java.util.UUID;
+
+public class GrpcGetRueckfrageRequestTestFactory {
+
+	public final static String SAML_TOKEN = "DUMMY_SAML_TOKEN";
+	public final static String ID = UUID.randomUUID().toString();
+
+	public static GrpcGetRueckfrageRequest create() {
+		return createBuilder().build();
+	}
+
+	public static GrpcGetRueckfrageRequest.Builder createBuilder() {
+		return GrpcGetRueckfrageRequest.newBuilder()
+				.setSamlToken(SAML_TOKEN)
+				.setId(RueckfrageTestFactory.ID);
+	}
+}
diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcGetRueckfrageResponseTestFactory.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcGetRueckfrageResponseTestFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..53e38d91e5d9b82cdd31c99c4a0d601b32b5de5b
--- /dev/null
+++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcGetRueckfrageResponseTestFactory.java
@@ -0,0 +1,13 @@
+package de.ozgcloud.nachrichten.antragraum;
+
+public class GrpcGetRueckfrageResponseTestFactory {
+
+	public static GrpcGetRueckfrageResponse create() {
+		return createBuilder().build();
+	}
+
+	public static GrpcGetRueckfrageResponse.Builder createBuilder() {
+		return GrpcGetRueckfrageResponse.newBuilder()
+				.setRueckfrage(GrpcRueckfrageTestFactory.create());
+	}
+}
\ No newline at end of file
diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcRueckfrageTestFactory.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcRueckfrageTestFactory.java
index 248e5abc56da8018fd832afef80ea32039aa2c07..829463f7cb8e07981ab2294ba120839f9c8e1d32 100644
--- a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcRueckfrageTestFactory.java
+++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcRueckfrageTestFactory.java
@@ -1,18 +1,19 @@
 package de.ozgcloud.nachrichten.antragraum;
 
-import java.util.UUID;
+import de.ozgcloud.nachrichten.postfach.PostfachNachrichtTestFactory;
 
 public class GrpcRueckfrageTestFactory {
 
-	public static final String ID = UUID.randomUUID().toString();
-
 	public static GrpcRueckfrage create() {
 		return createBuilder().build();
 	}
 
 	public static GrpcRueckfrage.Builder createBuilder() {
 		return GrpcRueckfrage.newBuilder()
-				.setId(ID);
+				.setId(PostfachNachrichtTestFactory.ID)
+				.setText(PostfachNachrichtTestFactory.MAIL_BODY)
+				.setSentAt(PostfachNachrichtTestFactory.SENT_AT_STR)
+				.addAllAttachmentFileId(PostfachNachrichtTestFactory.ATTACHMENTS);
 
 	}
 }
diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/RueckfrageMapperTest.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/RueckfrageMapperTest.java
index 5c7e80e7db967c35727133fdac1d42cbc51cd3d3..4b247cbe8fa0c4797e77b560b0d35703fcd68ae7 100644
--- a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/RueckfrageMapperTest.java
+++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/RueckfrageMapperTest.java
@@ -2,12 +2,18 @@ package de.ozgcloud.nachrichten.antragraum;
 
 import static org.assertj.core.api.Assertions.*;
 
+import java.time.ZonedDateTime;
+import java.util.Optional;
+
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.mapstruct.factory.Mappers;
 
+import de.ozgcloud.nachrichten.common.vorgang.Vorgang;
+import de.ozgcloud.nachrichten.common.vorgang.VorgangTestFactory;
 import de.ozgcloud.nachrichten.postfach.PostfachAddressTestFactory;
+import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
 import de.ozgcloud.nachrichten.postfach.PostfachNachrichtTestFactory;
 import de.ozgcloud.nachrichten.postfach.osi.MessageTestFactory;
 
@@ -72,4 +78,69 @@ class RueckfrageMapperTest {
 			return mapper.fromPostfachNachricht(PostfachNachrichtTestFactory.create());
 		}
 	}
+
+	@DisplayName("To rueckfrage")
+	@Nested
+	class TestToRueckfrage {
+
+		private final Vorgang vorgang = VorgangTestFactory.create();
+		private final PostfachNachricht rueckfrageNachricht = PostfachNachrichtTestFactory.create();
+
+		public static final String ANSWERED_AT_STR = "2020-04-01T11:30:10Z";
+		public static final ZonedDateTime ANSWERED_AT_AT = ZonedDateTime.parse(ANSWERED_AT_STR);
+		private final Optional<ZonedDateTime> firstSentAt = Optional.of(ANSWERED_AT_AT);
+
+		@Test
+		void shouldMapId() {
+			var rueckfrage = toRueckfrage();
+
+			assertThat(rueckfrage.getId()).isEqualTo(PostfachNachrichtTestFactory.ID);
+		}
+
+		@Test
+		void shouldMapText() {
+			var rueckfrage = toRueckfrage();
+
+			assertThat(rueckfrage.getText()).isEqualTo(PostfachNachrichtTestFactory.MAIL_BODY);
+		}
+
+		@Test
+		void shouldMapAttachments() {
+			var rueckfrage = toRueckfrage();
+
+			assertThat(rueckfrage.getAttachmentFileIdList()).containsExactly(PostfachNachrichtTestFactory.ATTACHMENT_FILE_ID);
+		}
+
+		@Test
+		void shouldMapVorgangName() {
+			var rueckfrage = toRueckfrage();
+
+			assertThat(rueckfrage.getVorgangName()).isEqualTo(VorgangTestFactory.NAME);
+		}
+
+		@Test
+		void shouldMapVorgangNummer() {
+			var rueckfrage = toRueckfrage();
+
+			assertThat(rueckfrage.getVorgangNummer()).isEqualTo(VorgangTestFactory.NUMMER);
+		}
+
+		@Test
+		void shouldMapAnsweredAt() {
+			var rueckfrage = toRueckfrage();
+
+			assertThat(rueckfrage.getAnsweredAt()).isEqualTo(ANSWERED_AT_STR);
+		}
+
+		@Test
+		void shouldMapStatus() {
+			var rueckfrage = toRueckfrage();
+
+			assertThat(rueckfrage.getStatus()).isEqualTo(RueckfrageStatus.ANSWERED.name());
+		}
+
+		private GrpcRueckfrage toRueckfrage() {
+			return mapper.toRueckfrage(firstSentAt, vorgang, rueckfrageNachricht);
+		}
+	}
 }