diff --git a/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandBodyMapper.java b/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandBodyMapper.java
index 3625badb1df12642eefdcf36e40b4db3d1fb463a..906f065fd3096fd23ff31fb95b36edf5ab4efd4a 100644
--- a/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandBodyMapper.java
+++ b/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandBodyMapper.java
@@ -3,7 +3,9 @@ package de.itvsh.goofy.common.command;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Objects;
+import java.util.function.Predicate;
 import java.util.stream.Collectors;
 
 import org.apache.commons.beanutils.BeanMap;
@@ -16,10 +18,20 @@ import de.itvsh.ozg.pluto.grpc.command.GrpcCommandBodyField;
 @Mapper
 public interface CommandBodyMapper {
 
+	final Predicate<Entry<Object, Object>> HAS_NOT_NULL_VALUE = entry -> Objects.nonNull(entry.getValue());
+	final Predicate<Entry<Object, Object>> IS_NOT_CLASS_VALUE = entry -> !StringUtils.equals("class", entry.getKey().toString());
+
 	static final String VORGANG_ID_PROPERTY = "vorgangId";
 	static final String ITEM_NAME_PROPERTY = "itemName";
 	static final String ITEM_PROPERTY = "item";
 
+	default Map<String, Object> fromObjectToMap(Object object) {
+		return new BeanMap(object).entrySet().stream()
+				.filter(HAS_NOT_NULL_VALUE)
+				.filter(IS_NOT_CLASS_VALUE)
+				.collect(Collectors.toMap(entry -> entry.getKey().toString(), Entry::getValue));
+	}
+
 	default GrpcCommandBody mapToBody(Map<String, String> bodyMap) {
 		if (Objects.isNull(bodyMap)) {
 			return GrpcCommandBody.getDefaultInstance();
@@ -49,8 +61,8 @@ public interface CommandBodyMapper {
 		}
 
 		return bodyMap.entrySet().stream()
-				.filter(entry -> Objects.nonNull(entry.getValue()))
-				.filter(entry -> !StringUtils.equals(entry.getKey().toString(), "class"))
+				.filter(HAS_NOT_NULL_VALUE)
+				.filter(IS_NOT_CLASS_VALUE)
 				.map(entry -> GrpcCommandBodyField.newBuilder().setName(entry.getKey().toString()).setValue(entry.getValue().toString()).build())
 				.collect(Collectors.toList());
 	}
diff --git a/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandRemoteService.java b/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandRemoteService.java
index 1ef097ca88a39d71c9a271d55d2cfea39d387b33..bc35a6d14771b3822737b95cf2efa5d5b2677cf1 100644
--- a/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandRemoteService.java
+++ b/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandRemoteService.java
@@ -1,13 +1,8 @@
 package de.itvsh.goofy.common.command;
 
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Objects;
 import java.util.Optional;
-import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-import org.apache.commons.beanutils.BeanMap;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -26,6 +21,8 @@ import net.devh.boot.grpc.client.inject.GrpcClient;
 @Service
 public class CommandRemoteService {
 
+	@GrpcClient("pluto")
+	private CommandServiceBlockingStub commandServiceStub;
 	@Autowired
 	private ContextService contextService;
 	@Autowired
@@ -35,9 +32,6 @@ public class CommandRemoteService {
 	@Autowired
 	private GrpcObjectMapper objectMapper;
 
-	@GrpcClient("pluto")
-	private CommandServiceBlockingStub commandServiceStub;
-
 	public Command createCommand(CreateCommand command, long version) {
 		return doCreateCommand(buildCreateCommandRequest(command, version));
 	}
@@ -59,7 +53,7 @@ public class CommandRemoteService {
 				.setRelationId(command.getRelationId())
 				.setRelationVersion(version)
 				.addAllBody(bodyMapper.mapToBodyFields(command.getBody()))
-				.setBodyObj(objectMapper.fromMap(getBodyAsMap(command.getBody())))
+				.setBodyObj(objectMapper.fromMap(bodyMapper.fromObjectToMap(command.getBody())))
 				.setOrderString(command.getOrder().name());
 
 		Optional.ofNullable(command.getRedirectRequest()).map(mapper::toGrpcRedirectRequest).ifPresent(requestBuilder::setRedirectRequest);
@@ -67,16 +61,6 @@ public class CommandRemoteService {
 		return requestBuilder.build();
 	}
 
-	Map<String, Object> getBodyAsMap(CommandBody commandBody) {
-		return new BeanMap(commandBody).entrySet().stream()
-				.filter(this::isValidEntry)
-				.collect(Collectors.toMap(entry -> entry.getKey().toString(), Entry::getValue));
-	}
-
-	boolean isValidEntry(Entry<Object, Object> entry) {
-		return Objects.nonNull(entry.getKey()) && Objects.nonNull(entry.getValue());
-	}
-
 	GrpcCreateCommandRequest buildCreateAttachedItemCommandRequest(CreateCommand command, String itemName) {
 		return GrpcCreateCommandRequest.newBuilder()
 				.setCallContext(contextService.createCallContext())
diff --git a/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandBodyMapperTest.java b/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandBodyMapperTest.java
index d575f4c02da188fe40337249da5530df5f4afb5b..89440b477474c51a4884bcf0f969f27b31656390 100644
--- a/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandBodyMapperTest.java
+++ b/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandBodyMapperTest.java
@@ -1,12 +1,11 @@
 package de.itvsh.goofy.common.command;
 
-import static org.assertj.core.api.Assertions.*;
-
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 import org.apache.commons.lang3.StringUtils;
+import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.mapstruct.factory.Mappers;
@@ -14,6 +13,8 @@ import org.mockito.ArgumentCaptor;
 import org.mockito.Captor;
 import org.mockito.Spy;
 
+import static org.assertj.core.api.Assertions.*;
+
 import de.itvsh.goofy.common.binaryfile.BinaryFileTestFactory;
 import de.itvsh.goofy.postfach.PostfachMailTestFactory;
 import de.itvsh.goofy.vorgang.VorgangHeaderTestFactory;
@@ -29,6 +30,48 @@ class CommandBodyMapperTest {
 	@Spy
 	private CommandBodyMapper mapper = Mappers.getMapper(CommandBodyMapper.class);
 
+	@DisplayName("Map from object to map")
+	@Nested
+	class TestFromObjectToMap {
+
+		@Test
+		void shouldMapAllFieldsExceptClass() {
+			var commandAsObject = CommandTestFactory.create();
+
+			var mappedMap = mapper.fromObjectToMap(commandAsObject);
+
+			assertThat(mappedMap).hasSize(5).doesNotContainKey("class");
+		}
+
+		@Test
+		void shouldNotMapNullValue() {
+			var commandAsObject = CommandTestFactory.createBuilder().status(null).build();
+
+			var mappedMap = mapper.fromObjectToMap(commandAsObject);
+
+			assertThat(mappedMap)
+					.hasSize(4)
+					.doesNotContainKey("status")
+					.containsEntry("order", CommandTestFactory.ORDER)
+					.containsEntry("relationId", CommandTestFactory.RELATION_ID)
+					.containsEntry("vorgangId", CommandTestFactory.VORGANG_ID);
+		}
+
+		@Test
+		void shouldMapAllValues() {
+			var commandAsObject = CommandTestFactory.create();
+
+			var mappedMap = mapper.fromObjectToMap(commandAsObject);
+
+			assertThat(mappedMap)
+					.hasSize(5)
+					.containsEntry("status", CommandTestFactory.STATUS)
+					.containsEntry("order", CommandTestFactory.ORDER)
+					.containsEntry("relationId", CommandTestFactory.RELATION_ID)
+					.containsEntry("vorgangId", CommandTestFactory.VORGANG_ID);
+		}
+	}
+
 	@Nested
 	class TestMapToBody {
 		@Test
diff --git a/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandRemoteServiceTest.java b/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandRemoteServiceTest.java
index e7f3da7f7ec1fc753f6c5a0d7ee39295782d8cd5..3b9794b4c12d1a7d2d96c35e805e0c758b02c2b6 100644
--- a/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandRemoteServiceTest.java
+++ b/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandRemoteServiceTest.java
@@ -4,9 +4,7 @@ import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
 
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.Map;
-import java.util.Map.Entry;
 import java.util.Optional;
 import java.util.Set;
 import java.util.stream.Collectors;
@@ -27,7 +25,6 @@ import org.mockito.Spy;
 import static org.assertj.core.api.Assertions.*;
 
 import de.itvsh.goofy.common.callcontext.ContextService;
-import de.itvsh.goofy.postfach.PostfachMailTestFactory;
 import de.itvsh.goofy.vorgang.RedirectRequestTestFactory;
 import de.itvsh.goofy.vorgang.VorgangHeaderTestFactory;
 import de.itvsh.kop.pluto.common.grpc.GrpcObjectMapper;
@@ -158,7 +155,7 @@ class CommandRemoteServiceTest {
 			void shouldCallBodyMapper() {
 				buildRequest();
 
-				verify(bodyMapper).mapToBodyFields(any(CommandBody.class));
+				verify(bodyMapper).fromObjectToMap(any(CommandBody.class));
 			}
 
 			@Test
@@ -200,51 +197,6 @@ class CommandRemoteServiceTest {
 						CommandTestFactory.VERSION);
 			}
 		}
-
-		@DisplayName("Get command body as map")
-		@Nested
-		class TestGetBodyAsMap {
-
-			@Test
-			void shouldReturnMap() {
-				var bodyMap = service.getBodyAsMap(PostfachMailTestFactory.create());
-
-				assertThat(bodyMap).containsEntry("postfachId", PostfachMailTestFactory.POSTFACH_ID);
-			}
-
-			@DisplayName("is valid entry")
-			@Nested
-			class TestIsValidEntry {
-
-				@Test
-				void shouldReturnFalseOnNullKey() {
-					var isValidEntry = service.isValidEntry(createEntry(null, "huhu"));
-
-					assertThat(isValidEntry).isFalse();
-				}
-
-				@Test
-				void shouldReturnFalseOnNullValue() {
-					var isValidEntry = service.isValidEntry(createEntry("huhu", null));
-
-					assertThat(isValidEntry).isFalse();
-				}
-
-				@Test
-				void shouldReturnFaoseOnValidEntry() {
-					var isValidEntry = service.isValidEntry(createEntry("huhu", "huhu"));
-
-					assertThat(isValidEntry).isTrue();
-				}
-
-				private Entry<Object, Object> createEntry(Object key, Object value) {
-					var map = new HashMap<Object, Object>();
-					map.put(key, value);
-
-					return (Entry<Object, Object>) map.entrySet().toArray()[0];
-				}
-			}
-		}
 	}
 
 	@Nested