diff --git a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/GrpcPostfachNachrichtMapper.java b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/GrpcPostfachNachrichtMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..3ae37628818e643e98dfa6fd734b5fb3b9d49e35
--- /dev/null
+++ b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/GrpcPostfachNachrichtMapper.java
@@ -0,0 +1,22 @@
+package de.itvsh.ozg.mail.postfach;
+
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+
+@Mapper
+public interface GrpcPostfachNachrichtMapper {
+
+	@Mapping(target = "attachments", source = "attachmentList")
+	@Mapping(target = "createdAt", ignore = true) // heute?
+	@Mapping(target = "createdBy", ignore = true) // TODO
+	@Mapping(target = "direction", constant = "OUT")
+	@Mapping(target = "messageCode", ignore = true)
+	@Mapping(target = "messageId", ignore = true)
+	@Mapping(target = "postfachAddress", ignore = true) // uh
+	@Mapping(target = "postfachId", ignore = true)
+	@Mapping(target = "sentAt", ignore = true)
+	@Mapping(target = "sentSuccessful", ignore = true)
+	@Mapping(target = "vorgangId", ignore = true)
+	PostfachNachricht mapFromGrpc(GrpcPostfachNachricht nachricht);
+
+}
diff --git a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/PostfachGrpcService.java b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/PostfachGrpcService.java
index 851053803a8f34cd361024cb2302ca606502ad09..4b6ed6b1941d21cb302757581c4ef0c4bb0e3403 100644
--- a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/PostfachGrpcService.java
+++ b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/PostfachGrpcService.java
@@ -37,6 +37,17 @@ class PostfachGrpcService extends PostfachServiceImplBase {
 	@Autowired
 	private PostfachNachrichtMapper mapper;
 
+	@Autowired
+	private GrpcPostfachNachrichtMapper nachrichtMapper;
+
+	@Override
+	public void saveNachrichtDraft(GrpcSaveNachrichtDraftRequest request, StreamObserver<GrpcSaveNachrichtDrafResponse> response) {
+		var nachrichtId = service.saveDraft(request.getVorgangId(), nachrichtMapper.mapFromGrpc(request.getNachricht()));
+
+		response.onNext(GrpcSaveNachrichtDrafResponse.newBuilder().setNachrichtId(nachrichtId).build());
+		response.onCompleted();
+	}
+
 	@Override
 	public void sendPostfachMail(GrpcSendPostfachMailRequest req, StreamObserver<GrpcSendPostfachMailResponse> response) {
 		service.sendMail(req.getCommandId(), req.getContext().getUser().getId(), mapper.fromGrpcMail(req.getMail()));
diff --git a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/PostfachService.java b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/PostfachService.java
index 760da9780919a565115369c6f23ca4ea87fa4dc7..24bb1c81d32aaa5976782e3e8f1575a6529c410c 100644
--- a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/PostfachService.java
+++ b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/PostfachService.java
@@ -64,6 +64,12 @@ class PostfachService {
 	@Autowired
 	private ApplicationEventPublisher publisher;
 
+	public String saveDraft(String vorgangId, PostfachNachricht nachricht) {
+		persistMail(null, null);
+		// TODO implement me
+		return null;
+	}
+
 	public void sendMail(String commandId, String userId, @Valid PostfachNachricht mail) {
 		var sendResponse = handleSendMail(commandId, mail);
 		persistSentMail(userId, addMailSentInformation(mail, sendResponse));
diff --git a/mail-service/src/test/java/de/itvsh/ozg/mail/postfach/GrpcSaveNachrichtDraftRequestTestFactory.java b/mail-service/src/test/java/de/itvsh/ozg/mail/postfach/GrpcSaveNachrichtDraftRequestTestFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..1f76f2426a184095ef5317e3bba77d8e99cb705c
--- /dev/null
+++ b/mail-service/src/test/java/de/itvsh/ozg/mail/postfach/GrpcSaveNachrichtDraftRequestTestFactory.java
@@ -0,0 +1,16 @@
+package de.itvsh.ozg.mail.postfach;
+
+import de.itvsh.ozg.mail.postfach.osi.MessageTestFactory;
+
+public class GrpcSaveNachrichtDraftRequestTestFactory {
+
+	static GrpcSaveNachrichtDraftRequest create() {
+		return createBuilder().build();
+	}
+
+	static GrpcSaveNachrichtDraftRequest.Builder createBuilder() {
+		return GrpcSaveNachrichtDraftRequest.newBuilder()
+				.setVorgangId(MessageTestFactory.VORGANG_ID);
+
+	}
+}
diff --git a/mail-service/src/test/java/de/itvsh/ozg/mail/postfach/PostfachGrpcServiceTest.java b/mail-service/src/test/java/de/itvsh/ozg/mail/postfach/PostfachGrpcServiceTest.java
index 55679054ce3b6e0ec81511be829b295a896fe583..06189228c8da3b30a47517c560ffdcca54d0b39d 100644
--- a/mail-service/src/test/java/de/itvsh/ozg/mail/postfach/PostfachGrpcServiceTest.java
+++ b/mail-service/src/test/java/de/itvsh/ozg/mail/postfach/PostfachGrpcServiceTest.java
@@ -27,7 +27,9 @@ import static org.assertj.core.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
 
-import org.junit.jupiter.api.*;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
 import org.mapstruct.factory.Mappers;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Captor;
@@ -35,25 +37,72 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
 
+import de.itvsh.ozg.mail.postfach.osi.MessageTestFactory;
 import io.grpc.stub.StreamObserver;
 
 class PostfachGrpcServiceTest {
 
-	@InjectMocks // NOSONAR
+	@InjectMocks
 	private PostfachGrpcService service;
+
 	@Mock
 	private PostfachService postfachService;
+	@Mock
+	private GrpcPostfachNachrichtMapper nachrichtMapper;
 
 	@Spy
 	private PostfachNachrichtMapper mapper = Mappers.getMapper(PostfachNachrichtMapper.class);
 
+	@Nested
+	class TestSaveNachrichtDraft {
+
+		@Mock
+		private StreamObserver<GrpcSaveNachrichtDrafResponse> responseObserver;
+
+		@Captor
+		private ArgumentCaptor<GrpcSaveNachrichtDrafResponse> responseCaptor;
+
+		@BeforeEach
+		void init() {
+			when(postfachService.saveDraft(any(),any())).thenReturn(PostfachNachrichtTestFactory.ID);
+			when(nachrichtMapper.mapFromGrpc(any())).thenReturn(PostfachNachrichtTestFactory.create());
+		}
+
+		@Test
+		void shouldCallService() {
+			var nachricht = PostfachNachrichtTestFactory.create();
+			when(nachrichtMapper.mapFromGrpc(any())).thenReturn(nachricht);
+
+			service.saveNachrichtDraft(GrpcSaveNachrichtDraftRequestTestFactory.create(), responseObserver);
+
+			verify(postfachService).saveDraft(MessageTestFactory.VORGANG_ID, nachricht);
+		}
+
+		@Test
+		void shouldSendResponse() {
+			service.saveNachrichtDraft(GrpcSaveNachrichtDraftRequestTestFactory.create(), responseObserver);
+
+			verify(responseObserver).onNext(responseCaptor.capture());
+
+			assertThat(responseCaptor.getValue().getNachrichtId()).isEqualTo(PostfachNachrichtTestFactory.ID);
+		}
+
+		@Test
+		void shouldCompleteCall() {
+			service.saveNachrichtDraft(GrpcSaveNachrichtDraftRequestTestFactory.create(), responseObserver);
+
+			verify(responseObserver).onCompleted();
+		}
+
+	}
+
 	@Nested
 	class TestSendMail {
 
-		@Mock // NOSONAR
+		@Mock
 		private StreamObserver<GrpcSendPostfachMailResponse> responseObserver;
 
-		@Captor // NOSONAR
+		@Captor
 		private ArgumentCaptor<PostfachNachricht> mailCaptor;
 
 		@Test
@@ -165,7 +214,7 @@ class PostfachGrpcServiceTest {
 	@Nested
 	class TestResendMail {
 
-		@Mock // NOSONAR
+		@Mock
 		private StreamObserver<GrpcResendPostfachMailResponse> responseObserver;
 
 		@Test
@@ -195,7 +244,7 @@ class PostfachGrpcServiceTest {
 
 		private final GrpcIsPostfachConfiguredRequest request = GrpcIsPostfachConfiguredRequest.newBuilder().build();
 
-		@Mock // NOSONAR
+		@Mock
 		private StreamObserver<GrpcIsPostfachConfiguredResponse> responseObserver;
 
 		@Test
diff --git a/mail-service/src/test/java/de/itvsh/ozg/mail/postfach/PostfachServiceTest.java b/mail-service/src/test/java/de/itvsh/ozg/mail/postfach/PostfachServiceTest.java
index 67e0c40db74be929b05f0e9b07c0d1cc1c4dcdf3..e9973e048fd2b86f8420bec111b7e83c16ac480f 100644
--- a/mail-service/src/test/java/de/itvsh/ozg/mail/postfach/PostfachServiceTest.java
+++ b/mail-service/src/test/java/de/itvsh/ozg/mail/postfach/PostfachServiceTest.java
@@ -78,6 +78,25 @@ class PostfachServiceTest {
 	static final String COMMAND_ID = UUID.randomUUID().toString();
 	static final String USER_ID = UUID.randomUUID().toString();
 
+	@Nested
+	class TestSaveDraft {
+
+		@Captor
+		private ArgumentCaptor<Optional<String>> userIdCaptor;
+
+		@BeforeEach
+		void init() {
+			doNothing().when(service).persistMail(any(), any());
+		}
+
+		@Test
+		void shouldUseUserIdFromContext() {
+			service.saveDraft(MessageTestFactory.VORGANG_ID, PostfachNachrichtTestFactory.create());
+
+			verify(service).persistMail(userIdCaptor.capture(), any());
+		}
+	}
+
 	@Nested
 	class TestSendMail {
 
diff --git a/pluto-interface/src/main/protobuf/postfach.model.proto b/pluto-interface/src/main/protobuf/postfach.model.proto
index afc70838151e34f1406ee66d25e0182cfa5988ec..c842ee810f967a58d9a672662bb4f525d31732e7 100644
--- a/pluto-interface/src/main/protobuf/postfach.model.proto
+++ b/pluto-interface/src/main/protobuf/postfach.model.proto
@@ -39,7 +39,7 @@ message GrpcSendPostfachMailRequest {
 }
 
 message GrpcSaveNachrichtDraftRequest {
-	string createFor = 1;
+	string vorgangId = 1;
 	GrpcPostfachNachricht nachricht = 2;
 }