From 596cde4f27f28117773df738c855967874269da2 Mon Sep 17 00:00:00 2001
From: Krzysztof Witukiewicz <krzysztof.witukiewicz@mgm-tp.com>
Date: Thu, 13 Feb 2025 11:26:11 +0100
Subject: [PATCH] OZG-7608 OZG-7729 gRPC endpoint for deleted Vorgaenge

---
 .../src/main/protobuf/vorgang.proto           |  6 ++
 .../vorgang/vorgang/VorgangGrpcService.java   |  7 +++
 .../vorgang/vorgang/VorgangRepository.java    |  5 ++
 .../vorgang/vorgang/VorgangService.java       |  6 +-
 .../ozgcloud/vorgang/vorgang/VorgangStub.java |  2 +-
 .../vorgang/vorgang/VorgangStubMapper.java    |  1 +
 ...cFindDeletedVorgangRequestTestFactory.java | 35 +++++++++++
 .../vorgang/VorgangGrpcServiceTest.java       | 61 +++++++++++++++++++
 .../vorgang/VorgangHeaderServiceTest.java     |  2 +-
 .../vorgang/VorgangRepositoryITCase.java      | 21 ++++++-
 .../vorgang/vorgang/VorgangServiceTest.java   | 25 +++++++-
 .../vorgang/VorgangStubMapperTest.java        | 18 ++++++
 .../vorgang/VorgangStubTestFactory.java       |  7 +++
 .../vorgang/vorgang/VorgangTestFactory.java   |  5 +-
 14 files changed, 192 insertions(+), 9 deletions(-)
 create mode 100644 vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/GrpcFindDeletedVorgangRequestTestFactory.java

diff --git a/vorgang-manager-interface/src/main/protobuf/vorgang.proto b/vorgang-manager-interface/src/main/protobuf/vorgang.proto
index 2dbba69a4..fe49a87a5 100644
--- a/vorgang-manager-interface/src/main/protobuf/vorgang.proto
+++ b/vorgang-manager-interface/src/main/protobuf/vorgang.proto
@@ -47,6 +47,9 @@ service VorgangService {
 
 	rpc CreateCollaborationVorgang(GrpcCreateCollaborationVorgangRequest) returns (GrpcCreateCollaborationVorgangResponse) {
 	}
+
+	rpc FindDeletedVorgang(GrpcFindDeletedVorgangRequest) returns (stream GrpcVorgangHeader) {
+	}
 }
 
 message GrpcCreateVorgangRequest {
@@ -107,4 +110,7 @@ message GrpcFinishCreationRequest {
 
 message GrpcFinishCreationResponse {
 	string message = 1;
+}
+
+message GrpcFindDeletedVorgangRequest {
 }
\ No newline at end of file
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangGrpcService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangGrpcService.java
index 82270add8..bdb2c373d 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangGrpcService.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangGrpcService.java
@@ -48,6 +48,7 @@ class VorgangGrpcService extends VorgangServiceGrpc.VorgangServiceImplBase {
 	private final IncomingFileGroupMapper incomingFileGroupMapper;
 	private final CollaborationService collaborationService;
 	private final CreateCollaborationVorgangRequestMapper createCollaborationVorgangRequestMapper;
+	private final VorgangStubMapper vorgangStubMapper;
 
 	@Override
 	public void startCreation(GrpcCreateVorgangRequest request, StreamObserver<GrpcCreateVorgangResponse> responseObserver) {
@@ -138,4 +139,10 @@ class VorgangGrpcService extends VorgangServiceGrpc.VorgangServiceImplBase {
 	GrpcCreateCollaborationVorgangResponse buildCreateCollaborationVorgangResponse(Vorgang vorgang) {
 		return GrpcCreateCollaborationVorgangResponse.newBuilder().setVorgangId(vorgang.getId()).build();
 	}
+
+	@Override
+	public void findDeletedVorgang(GrpcFindDeletedVorgangRequest request, StreamObserver<GrpcVorgangHeader> responseObserver) {
+		vorgangService.findDeleted().map(vorgangStubMapper::toGrpcVorgangHeader).forEach(responseObserver::onNext);
+		responseObserver.onCompleted();
+	}
 }
\ No newline at end of file
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangRepository.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangRepository.java
index 125315d1d..4363b1e02 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangRepository.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangRepository.java
@@ -27,6 +27,7 @@ import static de.ozgcloud.vorgang.common.db.CriteriaUtil.*;
 import static org.springframework.data.mongodb.core.query.Query.*;
 
 import java.util.Collection;
+import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Stream;
@@ -127,4 +128,8 @@ class VorgangRepository {
 		return new Criteria().andOperator(CriteriaUtil.isId(vorgangId), CriteriaUtil.isNotDeleted(),
 				Criteria.where(VorgangService.KEY_HEADER_LOCK).ne(null));
 	}
+
+	public Stream<VorgangStub> findDeleted() {
+		return mongoOperations.stream(query(CriteriaUtil.vorgangInStatus(List.of(Vorgang.Status.DELETED))), VorgangStub.class);
+	}
 }
\ No newline at end of file
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangService.java
index bd1b375f8..3cbc342a0 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangService.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangService.java
@@ -33,8 +33,6 @@ import java.util.Objects;
 import java.util.Optional;
 import java.util.stream.Stream;
 
-import jakarta.validation.Valid;
-
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.tuple.Pair;
@@ -53,6 +51,7 @@ import de.ozgcloud.vorgang.clientattribute.ClientAttributeReadPermitted;
 import de.ozgcloud.vorgang.clientattribute.ClientAttributesMap;
 import de.ozgcloud.vorgang.common.errorhandling.NotFoundException;
 import de.ozgcloud.vorgang.servicekonto.ServiceKonto;
+import jakarta.validation.Valid;
 import lombok.NonNull;
 import lombok.RequiredArgsConstructor;
 
@@ -275,4 +274,7 @@ public class VorgangService {
 		return lock.map(Lock::getClientName).filter(lockingClient -> !lockingClient.equals(clientName)).isPresent();
 	}
 
+	public Stream<VorgangStub> findDeleted() {
+		return repository.findDeleted();
+	}
 }
\ No newline at end of file
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangStub.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangStub.java
index a7562d92e..0268e82bc 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangStub.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangStub.java
@@ -36,7 +36,7 @@ import lombok.Getter;
 @Getter
 @Document(collection = Vorgang.COLLECTION_NAME)
 @TypeAlias("VorgangStub")
-class VorgangStub {
+public class VorgangStub {
 
 	@Id
 	private String id;
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangStubMapper.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangStubMapper.java
index 098b34a18..741c82882 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangStubMapper.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangStubMapper.java
@@ -60,4 +60,5 @@ interface VorgangStubMapper {
 		}
 	}
 
+	GrpcVorgangHeader toGrpcVorgangHeader(VorgangStub vorgangStub);
 }
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/GrpcFindDeletedVorgangRequestTestFactory.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/GrpcFindDeletedVorgangRequestTestFactory.java
new file mode 100644
index 000000000..91d47686c
--- /dev/null
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/GrpcFindDeletedVorgangRequestTestFactory.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den
+ * Ministerpräsidenten des Landes Schleswig-Holstein
+ * Staatskanzlei
+ * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+ *
+ * Lizenziert unter der EUPL, Version 1.2 oder - sobald
+ * diese von der Europäischen Kommission genehmigt wurden -
+ * Folgeversionen der EUPL ("Lizenz");
+ * Sie dürfen dieses Werk ausschließlich gemäß
+ * dieser Lizenz nutzen.
+ * Eine Kopie der Lizenz finden Sie hier:
+ *
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+ *
+ * Sofern nicht durch anwendbare Rechtsvorschriften
+ * gefordert oder in schriftlicher Form vereinbart, wird
+ * die unter der Lizenz verbreitete Software "so wie sie
+ * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+ * ausdrücklich oder stillschweigend - verbreitet.
+ * Die sprachspezifischen Genehmigungen und Beschränkungen
+ * unter der Lizenz sind dem Lizenztext zu entnehmen.
+ */
+package de.ozgcloud.vorgang.vorgang;
+
+class GrpcFindDeletedVorgangRequestTestFactory {
+
+	public static GrpcFindDeletedVorgangRequest create() {
+		return createBuilder().build();
+	}
+
+	public static GrpcFindDeletedVorgangRequest.Builder createBuilder() {
+		return GrpcFindDeletedVorgangRequest.newBuilder();
+	}
+}
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangGrpcServiceTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangGrpcServiceTest.java
index 1fcfd3b10..265b788a7 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangGrpcServiceTest.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangGrpcServiceTest.java
@@ -29,6 +29,7 @@ import static org.mockito.Mockito.*;
 
 import java.util.Collections;
 import java.util.List;
+import java.util.stream.Stream;
 
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
@@ -42,6 +43,7 @@ import org.mockito.Mock;
 import org.mockito.Spy;
 import org.springframework.data.domain.Page;
 
+import de.ozgcloud.nachrichten.common.vorgang.GrpcVorgangHeaderTestFactory;
 import de.ozgcloud.vorgang.collaboration.CollaborationService;
 import de.ozgcloud.vorgang.collaboration.CreateCollaborationVorgangBadRequestException;
 import de.ozgcloud.vorgang.collaboration.CreateCollaborationVorgangRequest;
@@ -66,6 +68,8 @@ class VorgangGrpcServiceTest {
 	private VorgangHeaderService headerService;
 	@Mock
 	private VorgangHeaderMapper vorgangHeaderMapper;
+	@Mock
+	private VorgangStubMapper vorgangStubMapper;
 
 	@Mock
 	private EingangMapper eingangMapper;
@@ -510,4 +514,61 @@ class VorgangGrpcServiceTest {
 			assertThat(result.getVorgangId()).isEqualTo(VorgangTestFactory.ID);
 		}
 	}
+
+	@Nested
+	class TestFindDeleteVorgang {
+
+		private final GrpcFindDeletedVorgangRequest request = GrpcFindDeletedVorgangRequestTestFactory.create();
+		@Mock
+		private StreamObserver<GrpcVorgangHeader> responseObserver;
+
+		private final VorgangStub vorgangStub = VorgangStubTestFactory.create();
+		private final GrpcVorgangHeader grpcVorgangHeader = GrpcVorgangHeaderTestFactory.create();
+
+		@BeforeEach
+		void init() {
+			when(vorgangService.findDeleted()).thenReturn(Stream.of(vorgangStub));
+			when(vorgangStubMapper.toGrpcVorgangHeader(vorgangStub)).thenReturn(grpcVorgangHeader);
+		}
+
+		@Test
+		void shouldFindDeleted() {
+			findDeletedVorgang();
+
+			verify(vorgangService).findDeleted();
+		}
+
+		@Test
+		void shouldMapToGrpc() {
+			findDeletedVorgang();
+
+			verify(vorgangStubMapper).toGrpcVorgangHeader(vorgangStub);
+		}
+
+		@Test
+		void shouldCallOnNext() {
+			findDeletedVorgang();
+
+			verify(responseObserver).onNext(grpcVorgangHeader);
+		}
+
+		@Test
+		void shouldCallOnCompleted() {
+			findDeletedVorgang();
+
+			verify(responseObserver).onCompleted();
+		}
+
+		@Test
+		void shouldNotCatchExceptions() {
+			var exception = new RuntimeException();
+			when(vorgangStubMapper.toGrpcVorgangHeader(vorgangStub)).thenThrow(exception);
+
+			assertThatThrownBy(this::findDeletedVorgang).isSameAs(exception);
+		}
+
+		private void findDeletedVorgang() {
+			service.findDeletedVorgang(request, responseObserver);
+		}
+	}
 }
\ No newline at end of file
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangHeaderServiceTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangHeaderServiceTest.java
index 719ae2ead..74d47f18f 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangHeaderServiceTest.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangHeaderServiceTest.java
@@ -141,7 +141,7 @@ class VorgangHeaderServiceTest {
 	}
 
 	@Nested
-	class TestGEtById {
+	class TestGetById {
 
 		@Test
 		void shouldCallFindById() {
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangRepositoryITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangRepositoryITCase.java
index 5244ce687..8f81b6fd4 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangRepositoryITCase.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangRepositoryITCase.java
@@ -23,6 +23,7 @@
  */
 package de.ozgcloud.vorgang.vorgang;
 
+import static de.ozgcloud.vorgang.vorgang.Vorgang.Status.*;
 import static org.assertj.core.api.Assertions.*;
 import static org.junit.jupiter.api.Assertions.*;
 
@@ -41,6 +42,8 @@ import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.mongodb.core.MongoOperations;
 
+import com.thedeanda.lorem.LoremIpsum;
+
 import de.ozgcloud.common.test.DataITCase;
 
 @DataITCase
@@ -255,7 +258,7 @@ class VorgangRepositoryITCase {
 
 		@Test
 		void shouldNotExistsDELETEDVorgang() {
-			mongoOperations.save(VorgangTestFactory.createBuilder().status(Vorgang.Status.DELETED).build());
+			mongoOperations.save(VorgangTestFactory.createBuilder().status(DELETED).build());
 
 			var exists = repository.exists(VorgangTestFactory.ID, Collections.singleton(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID));
 
@@ -435,4 +438,20 @@ class VorgangRepositoryITCase {
 			return mongoOperations.findById(VorgangTestFactory.ID, Vorgang.class);
 		}
 	}
+
+	@Nested
+	class TestFindDeleted {
+
+		private static final String DELETED_VORGANG_NAME = LoremIpsum.getInstance().getWords(3);
+
+		@Test
+		void shouldReturnOnlyWhereStatusIsDeleted() {
+			mongoOperations.save(VorgangStubTestFactory.createBuilder().build());
+			mongoOperations.save(VorgangStubTestFactory.createBuilder().name(DELETED_VORGANG_NAME).status(DELETED).build());
+
+			var deleted = repository.findDeleted().toList();
+
+			assertThat(deleted).hasSize(1).extracting(VorgangStub::getName).contains(DELETED_VORGANG_NAME);
+		}
+	}
 }
\ No newline at end of file
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangServiceTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangServiceTest.java
index 53df957e7..3449659b1 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangServiceTest.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangServiceTest.java
@@ -24,7 +24,6 @@
 package de.ozgcloud.vorgang.vorgang;
 
 import static org.assertj.core.api.Assertions.*;
-import static org.assertj.core.api.InstanceOfAssertFactories.*;
 import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
@@ -35,7 +34,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 
-import org.assertj.core.api.InstanceOfAssertFactories;
+import org.assertj.core.api.*;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
@@ -760,4 +759,26 @@ class VorgangServiceTest {
 			assertThat(result).isFalse();
 		}
 	}
+
+
+	@Nested
+	class TestFindDeleted {
+
+		@Test
+		void shouldCallRepository() {
+			service.findDeleted();
+
+			verify(repository).findDeleted();
+		}
+
+		@Test
+		void shouldReturnRepositoryResult() {
+			var repositoryResult = List.of(VorgangStubTestFactory.create());
+			when(repository.findDeleted()).thenReturn(repositoryResult.stream());
+
+			var serviceResult = service.findDeleted().toList();
+
+			assertThat(serviceResult).isEqualTo(repositoryResult);
+		}
+	}
 }
\ No newline at end of file
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangStubMapperTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangStubMapperTest.java
index c1d2c2586..087abf226 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangStubMapperTest.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangStubMapperTest.java
@@ -64,4 +64,22 @@ class VorgangStubMapperTest {
 		}
 	}
 
+	@Nested
+	class TestToGrpcVorgangHeader {
+
+		@Test
+		void shouldMapFields() {
+			var vorgangStub = VorgangStubTestFactory.createBuilder().status(Vorgang.Status.DELETED).build();
+			var expectedGrpcVorgangHeader = GrpcVorgangHeader.newBuilder()
+					.setId(VorgangStubTestFactory.ID)
+					.setName(VorgangStubTestFactory.NAME)
+					.setCreatedAt(VorgangStubTestFactory.CREATED_AT_STR)
+					.setStatus(Vorgang.Status.DELETED.name())
+					.build();
+
+			var mappedGrpcVorgangHeader = mapper.toGrpcVorgangHeader(vorgangStub);
+
+			assertThat(mappedGrpcVorgangHeader).isEqualTo(expectedGrpcVorgangHeader);
+		}
+	}
 }
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangStubTestFactory.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangStubTestFactory.java
index 1a5b3eff6..8833e98ec 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangStubTestFactory.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangStubTestFactory.java
@@ -23,8 +23,15 @@
  */
 package de.ozgcloud.vorgang.vorgang;
 
+import java.time.ZonedDateTime;
+
 public class VorgangStubTestFactory {
 
+	public static final String ID = VorgangTestFactory.ID;
+	public static final String NAME = VorgangTestFactory.NAME;
+	public static final String CREATED_AT_STR = VorgangTestFactory.CREATED_AT_STR;
+	public static final ZonedDateTime CREATED_AT = VorgangTestFactory.CREATED_AT;
+
 	public static VorgangStub create() {
 		return createBuilder().build();
 	}
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangTestFactory.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangTestFactory.java
index 6c7e4c40b..1f95514a9 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangTestFactory.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangTestFactory.java
@@ -30,9 +30,9 @@ import org.bson.types.ObjectId;
 import com.thedeanda.lorem.LoremIpsum;
 
 import de.ozgcloud.vorgang.callcontext.UserTestFactory;
-import de.ozgcloud.vorgang.vorgang.Vorgang.Status;
 import de.ozgcloud.vorgang.clientattribute.ClientAttributesMap;
 import de.ozgcloud.vorgang.clientattribute.ClientAttributesMapTestFactory;
+import de.ozgcloud.vorgang.vorgang.Vorgang.Status;
 
 public class VorgangTestFactory {
 
@@ -44,7 +44,8 @@ public class VorgangTestFactory {
 	public static final String INITIAL_DATE = "2021-01-10";
 	public static final String INITIAL_TIME = "10:30:00";
 	public static final String INITIAL_DATE_STR = "%sT%sZ".formatted(INITIAL_DATE, INITIAL_TIME);
-	public static final ZonedDateTime CREATED_AT = ZonedDateTime.parse(INITIAL_DATE_STR);
+	public static final String CREATED_AT_STR = INITIAL_DATE_STR;
+	public static final ZonedDateTime CREATED_AT = ZonedDateTime.parse(CREATED_AT_STR);
 
 	public static final String VORGANG_NUMMER = "VOR-GANG-NUMMER-1";
 	public static final String AKTENZEICHEN = LoremIpsum.getInstance().getWords(1);
-- 
GitLab