diff --git a/goofy-server/src/main/java/de/itvsh/goofy/kommentar/Kommentar.java b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/Kommentar.java
new file mode 100644
index 0000000000000000000000000000000000000000..25f31f9e7825821372fb0485f70cb4388221fd66
--- /dev/null
+++ b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/Kommentar.java
@@ -0,0 +1,41 @@
+package de.itvsh.goofy.kommentar;
+
+import static de.itvsh.goofy.common.ValidationMessageCodes.*;
+
+import java.time.ZonedDateTime;
+
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonProperty.Access;
+
+import lombok.AccessLevel;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+
+@Getter
+@Builder(toBuilder = true)
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+@AllArgsConstructor(access = AccessLevel.PACKAGE)
+@ToString
+public class Kommentar {
+
+	@JsonIgnore
+	private String id;
+
+	@JsonIgnore
+	private String createdBy;
+	@JsonProperty(access = Access.READ_ONLY)
+	private String createdByName;
+	@JsonProperty(access = Access.READ_ONLY)
+	private ZonedDateTime createdAt;
+
+	@NotNull(message = FIELD_IS_NULL)
+	@Size(min = 1, message = FIELD_SIZE)
+	private String text;
+}
diff --git a/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarCommand.java b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..42c681bb743ce71bf35155a85e8df8dbb49b200f
--- /dev/null
+++ b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarCommand.java
@@ -0,0 +1,33 @@
+package de.itvsh.goofy.kommentar;
+
+import javax.validation.Valid;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
+import de.itvsh.goofy.common.command.CommandOrder;
+import de.itvsh.goofy.common.command.CommandStatus;
+import lombok.AccessLevel;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+
+@Builder(toBuilder = true)
+@Getter
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+@AllArgsConstructor(access = AccessLevel.PACKAGE)
+@EqualsAndHashCode
+class KommentarCommand {
+
+	@JsonIgnore
+	private String id;
+
+	private CommandOrder order;
+
+	@JsonIgnore
+	private CommandStatus status;
+
+	@Valid
+	private Kommentar kommentar;
+}
diff --git a/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarCommandController.java b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarCommandController.java
new file mode 100644
index 0000000000000000000000000000000000000000..dfefce30e170a8c61f312b076b36507ffc95fae0
--- /dev/null
+++ b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarCommandController.java
@@ -0,0 +1,38 @@
+package de.itvsh.goofy.kommentar;
+
+import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import de.itvsh.goofy.common.command.CommandController;
+
+@RestController
+@RequestMapping(KommentarCommandController.KOMMENTAR_COMMANDS)
+public class KommentarCommandController {
+
+	static final String KOMMENTAR_COMMANDS = "/api/kommentars/{kommentarId}/commands";
+
+	@RestController
+	@RequestMapping(KommentarCommandByVorgangController.KOMMENTAR_COMMANDS_BY_VORGANG)
+	public static class KommentarCommandByVorgangController {
+
+		static final String KOMMENTAR_COMMANDS_BY_VORGANG = "/api/vorgangs/{vorgangId}/kommentarCommands";
+
+		@Autowired
+		private KommentarService service;
+
+		@PostMapping()
+		public ResponseEntity<Void> createCommand(@RequestBody KommentarCommand command, @PathVariable String vorgangId) {
+			var created = service.createCreateCommand(vorgangId, command);
+
+			return ResponseEntity.created(linkTo(CommandController.class).slash(created.getId()).toUri()).build();
+		}
+
+	}
+}
diff --git a/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarController.java b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarController.java
new file mode 100644
index 0000000000000000000000000000000000000000..4c8f999c145514e0f26da64c25021f018555b0cf
--- /dev/null
+++ b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarController.java
@@ -0,0 +1,15 @@
+package de.itvsh.goofy.kommentar;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping(KommentarController.KOMMENTAR_PATH)
+public class KommentarController {
+
+	static final String KOMMENTAR_PATH = "/api/kommentars"; // NOSONAR
+
+	@Autowired
+	private KommentarService service;
+}
diff --git a/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarService.java b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarService.java
new file mode 100644
index 0000000000000000000000000000000000000000..637254578c6b9e1dfa4ae9bb9b18f921990ac20d
--- /dev/null
+++ b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarService.java
@@ -0,0 +1,9 @@
+package de.itvsh.goofy.kommentar;
+
+public class KommentarService {
+
+	public KommentarCommand createCreateCommand(String vorgangId, KommentarCommand command) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+}