From ea826b92114610d7a53b7b552b34c0f92df49986 Mon Sep 17 00:00:00 2001
From: Henning Schmeink <hs344225@fh-muenster.de>
Date: Thu, 11 Nov 2021 22:04:19 +0100
Subject: [PATCH] added prio in testcase

---
 .../MatchingTestcollectionOld.java            |   10 -
 .../onlineschuhdemo/Testcollection-old.java   | 1095 +++++++++++++++++
 .../onlineschuhdemo/Testcollection.java       |  331 ++---
 .../main/resources/backup/1636632989310.zip   |  Bin 0 -> 8249 bytes
 .../main/resources/backup/1636637866368.zip   |  Bin 0 -> 8249 bytes
 .../main/resources/backup/1636645800372.zip   |  Bin 0 -> 8249 bytes
 .../main/resources/backup/1636646099109.zip   |  Bin 0 -> 8249 bytes
 .../main/resources/backup/1636646289337.zip   |  Bin 0 -> 8249 bytes
 .../Testcollection.bpmn-testgen               |   13 +-
 .../Testgenerator/bpmn/data/BPMNTestcase.java |  139 ++-
 .../prioritization/PrioritizationMetrics.java |    2 +-
 .../rest/dto/BPMNTestcaseDTO.java             |  123 +-
 .../service/converters/TestConverter.java     |  343 +++---
 .../rest/service/test/TestController.java     |  289 ++---
 .../rest/service/test/TestService.java        | 1048 ++++++++--------
 .../app/components/test/test.component.css    |   72 +-
 .../app/components/test/test.component.html   |  309 ++---
 17 files changed, 2363 insertions(+), 1411 deletions(-)
 create mode 100644 OnlineSchuhDemo/src/main/resources/backup/1636632989310.zip
 create mode 100644 OnlineSchuhDemo/src/main/resources/backup/1636637866368.zip
 create mode 100644 OnlineSchuhDemo/src/main/resources/backup/1636645800372.zip
 create mode 100644 OnlineSchuhDemo/src/main/resources/backup/1636646099109.zip
 create mode 100644 OnlineSchuhDemo/src/main/resources/backup/1636646289337.zip

diff --git a/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/MatchingTestcollectionOld.java b/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/MatchingTestcollectionOld.java
index 07d66c6..d12572e 100644
--- a/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/MatchingTestcollectionOld.java
+++ b/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/MatchingTestcollectionOld.java
@@ -651,12 +651,7 @@ public class MatchingTestcollectionOld {
 	@Deployment(resources = {"retoure.bpmn", "\\schuh_vernichtung_spende.dmn"})
 	public void casetill1() {
 
-		ProcessInstance processInstance = runtimeService() //
-			.startProcessInstanceByKey("Retoure", withVariables(VAR_BESCHAEDIGT, true, VAR_ERSTATTUNG, true, VAR_KUNDENNUMMER, "123")); //
-
 		assertThat(processInstance) //
-			.isStarted() //
-			.hasPassed(Events.RETOURE_START) //
 			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
 			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
 			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
@@ -696,7 +691,6 @@ public class MatchingTestcollectionOld {
 		complete(getLockedTask(lockedTasks0, ServiceTasks.KUNDENDATEN_ERMITTELN), ExternalServiceMockProvider.customerProvider(variableSnapshot0));
 
 		assertThat(processInstance) //
-			.hasPassed(Events.RETOURE_START) //
 			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
 			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
 			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
@@ -733,7 +727,6 @@ public class MatchingTestcollectionOld {
 		complete(task(UserTasks.MANUELLE_PRUEFUNG));
 
 		assertThat(processInstance) //
-			.hasPassed(Events.RETOURE_START) //
 			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
 			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
 			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
@@ -770,7 +763,6 @@ public class MatchingTestcollectionOld {
 		complete(task(UserTasks.PAKET_PACKEN));
 
 		assertThat(processInstance) //
-			.hasPassed(Events.RETOURE_START) //
 			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
 			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
 			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
@@ -807,7 +799,6 @@ public class MatchingTestcollectionOld {
 		complete(task(UserTasks.PAKET_PRUEFEN));
 
 		assertThat(processInstance) //
-			.hasPassed(Events.RETOURE_START) //
 			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
 			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
 			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
@@ -844,7 +835,6 @@ public class MatchingTestcollectionOld {
 		complete(task(UserTasks.PAKET_SENDEN));
 
 		assertThat(processInstance) //
-			.hasPassed(Events.RETOURE_START) //
 			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
 			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
 			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
diff --git a/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/Testcollection-old.java b/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/Testcollection-old.java
index 94c502e..fcfc89b 100644
--- a/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/Testcollection-old.java
+++ b/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/Testcollection-old.java
@@ -13,6 +13,9 @@ import org.camunda.bpm.engine.runtime.ProcessInstance;
 import org.camunda.bpm.engine.test.Deployment;
 import org.camunda.bpm.engine.test.ProcessEngineRule;
 import org.camunda.bpm.engine.externaltask.LockedExternalTask;
+import org.camunda.bpm.engine.test.mock.Mocks;
+import de.sample.onlineschuhdemo.externalaccess.LagerService;
+import de.sample.onlineschuhdemo.externalaccess.WarennummerErmittelnDelegate;
 import org.camunda.bpm.extension.process_test_coverage.junit.rules.TestCoverageProcessEngineRuleBuilder;
 import org.junit.Before;
 import org.junit.ClassRule;
@@ -27,6 +30,22 @@ public class Testcollection-old {
 	@Rule
 	public static ProcessEngineRule rule = TestCoverageProcessEngineRuleBuilder.create().build();
 
+	private static final String VAR_KUNDENNUMMER = "kundennummer";
+	private static final String VAR_MARKE = "marke";
+	private static final String VAR_IBAN = "iban";
+	private static final String VAR_VORNAME = "vorname";
+	private static final String VAR_NACHNAME = "nachname";
+	private static final String VAR_PAKETTYP = "pakettyp";
+	private static final String VAR_EMAILGESENDET = "emailGesendet";
+	private static final String VAR_FIRSTNAME = "firstname";
+	private static final String VAR_LASTNAME = "lastname";
+	private static final String VAR_IBANREFUND = "ibanRefund";
+	private static final String VAR_CONFIRMATIONEMAILSENT = "confirmationEmailSent";
+	private static final String VAR_SERVICEIDENTIFIER = "serviceIdentifier";
+	private static final String VAR_PREIS = "preis";
+	private static final String VAR_ERSTATTUNG = "erstattung";
+	private static final String VAR_PAKET = "paket";
+	private static final String VAR_BESCHAEDIGT = "beschaedigt";
 
 	static {
 		LogFactory.useSlf4jLogging();
@@ -35,5 +54,1081 @@ public class Testcollection-old {
 	@Before
 	public void setup() {
 		init(rule.getProcessEngine());
+
+		LagerService lagerService = new LagerService();
+
+		WarennummerErmittelnDelegate warennummerErmittelnDelegate = new WarennummerErmittelnDelegate();
+		warennummerErmittelnDelegate.setLagerService(lagerService);
+
+		Mocks.register("warennummer", warennummerErmittelnDelegate);
+	}
+
+	@Test
+	@Deployment(resources = {"retoure.bpmn", "\\schuh_vernichtung_spende.dmn"})
+	public void normalverpackungAuspacken() {
+
+		ProcessInstance processInstance = runtimeService() //
+			.startProcessInstanceByKey("Retoure", withVariables(VAR_BESCHAEDIGT, false, VAR_ERSTATTUNG, false, VAR_KUNDENNUMMER, "C-123A456")); //
+
+		assertThat(processInstance) //
+			.isStarted() //
+			.hasPassed(Events.RETOURE_START) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
+			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
+			.hasNotPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasNotPassed(UserTasks.PAKET_PACKEN) //
+			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasNotPassed(UserTasks.PAKET_PACKEN) //
+			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
+			.hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) //
+			.hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) //
+			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
+			.hasNotPassed(UserTasks.WARE_SPENDEN) //
+			.isNotEnded(); //
+
+		Map<String, Object> variableSnapshot0 = runtimeService() //
+			.getVariables(processInstance.getId()); //
+		List<LockedExternalTask> lockedTasks0 = lockTasks("customer");
+		complete(getLockedTask(lockedTasks0, ServiceTasks.KUNDENDATEN_ERMITTELN), ExternalServiceMockProvider.customerProvider(variableSnapshot0));
+
+		assertThat(processInstance) //
+			.hasPassed(Events.RETOURE_START) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
+			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
+			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasNotPassed(UserTasks.PAKET_PACKEN) //
+			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasNotPassed(UserTasks.PAKET_PACKEN) //
+			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
+			.hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) //
+			.hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) //
+			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
+			.hasNotPassed(UserTasks.WARE_SPENDEN) //
+			.isNotEnded(); //
+
+		complete(task(UserTasks.MANUELLE_PRUEFUNG));
+
+		assertThat(processInstance) //
+			.hasPassed(Events.RETOURE_START) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
+			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
+			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasNotPassed(UserTasks.PAKET_PACKEN) //
+			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasNotPassed(UserTasks.PAKET_PACKEN) //
+			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
+			.hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) //
+			.hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) //
+			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
+			.hasNotPassed(UserTasks.WARE_SPENDEN) //
+			.isNotEnded(); //
+
+		complete(task(UserTasks.PAKET_PACKEN), withVariables(VAR_PAKETTYP, "Normalverpackung"));
+
+		assertThat(processInstance) //
+			.hasPassed(Events.RETOURE_START) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
+			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
+			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasPassed(UserTasks.PAKET_PACKEN) //
+			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasPassed(UserTasks.PAKET_PACKEN) //
+			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
+			.hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) //
+			.hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) //
+			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
+			.hasNotPassed(UserTasks.WARE_SPENDEN) //
+			.isNotEnded(); //
+
+		complete(task(UserTasks.PAKET_PRUEFEN), withVariables(VAR_PAKET, false));
+
+		assertThat(processInstance) //
+			.hasPassed(Events.RETOURE_START) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
+			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
+			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasPassed(UserTasks.PAKET_PACKEN) //
+			.hasPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasPassed(Gateways.GATEWAY_AUSPACKEN) //
+			.hasPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.hasPassed(Gateways.GATEWAY_14EVKAP) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasPassed(UserTasks.PAKET_PACKEN) //
+			.hasPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
+			.hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) //
+			.hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) //
+			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
+			.hasNotPassed(UserTasks.WARE_SPENDEN) //
+			.isNotEnded(); //
+
+		complete(task(UserTasks.PAKET_PACKEN), withVariables(VAR_PAKETTYP, "Luxusverpackung"));
+
+		assertThat(processInstance) //
+			.hasPassed(Events.RETOURE_START) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
+			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
+			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasPassed(UserTasks.PAKET_PACKEN) //
+			.hasPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasPassed(Gateways.GATEWAY_AUSPACKEN) //
+			.hasPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.hasPassed(Gateways.GATEWAY_14EVKAP) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasPassed(UserTasks.PAKET_PACKEN) //
+			.hasPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
+			.hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) //
+			.hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) //
+			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
+			.hasNotPassed(UserTasks.WARE_SPENDEN) //
+			.isNotEnded(); //
+
+		complete(task(UserTasks.PAKET_PRUEFEN), withVariables(VAR_PAKET, true));
+
+		assertThat(processInstance) //
+			.hasPassed(Events.RETOURE_START) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
+			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
+			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasPassed(UserTasks.PAKET_PACKEN) //
+			.hasPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasPassed(Gateways.GATEWAY_AUSPACKEN) //
+			.hasPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.hasPassed(Gateways.GATEWAY_14EVKAP) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasPassed(UserTasks.PAKET_PACKEN) //
+			.hasPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
+			.hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) //
+			.hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) //
+			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
+			.hasNotPassed(UserTasks.WARE_SPENDEN) //
+			.isNotEnded(); //
+
+		complete(task(UserTasks.PAKET_SENDEN));
+
+		assertThat(processInstance) //
+			.hasPassed(Events.RETOURE_START) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
+			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
+			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasPassed(UserTasks.PAKET_PACKEN) //
+			.hasPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasPassed(Gateways.GATEWAY_AUSPACKEN) //
+			.hasPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.hasPassed(Gateways.GATEWAY_14EVKAP) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasPassed(UserTasks.PAKET_PACKEN) //
+			.hasPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasPassed(UserTasks.PAKET_SENDEN) //
+			.hasPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
+			.hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) //
+			.hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) //
+			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
+			.hasNotPassed(UserTasks.WARE_SPENDEN) //
+			.isEnded() //
+			.variables() //
+				.contains(entry(VAR_KUNDENNUMMER, "C-123A456"), entry(VAR_VORNAME, "Max"), entry(VAR_ERSTATTUNG, false), entry(VAR_NACHNAME, "Mustermann"), entry(VAR_BESCHAEDIGT, false)); //
+
+	}
+
+	@Test
+	@Deployment(resources = {"retoure.bpmn", "\\schuh_vernichtung_spende.dmn"})
+	public void vernichtenErstattung() {
+
+		ProcessInstance processInstance = runtimeService() //
+			.startProcessInstanceByKey("Retoure", withVariables(VAR_BESCHAEDIGT, true, VAR_ERSTATTUNG, true, VAR_KUNDENNUMMER, "C-123A456")); //
+
+		assertThat(processInstance) //
+			.isStarted() //
+			.hasPassed(Events.RETOURE_START) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
+			.hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) //
+			.hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) //
+			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
+			.hasNotPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
+			.hasNotPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasNotPassed(UserTasks.PAKET_PACKEN) //
+			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
+			.hasNotPassed(UserTasks.WARE_SPENDEN) //
+			.isNotEnded(); //
+
+		complete(task(UserTasks.WARENDATEN_ERFASSEN), withVariables(VAR_MARKE, "Luxury Foot", VAR_PREIS, 350));
+
+		assertThat(processInstance) //
+			.hasPassed(Events.RETOURE_START) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
+			.hasPassed(UserTasks.WARENDATEN_ERFASSEN) //
+			.hasPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_VERNICHTUNG) //
+			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
+			.hasNotPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
+			.hasNotPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasNotPassed(UserTasks.PAKET_PACKEN) //
+			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
+			.hasNotPassed(UserTasks.WARE_SPENDEN) //
+			.isNotEnded(); //
+
+		complete(task(UserTasks.WARE_VERNICHTEN));
+
+		assertThat(processInstance) //
+			.hasPassed(Events.RETOURE_START) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
+			.hasPassed(UserTasks.WARENDATEN_ERFASSEN) //
+			.hasPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_VERNICHTUNG) //
+			.hasPassed(UserTasks.WARE_VERNICHTEN) //
+			.hasPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
+			.hasNotPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasNotPassed(UserTasks.PAKET_PACKEN) //
+			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
+			.hasNotPassed(UserTasks.WARE_SPENDEN) //
+			.isNotEnded(); //
+
+		Map<String, Object> variableSnapshot0 = runtimeService() //
+			.getVariables(processInstance.getId()); //
+		List<LockedExternalTask> lockedTasks0 = lockTasks("customer");
+		complete(getLockedTask(lockedTasks0, ServiceTasks.KUNDENDATEN_ERMITTELN), ExternalServiceMockProvider.customerProvider(variableSnapshot0));
+
+		assertThat(processInstance) //
+			.hasPassed(Events.RETOURE_START) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
+			.hasPassed(UserTasks.WARENDATEN_ERFASSEN) //
+			.hasPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_VERNICHTUNG) //
+			.hasPassed(UserTasks.WARE_VERNICHTEN) //
+			.hasPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
+			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasNotPassed(UserTasks.PAKET_PACKEN) //
+			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
+			.hasNotPassed(UserTasks.WARE_SPENDEN) //
+			.isNotEnded(); //
+
+		Map<String, Object> variableSnapshot1 = runtimeService() //
+			.getVariables(processInstance.getId()); //
+		variableSnapshot1.put(VAR_SERVICEIDENTIFIER, "getData");
+		List<LockedExternalTask> lockedTasks1 = lockTasks(lockedTasks0, "financial");
+		complete(getLockedTask(lockedTasks1, ServiceTasks.FINANZDATEN_ERMITTELN), ExternalServiceMockProvider.financialMock(variableSnapshot1));
+
+		assertThat(processInstance) //
+			.hasPassed(Events.RETOURE_START) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
+			.hasPassed(UserTasks.WARENDATEN_ERFASSEN) //
+			.hasPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_VERNICHTUNG) //
+			.hasPassed(UserTasks.WARE_VERNICHTEN) //
+			.hasPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
+			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasNotPassed(UserTasks.PAKET_PACKEN) //
+			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
+			.hasNotPassed(UserTasks.WARE_SPENDEN) //
+			.isNotEnded(); //
+
+		Map<String, Object> variableSnapshot2 = runtimeService() //
+			.getVariables(processInstance.getId()); //
+		variableSnapshot2.put(VAR_SERVICEIDENTIFIER, "refund");
+		List<LockedExternalTask> lockedTasks2 = lockTasks(lockedTasks1, "financial");
+		complete(getLockedTask(lockedTasks2, ServiceTasks.ERSTATTUNG), ExternalServiceMockProvider.financialMock(variableSnapshot2));
+
+		assertThat(processInstance) //
+			.hasPassed(Events.RETOURE_START) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
+			.hasPassed(UserTasks.WARENDATEN_ERFASSEN) //
+			.hasPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_VERNICHTUNG) //
+			.hasPassed(UserTasks.WARE_VERNICHTEN) //
+			.hasPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
+			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasPassed(ServiceTasks.ERSTATTUNG) //
+			.hasPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasNotPassed(UserTasks.PAKET_PACKEN) //
+			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
+			.hasNotPassed(UserTasks.WARE_SPENDEN) //
+			.isEnded() //
+			.variables() //
+				.contains(entry(VAR_KUNDENNUMMER, "C-123A456"), entry(VAR_EMAILGESENDET, "Nein"), entry(VAR_MARKE, "Luxury Foot"), entry(VAR_IBAN, "DE12345678900000123456"), entry(VAR_VORNAME, "Max"), entry(VAR_ERSTATTUNG, true), entry(VAR_NACHNAME, "Mustermann"), entry(VAR_BESCHAEDIGT, true)); //
+
+	}
+
+	@Test
+	@Deployment(resources = {"retoure.bpmn", "\\schuh_vernichtung_spende.dmn"})
+	public void casetill1() {
+
+		ProcessInstance processInstance = runtimeService() //
+			.startProcessInstanceByKey("Retoure", withVariables(VAR_BESCHAEDIGT, true, VAR_ERSTATTUNG, true, VAR_KUNDENNUMMER, "123")); //
+
+		assertThat(processInstance) //
+			.isStarted() //
+			.hasPassed(Events.RETOURE_START) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
+			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
+			.hasNotPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasNotPassed(UserTasks.PAKET_PACKEN) //
+			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
+			.hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) //
+			.hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) //
+			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
+			.hasNotPassed(UserTasks.WARE_SPENDEN) //
+			.isNotEnded(); //
+
+		Map<String, Object> variableSnapshot0 = runtimeService() //
+			.getVariables(processInstance.getId()); //
+		List<LockedExternalTask> lockedTasks0 = lockTasks("customer");
+		complete(getLockedTask(lockedTasks0, ServiceTasks.KUNDENDATEN_ERMITTELN), ExternalServiceMockProvider.customerProvider(variableSnapshot0));
+
+		assertThat(processInstance) //
+			.hasPassed(Events.RETOURE_START) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
+			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
+			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasNotPassed(UserTasks.PAKET_PACKEN) //
+			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
+			.hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) //
+			.hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) //
+			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
+			.hasNotPassed(UserTasks.WARE_SPENDEN) //
+			.isNotEnded(); //
+
+		Map<String, Object> variableSnapshot1 = runtimeService() //
+			.getVariables(processInstance.getId()); //
+		variableSnapshot1.put(VAR_SERVICEIDENTIFIER, "getData");
+		List<LockedExternalTask> lockedTasks1 = lockTasks(lockedTasks0, "financial");
+		complete(getLockedTask(lockedTasks1, ServiceTasks.FINANZDATEN_ERMITTELN), ExternalServiceMockProvider.financialMock(variableSnapshot1));
+
+		assertThat(processInstance) //
+			.hasPassed(Events.RETOURE_START) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
+			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
+			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasNotPassed(UserTasks.PAKET_PACKEN) //
+			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
+			.hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) //
+			.hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) //
+			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
+			.hasNotPassed(UserTasks.WARE_SPENDEN) //
+			.isNotEnded(); //
+
+		Map<String, Object> variableSnapshot2 = runtimeService() //
+			.getVariables(processInstance.getId()); //
+		variableSnapshot2.put(VAR_SERVICEIDENTIFIER, "refund");
+		List<LockedExternalTask> lockedTasks2 = lockTasks(lockedTasks1, "financial");
+		complete(getLockedTask(lockedTasks2, ServiceTasks.ERSTATTUNG), ExternalServiceMockProvider.financialMock(variableSnapshot2));
+
+		assertThat(processInstance) //
+			.hasPassed(Events.RETOURE_START) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
+			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
+			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasPassed(ServiceTasks.ERSTATTUNG) //
+			.hasPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasNotPassed(UserTasks.PAKET_PACKEN) //
+			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
+			.hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) //
+			.hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) //
+			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
+			.hasNotPassed(UserTasks.WARE_SPENDEN) //
+			.isEnded() //
+			.variables() //
+				.contains(entry(VAR_IBANREFUND, "DE80123084556"), entry(VAR_FIRSTNAME, "Till"), entry(VAR_VORNAME, "till"), entry(VAR_LASTNAME, "Brinkhus"), entry(VAR_SERVICEIDENTIFIER, "getData"), entry(VAR_BESCHAEDIGT, false), entry(VAR_KUNDENNUMMER, "123"), entry(VAR_EMAILGESENDET, "Ja"), entry(VAR_PREIS, 1234), entry(VAR_MARKE, "wer"), entry(VAR_IBAN, "DE80123084556"), entry(VAR_ERSTATTUNG, true), entry(VAR_CONFIRMATIONEMAILSENT, "Ja"), entry(VAR_NACHNAME, "Brinkhus"), entry(VAR_PAKETTYP, "Normalverpackung"), entry(VAR_PAKET, true)); //
+
+	}
+
+	@Test
+	@Deployment(resources = {"retoure.bpmn", "\\schuh_vernichtung_spende.dmn"})
+	public void casetill2() {
+
+		ProcessInstance processInstance = runtimeService() //
+			.startProcessInstanceByKey("Retoure", withVariables(VAR_BESCHAEDIGT, true, VAR_ERSTATTUNG, true, VAR_KUNDENNUMMER, "12345")); //
+
+		assertThat(processInstance) //
+			.isStarted() //
+			.hasPassed(Events.RETOURE_START) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
+			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
+			.hasNotPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasNotPassed(UserTasks.PAKET_PACKEN) //
+			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
+			.hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) //
+			.hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) //
+			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
+			.hasNotPassed(UserTasks.WARE_SPENDEN) //
+			.isNotEnded(); //
+
+		Map<String, Object> variableSnapshot0 = runtimeService() //
+			.getVariables(processInstance.getId()); //
+		List<LockedExternalTask> lockedTasks0 = lockTasks("customer");
+		complete(getLockedTask(lockedTasks0, ServiceTasks.KUNDENDATEN_ERMITTELN), ExternalServiceMockProvider.customerProvider(variableSnapshot0));
+
+		assertThat(processInstance) //
+			.hasPassed(Events.RETOURE_START) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
+			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
+			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasNotPassed(UserTasks.PAKET_PACKEN) //
+			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
+			.hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) //
+			.hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) //
+			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
+			.hasNotPassed(UserTasks.WARE_SPENDEN) //
+			.isNotEnded(); //
+
+		Map<String, Object> variableSnapshot1 = runtimeService() //
+			.getVariables(processInstance.getId()); //
+		variableSnapshot1.put(VAR_SERVICEIDENTIFIER, "getData");
+		List<LockedExternalTask> lockedTasks1 = lockTasks(lockedTasks0, "financial");
+		complete(getLockedTask(lockedTasks1, ServiceTasks.FINANZDATEN_ERMITTELN), ExternalServiceMockProvider.financialMock(variableSnapshot1));
+
+		assertThat(processInstance) //
+			.hasPassed(Events.RETOURE_START) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
+			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
+			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasNotPassed(UserTasks.PAKET_PACKEN) //
+			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
+			.hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) //
+			.hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) //
+			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
+			.hasNotPassed(UserTasks.WARE_SPENDEN) //
+			.isNotEnded(); //
+
+		Map<String, Object> variableSnapshot2 = runtimeService() //
+			.getVariables(processInstance.getId()); //
+		variableSnapshot2.put(VAR_SERVICEIDENTIFIER, "refund");
+		List<LockedExternalTask> lockedTasks2 = lockTasks(lockedTasks1, "financial");
+		complete(getLockedTask(lockedTasks2, ServiceTasks.ERSTATTUNG), ExternalServiceMockProvider.financialMock(variableSnapshot2));
+
+		assertThat(processInstance) //
+			.hasPassed(Events.RETOURE_START) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
+			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
+			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasPassed(ServiceTasks.ERSTATTUNG) //
+			.hasPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasNotPassed(UserTasks.PAKET_PACKEN) //
+			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
+			.hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) //
+			.hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) //
+			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
+			.hasNotPassed(UserTasks.WARE_SPENDEN) //
+			.isEnded(); //
+
+	}
+
+	@Test
+	@Deployment(resources = {"retoure.bpmn", "\\schuh_vernichtung_spende.dmn"})
+	public void TestHenninh() {
+
+		ProcessInstance processInstance = runtimeService() //
+			.startProcessInstanceByKey("Retoure"); //
+
+		assertThat(processInstance) //
+			.isStarted() //
+			.hasPassed(Events.RETOURE_START) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
+			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
+			.hasNotPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasNotPassed(UserTasks.PAKET_PACKEN) //
+			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
+			.hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) //
+			.hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) //
+			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
+			.hasNotPassed(UserTasks.WARE_SPENDEN) //
+			.isNotEnded(); //
+
+		Map<String, Object> variableSnapshot0 = runtimeService() //
+			.getVariables(processInstance.getId()); //
+		List<LockedExternalTask> lockedTasks0 = lockTasks("customer");
+		complete(getLockedTask(lockedTasks0, ServiceTasks.KUNDENDATEN_ERMITTELN), ExternalServiceMockProvider.customerProvider(variableSnapshot0));
+
+		assertThat(processInstance) //
+			.hasPassed(Events.RETOURE_START) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
+			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
+			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasNotPassed(UserTasks.PAKET_PACKEN) //
+			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
+			.hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) //
+			.hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) //
+			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
+			.hasNotPassed(UserTasks.WARE_SPENDEN) //
+			.isNotEnded(); //
+
+		complete(task(UserTasks.MANUELLE_PRUEFUNG));
+
+		assertThat(processInstance) //
+			.hasPassed(Events.RETOURE_START) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
+			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
+			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasNotPassed(UserTasks.PAKET_PACKEN) //
+			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
+			.hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) //
+			.hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) //
+			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
+			.hasNotPassed(UserTasks.WARE_SPENDEN) //
+			.isNotEnded(); //
+
+		complete(task(UserTasks.PAKET_PACKEN));
+
+		assertThat(processInstance) //
+			.hasPassed(Events.RETOURE_START) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
+			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
+			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasPassed(UserTasks.PAKET_PACKEN) //
+			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
+			.hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) //
+			.hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) //
+			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
+			.hasNotPassed(UserTasks.WARE_SPENDEN) //
+			.isNotEnded(); //
+
+		complete(task(UserTasks.PAKET_PRUEFEN));
+
+		assertThat(processInstance) //
+			.hasPassed(Events.RETOURE_START) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
+			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
+			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasPassed(UserTasks.PAKET_PACKEN) //
+			.hasPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
+			.hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) //
+			.hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) //
+			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
+			.hasNotPassed(UserTasks.WARE_SPENDEN) //
+			.isNotEnded(); //
+
+		complete(task(UserTasks.PAKET_SENDEN));
+
+		assertThat(processInstance) //
+			.hasPassed(Events.RETOURE_START) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
+			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
+			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasPassed(UserTasks.PAKET_PACKEN) //
+			.hasPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasPassed(UserTasks.PAKET_SENDEN) //
+			.hasPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
+			.hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) //
+			.hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) //
+			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
+			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
+			.hasNotPassed(UserTasks.WARE_SPENDEN) //
+			.isEnded(); //
+
 	}
 }
diff --git a/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/Testcollection.java b/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/Testcollection.java
index 4eefa28..7d1d743 100644
--- a/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/Testcollection.java
+++ b/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/Testcollection.java
@@ -607,10 +607,10 @@ public class Testcollection {
 
 	@Test
 	@Deployment(resources = {"retoure.bpmn", "\\schuh_vernichtung_spende.dmn"})
-	public void casetill1() {
+	public void TestHenninh() {
 
 		ProcessInstance processInstance = runtimeService() //
-			.startProcessInstanceByKey("Retoure", withVariables(VAR_BESCHAEDIGT, true, VAR_ERSTATTUNG, true, VAR_KUNDENNUMMER, "123")); //
+			.startProcessInstanceByKey("Retoure"); //
 
 		assertThat(processInstance) //
 			.isStarted() //
@@ -621,11 +621,6 @@ public class Testcollection {
 			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
 			.hasNotPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
 			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG) //
-			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
-			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
-			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
-			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
-			.hasNotPassed(Events.RETOURE_ENDE) //
 			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
 			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
 			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
@@ -633,6 +628,11 @@ public class Testcollection {
 			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
 			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
 			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
 			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
 			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
 			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
@@ -658,11 +658,6 @@ public class Testcollection {
 			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
 			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
 			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
-			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
-			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
-			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
-			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
-			.hasNotPassed(Events.RETOURE_ENDE) //
 			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
 			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
 			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
@@ -670,44 +665,11 @@ public class Testcollection {
 			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
 			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
 			.hasNotPassed(UserTasks.PAKET_SENDEN) //
-			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
-			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
-			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
-			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
-			.hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) //
-			.hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
-			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) //
-			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
-			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
-			.hasNotPassed(UserTasks.WARE_SPENDEN) //
-			.isNotEnded(); //
-
-		Map<String, Object> variableSnapshot1 = runtimeService() //
-			.getVariables(processInstance.getId()); //
-		variableSnapshot1.put(VAR_SERVICEIDENTIFIER, "getData");
-		List<LockedExternalTask> lockedTasks1 = lockTasks(lockedTasks0, "financial");
-		complete(getLockedTask(lockedTasks1, ServiceTasks.FINANZDATEN_ERMITTELN), ExternalServiceMockProvider.financialMock(variableSnapshot1));
-
-		assertThat(processInstance) //
-			.hasPassed(Events.RETOURE_START) //
-			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
-			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
-			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
-			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
-			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
-			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
-			.hasPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
-			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
 			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
 			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
 			.hasNotPassed(Events.RETOURE_ENDE) //
-			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
-			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
-			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
-			.hasNotPassed(UserTasks.PAKET_PACKEN) //
-			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
-			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
-			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
 			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
 			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
 			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
@@ -720,11 +682,7 @@ public class Testcollection {
 			.hasNotPassed(UserTasks.WARE_SPENDEN) //
 			.isNotEnded(); //
 
-		Map<String, Object> variableSnapshot2 = runtimeService() //
-			.getVariables(processInstance.getId()); //
-		variableSnapshot2.put(VAR_SERVICEIDENTIFIER, "refund");
-		List<LockedExternalTask> lockedTasks2 = lockTasks(lockedTasks1, "financial");
-		complete(getLockedTask(lockedTasks2, ServiceTasks.ERSTATTUNG), ExternalServiceMockProvider.financialMock(variableSnapshot2));
+		complete(task(UserTasks.MANUELLE_PRUEFUNG));
 
 		assertThat(processInstance) //
 			.hasPassed(Events.RETOURE_START) //
@@ -734,62 +692,18 @@ public class Testcollection {
 			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
 			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
 			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
-			.hasPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
-			.hasPassed(ServiceTasks.ERSTATTUNG) //
-			.hasPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
-			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
-			.hasPassed(Events.RETOURE_ENDE) //
-			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
-			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
-			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
 			.hasNotPassed(UserTasks.PAKET_PACKEN) //
 			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
 			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
 			.hasNotPassed(UserTasks.PAKET_SENDEN) //
-			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
-			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
-			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
-			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
-			.hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) //
-			.hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
-			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) //
-			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
-			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
-			.hasNotPassed(UserTasks.WARE_SPENDEN) //
-			.isEnded() //
-			.variables() //
-				.contains(entry(VAR_IBANREFUND, "DE80123084556"), entry(VAR_FIRSTNAME, "Till"), entry(VAR_VORNAME, "till"), entry(VAR_LASTNAME, "Brinkhus"), entry(VAR_SERVICEIDENTIFIER, "getData"), entry(VAR_BESCHAEDIGT, false), entry(VAR_KUNDENNUMMER, "123"), entry(VAR_EMAILGESENDET, "Ja"), entry(VAR_PREIS, 1234), entry(VAR_MARKE, "wer"), entry(VAR_IBAN, "DE80123084556"), entry(VAR_ERSTATTUNG, true), entry(VAR_CONFIRMATIONEMAILSENT, "Ja"), entry(VAR_NACHNAME, "Brinkhus"), entry(VAR_PAKETTYP, "Normalverpackung"), entry(VAR_PAKET, true)); //
-
-	}
-
-	@Test
-	@Deployment(resources = {"retoure.bpmn", "\\schuh_vernichtung_spende.dmn"})
-	public void casetill2() {
-
-		ProcessInstance processInstance = runtimeService() //
-			.startProcessInstanceByKey("Retoure", withVariables(VAR_BESCHAEDIGT, true, VAR_ERSTATTUNG, true, VAR_KUNDENNUMMER, "12345")); //
-
-		assertThat(processInstance) //
-			.isStarted() //
-			.hasPassed(Events.RETOURE_START) //
-			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
-			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
-			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
-			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
-			.hasNotPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
-			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG) //
-			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
-			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
 			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
 			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
 			.hasNotPassed(Events.RETOURE_ENDE) //
-			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
-			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
-			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
-			.hasNotPassed(UserTasks.PAKET_PACKEN) //
-			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
-			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
-			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
 			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
 			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
 			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
@@ -802,10 +716,7 @@ public class Testcollection {
 			.hasNotPassed(UserTasks.WARE_SPENDEN) //
 			.isNotEnded(); //
 
-		Map<String, Object> variableSnapshot0 = runtimeService() //
-			.getVariables(processInstance.getId()); //
-		List<LockedExternalTask> lockedTasks0 = lockTasks("customer");
-		complete(getLockedTask(lockedTasks0, ServiceTasks.KUNDENDATEN_ERMITTELN), ExternalServiceMockProvider.customerProvider(variableSnapshot0));
+		complete(task(UserTasks.PAKET_PACKEN));
 
 		assertThat(processInstance) //
 			.hasPassed(Events.RETOURE_START) //
@@ -815,18 +726,18 @@ public class Testcollection {
 			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
 			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
 			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
-			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
-			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
-			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
-			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
-			.hasNotPassed(Events.RETOURE_ENDE) //
-			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
-			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
-			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
-			.hasNotPassed(UserTasks.PAKET_PACKEN) //
+			.hasPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasPassed(UserTasks.PAKET_PACKEN) //
 			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
 			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
 			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
 			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
 			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
 			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
@@ -839,11 +750,7 @@ public class Testcollection {
 			.hasNotPassed(UserTasks.WARE_SPENDEN) //
 			.isNotEnded(); //
 
-		Map<String, Object> variableSnapshot1 = runtimeService() //
-			.getVariables(processInstance.getId()); //
-		variableSnapshot1.put(VAR_SERVICEIDENTIFIER, "getData");
-		List<LockedExternalTask> lockedTasks1 = lockTasks(lockedTasks0, "financial");
-		complete(getLockedTask(lockedTasks1, ServiceTasks.FINANZDATEN_ERMITTELN), ExternalServiceMockProvider.financialMock(variableSnapshot1));
+		complete(task(UserTasks.PAKET_PRUEFEN));
 
 		assertThat(processInstance) //
 			.hasPassed(Events.RETOURE_START) //
@@ -853,18 +760,18 @@ public class Testcollection {
 			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
 			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
 			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
-			.hasPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
-			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasPassed(UserTasks.PAKET_PACKEN) //
+			.hasPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(UserTasks.PAKET_SENDEN) //
 			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
 			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
 			.hasNotPassed(Events.RETOURE_ENDE) //
-			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
-			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
-			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
-			.hasNotPassed(UserTasks.PAKET_PACKEN) //
-			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
-			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
-			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
 			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
 			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
 			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
@@ -877,11 +784,7 @@ public class Testcollection {
 			.hasNotPassed(UserTasks.WARE_SPENDEN) //
 			.isNotEnded(); //
 
-		Map<String, Object> variableSnapshot2 = runtimeService() //
-			.getVariables(processInstance.getId()); //
-		variableSnapshot2.put(VAR_SERVICEIDENTIFIER, "refund");
-		List<LockedExternalTask> lockedTasks2 = lockTasks(lockedTasks1, "financial");
-		complete(getLockedTask(lockedTasks2, ServiceTasks.ERSTATTUNG), ExternalServiceMockProvider.financialMock(variableSnapshot2));
+		complete(task(UserTasks.PAKET_SENDEN));
 
 		assertThat(processInstance) //
 			.hasPassed(Events.RETOURE_START) //
@@ -891,18 +794,18 @@ public class Testcollection {
 			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
 			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
 			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
-			.hasPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
-			.hasPassed(ServiceTasks.ERSTATTUNG) //
+			.hasPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasPassed(UserTasks.PAKET_PACKEN) //
+			.hasPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasPassed(UserTasks.PAKET_SENDEN) //
 			.hasPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
 			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
 			.hasPassed(Events.RETOURE_ENDE) //
-			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
-			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
-			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
-			.hasNotPassed(UserTasks.PAKET_PACKEN) //
-			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
-			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
-			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
 			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
 			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
 			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
@@ -919,20 +822,20 @@ public class Testcollection {
 
 	@Test
 	@Deployment(resources = {"retoure.bpmn", "\\schuh_vernichtung_spende.dmn"})
-	public void TestHenninh() {
-
-		ProcessInstance processInstance = runtimeService() //
-			.startProcessInstanceByKey("Retoure"); //
+	public void TestHenning() {
 
 		assertThat(processInstance) //
-			.isStarted() //
-			.hasPassed(Events.RETOURE_START) //
 			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
 			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
 			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
 			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
 			.hasNotPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
 			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
 			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
 			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
 			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
@@ -940,11 +843,6 @@ public class Testcollection {
 			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
 			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
 			.hasNotPassed(UserTasks.PAKET_SENDEN) //
-			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
-			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
-			.hasNotPassed(Events.RETOURE_ENDE) //
-			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
-			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
 			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
 			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
 			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
@@ -963,13 +861,17 @@ public class Testcollection {
 		complete(getLockedTask(lockedTasks0, ServiceTasks.KUNDENDATEN_ERMITTELN), ExternalServiceMockProvider.customerProvider(variableSnapshot0));
 
 		assertThat(processInstance) //
-			.hasPassed(Events.RETOURE_START) //
 			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
 			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
 			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
 			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
 			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
 			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
+			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
 			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
 			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
 			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
@@ -977,11 +879,6 @@ public class Testcollection {
 			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
 			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
 			.hasNotPassed(UserTasks.PAKET_SENDEN) //
-			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
-			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
-			.hasNotPassed(Events.RETOURE_ENDE) //
-			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
-			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
 			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
 			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
 			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
@@ -994,62 +891,31 @@ public class Testcollection {
 			.hasNotPassed(UserTasks.WARE_SPENDEN) //
 			.isNotEnded(); //
 
-		complete(task(UserTasks.MANUELLE_PRUEFUNG));
+		Map<String, Object> variableSnapshot1 = runtimeService() //
+			.getVariables(processInstance.getId()); //
+		variableSnapshot1.put(VAR_SERVICEIDENTIFIER, "getData");
+		List<LockedExternalTask> lockedTasks1 = lockTasks(lockedTasks0, "financial");
+		complete(getLockedTask(lockedTasks1, ServiceTasks.FINANZDATEN_ERMITTELN), ExternalServiceMockProvider.financialMock(variableSnapshot1));
 
 		assertThat(processInstance) //
-			.hasPassed(Events.RETOURE_START) //
 			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
 			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
 			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
 			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
 			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
 			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
-			.hasPassed(UserTasks.MANUELLE_PRUEFUNG) //
-			.hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
-			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
-			.hasNotPassed(UserTasks.PAKET_PACKEN) //
-			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
-			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
-			.hasNotPassed(UserTasks.PAKET_SENDEN) //
+			.hasPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
 			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
 			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
 			.hasNotPassed(Events.RETOURE_ENDE) //
-			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
-			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
-			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
-			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
-			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
-			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
-			.hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) //
-			.hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
-			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) //
-			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
-			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
-			.hasNotPassed(UserTasks.WARE_SPENDEN) //
-			.isNotEnded(); //
-
-		complete(task(UserTasks.PAKET_PACKEN));
-
-		assertThat(processInstance) //
-			.hasPassed(Events.RETOURE_START) //
-			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
-			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
-			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
-			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
-			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
-			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
-			.hasPassed(UserTasks.MANUELLE_PRUEFUNG) //
-			.hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
-			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
-			.hasPassed(UserTasks.PAKET_PACKEN) //
+			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasNotPassed(UserTasks.PAKET_PACKEN) //
 			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
 			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
 			.hasNotPassed(UserTasks.PAKET_SENDEN) //
-			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
-			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
-			.hasNotPassed(Events.RETOURE_ENDE) //
-			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
-			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
 			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
 			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
 			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
@@ -1062,62 +928,31 @@ public class Testcollection {
 			.hasNotPassed(UserTasks.WARE_SPENDEN) //
 			.isNotEnded(); //
 
-		complete(task(UserTasks.PAKET_PRUEFEN));
-
-		assertThat(processInstance) //
-			.hasPassed(Events.RETOURE_START) //
-			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
-			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
-			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
-			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
-			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
-			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
-			.hasPassed(UserTasks.MANUELLE_PRUEFUNG) //
-			.hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
-			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
-			.hasPassed(UserTasks.PAKET_PACKEN) //
-			.hasPassed(UserTasks.PAKET_PRUEFEN) //
-			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
-			.hasNotPassed(UserTasks.PAKET_SENDEN) //
-			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
-			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
-			.hasNotPassed(Events.RETOURE_ENDE) //
-			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
-			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
-			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
-			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
-			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
-			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) //
-			.hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) //
-			.hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) //
-			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) //
-			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
-			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
-			.hasNotPassed(UserTasks.WARE_SPENDEN) //
-			.isNotEnded(); //
-
-		complete(task(UserTasks.PAKET_SENDEN));
+		Map<String, Object> variableSnapshot2 = runtimeService() //
+			.getVariables(processInstance.getId()); //
+		variableSnapshot2.put(VAR_SERVICEIDENTIFIER, "refund");
+		List<LockedExternalTask> lockedTasks2 = lockTasks(lockedTasks1, "financial");
+		complete(getLockedTask(lockedTasks2, ServiceTasks.ERSTATTUNG), ExternalServiceMockProvider.financialMock(variableSnapshot2));
 
 		assertThat(processInstance) //
-			.hasPassed(Events.RETOURE_START) //
 			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) //
 			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT) //
 			.hasPassed(ManualTasks.WARE_EINSORTIEREN) //
 			.hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) //
 			.hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) //
 			.hasPassed(Gateways.GATEWAY_NEUSENDUNG) //
-			.hasPassed(UserTasks.MANUELLE_PRUEFUNG) //
-			.hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
-			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
-			.hasPassed(UserTasks.PAKET_PACKEN) //
-			.hasPassed(UserTasks.PAKET_PRUEFEN) //
-			.hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
-			.hasPassed(UserTasks.PAKET_SENDEN) //
+			.hasPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
+			.hasPassed(ServiceTasks.ERSTATTUNG) //
 			.hasPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
 			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
 			.hasPassed(Events.RETOURE_ENDE) //
-			.hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) //
-			.hasNotPassed(ServiceTasks.ERSTATTUNG) //
+			.hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) //
+			.hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) //
+			.hasNotPassed(UserTasks.PAKET_PACKEN) //
+			.hasNotPassed(UserTasks.PAKET_PRUEFEN) //
+			.hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) //
+			.hasNotPassed(UserTasks.PAKET_SENDEN) //
 			.hasNotPassed(Gateways.GATEWAY_AUSPACKEN) //
 			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
 			.hasNotPassed(Gateways.GATEWAY_14EVKAP) //
@@ -1128,7 +963,9 @@ public class Testcollection {
 			.hasNotPassed(UserTasks.WARE_VERNICHTEN) //
 			.hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) //
 			.hasNotPassed(UserTasks.WARE_SPENDEN) //
-			.isEnded(); //
+			.isEnded() //
+			.variables() //
+				.contains(entry(VAR_KUNDENNUMMER, "123123123312")); //
 
 	}
 }
diff --git a/OnlineSchuhDemo/src/main/resources/backup/1636632989310.zip b/OnlineSchuhDemo/src/main/resources/backup/1636632989310.zip
new file mode 100644
index 0000000000000000000000000000000000000000..63fd01fcb7e744234dc9b5a0696367e958012788
GIT binary patch
literal 8249
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
TNBC=9m_OC^Pg_gz*XZ8>a=pc*

literal 0
HcmV?d00001

diff --git a/OnlineSchuhDemo/src/main/resources/backup/1636637866368.zip b/OnlineSchuhDemo/src/main/resources/backup/1636637866368.zip
new file mode 100644
index 0000000000000000000000000000000000000000..be14658cf008db510e09957ddedcc42cc957ca00
GIT binary patch
literal 8249
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
TNBC=9m_OC^Pg_gz*XZ8>>FdaF

literal 0
HcmV?d00001

diff --git a/OnlineSchuhDemo/src/main/resources/backup/1636645800372.zip b/OnlineSchuhDemo/src/main/resources/backup/1636645800372.zip
new file mode 100644
index 0000000000000000000000000000000000000000..55d3681b4f9eca24e170146cd72954175de10917
GIT binary patch
literal 8249
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
TJi=e=!u+YOf7)7#zefKCcOJ&v

literal 0
HcmV?d00001

diff --git a/OnlineSchuhDemo/src/main/resources/backup/1636646099109.zip b/OnlineSchuhDemo/src/main/resources/backup/1636646099109.zip
new file mode 100644
index 0000000000000000000000000000000000000000..65391134162a9ee8cb8bbec3454eeb1e44e60ed6
GIT binary patch
literal 8249
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
TNBC=9m_OC^Pg_gz*XZ8>vIxmg

literal 0
HcmV?d00001

diff --git a/OnlineSchuhDemo/src/main/resources/backup/1636646289337.zip b/OnlineSchuhDemo/src/main/resources/backup/1636646289337.zip
new file mode 100644
index 0000000000000000000000000000000000000000..c5ec593c7be817a530016966012f4ba34c132512
GIT binary patch
literal 8249
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
TNBC=9m_OC^Pg_gz*XZ8>ZIQ<C

literal 0
HcmV?d00001

diff --git a/OnlineSchuhDemo/src/test/java/de/sample/onlineschuhdemo/Testcollection.bpmn-testgen b/OnlineSchuhDemo/src/test/java/de/sample/onlineschuhdemo/Testcollection.bpmn-testgen
index 8b1f8b5..799943e 100644
--- a/OnlineSchuhDemo/src/test/java/de/sample/onlineschuhdemo/Testcollection.bpmn-testgen
+++ b/OnlineSchuhDemo/src/test/java/de/sample/onlineschuhdemo/Testcollection.bpmn-testgen
@@ -155,14 +155,9 @@ with variables for Warendaten_erfassen : [ marke = "Luxury Foot" , preis = 350 ]
 with check : [ kundennummer == "C-123A456" , marke == "Luxury Foot" , iban == "DE12345678900000123456" , vorname == "Max" , nachname == "Mustermann" , emailGesendet == "Nein" , erstattung == true , beschaedigt == true ]
 with mocks : [ financialMock , customerProvider ] ;
 
-Test casetill1 for Flow_0
-with variables for Retoure_Start : [ kundennummer = "123" , erstattung = true , beschaedigt = true ]
-with check : [ kundennummer == "123" , marke == "wer" , iban == "DE80123084556" , vorname == "till" , nachname == "Brinkhus" , pakettyp == "Normalverpackung" , emailGesendet == "Ja" , firstname == "Till" , lastname == "Brinkhus" , ibanRefund == "DE80123084556" , confirmationEmailSent == "Ja" , serviceIdentifier == "getData" , preis == 1234 , erstattung == true , paket == true , beschaedigt == false ]
-with mocks : [ financialMock , customerProvider ] ;
-
-Test casetill2 for Flow_0
-with variables for Retoure_Start : [ kundennummer = "12345" , erstattung = true , beschaedigt = true ]
-with mocks : [ financialMock , customerProvider ] ;
-
 Test TestHenninh for Flow_1
 with mocks : [ Warennummer_ermitteln , customerProvider ] ;
+
+Test TestHenning for Flow_0
+with priority 100
+with check : [ kundennummer == "123123123312" ] with mocks : [ financialMock , customerProvider ] ;
diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/bpmn/data/BPMNTestcase.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/bpmn/data/BPMNTestcase.java
index 4df2c27..325c885 100644
--- a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/bpmn/data/BPMNTestcase.java
+++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/bpmn/data/BPMNTestcase.java
@@ -1,65 +1,74 @@
-package de.fhmuenster.masterthesis.Testgenerator.bpmn.data;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class BPMNTestcase {
-
-	private String name;
-	private String flow;
-	private List<TaskVariables> taskVariableList;
-	private List<EndCheck> endChecks;
-	private List<String> mocks;
-	
-	public BPMNTestcase() {
-		this.taskVariableList = new ArrayList<>();
-	}
-	
-	public String getName() {
-		return name;
-	}
-	
-	public void setName(String name) {
-		this.name = name;
-	}
-	
-	public String getFlow() {
-		return flow;
-	}
-	
-	public void setFlow(String flow) {
-		this.flow = flow;
-	}
-	
-	public List<TaskVariables> getTaskVariableList() {
-		return taskVariableList;
-	}
-	
-	public void setTaskVariableList(List<TaskVariables> taskVariableList) {
-		this.taskVariableList = taskVariableList;
-	}
-	
-	public void addTaskVariables(TaskVariables taskVariables) {
-		taskVariableList.add(taskVariables);
-	}
-	
-	public List<EndCheck> getEndChecks() {
-		return endChecks;
-	}
-	
-	public void setEndChecks(List<EndCheck> endChecks) {
-		this.endChecks = endChecks;
-	}
-	
-	public void addEndCheck(EndCheck endCheck) {
-		this.endChecks.add(endCheck);
-	}
-	
-	public List<String> getMocks() {
-		return mocks;
-	}
-	
-	public void setMocks(List<String> mocks) {
-		this.mocks = mocks;
-	}
-}
+package de.fhmuenster.masterthesis.Testgenerator.bpmn.data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class BPMNTestcase {
+
+	private String name;
+	private String flow;
+	private List<TaskVariables> taskVariableList;
+	private List<EndCheck> endChecks;
+	private List<String> mocks;
+	private int priority;
+	
+	public BPMNTestcase() {
+		this.taskVariableList = new ArrayList<>();
+	}
+	
+	public String getName() {
+		return name;
+	}
+	
+	public void setName(String name) {
+		this.name = name;
+	}
+	
+	public String getFlow() {
+		return flow;
+	}	
+	
+	public void setFlow(String flow) {
+		this.flow = flow;
+	}
+	
+	public List<TaskVariables> getTaskVariableList() {
+		return taskVariableList;
+	}
+	
+	public void setTaskVariableList(List<TaskVariables> taskVariableList) {
+		this.taskVariableList = taskVariableList;
+	}
+	
+	public void addTaskVariables(TaskVariables taskVariables) {
+		taskVariableList.add(taskVariables);
+	}
+	
+	public List<EndCheck> getEndChecks() {
+		return endChecks;
+	}
+	
+	public void setEndChecks(List<EndCheck> endChecks) {
+		this.endChecks = endChecks;
+	}
+	
+	public void addEndCheck(EndCheck endCheck) {
+		this.endChecks.add(endCheck);
+	}
+	
+	public List<String> getMocks() {
+		return mocks;
+	}
+	
+	public void setMocks(List<String> mocks) {
+		this.mocks = mocks;
+	}
+
+	public int getPriority() {
+		return priority;
+	}
+
+	public void setPriority(int priority) {
+		this.priority = priority;
+	}
+}
diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/PrioritizationMetrics.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/PrioritizationMetrics.java
index 972745f..9a8b7f2 100644
--- a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/PrioritizationMetrics.java
+++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/PrioritizationMetrics.java
@@ -30,7 +30,7 @@ public class PrioritizationMetrics {
 	 * Metric 1 (m1)
 	 * @author Tim Flicke, Henning Schmeink
 	 */
-	public List<Flow> m1_flowAffected(List<Flow> newFlows, List<F+low> oldFlows) {
+	public List<Flow> m1_flowAffected(List<Flow> newFlows, List<Flow> oldFlows) {
 		List<Flow> affectedFlows = new  ArrayList<Flow>();
 		
 		try
diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/dto/BPMNTestcaseDTO.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/dto/BPMNTestcaseDTO.java
index 3e5dd3a..a5f29b5 100644
--- a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/dto/BPMNTestcaseDTO.java
+++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/dto/BPMNTestcaseDTO.java
@@ -1,57 +1,66 @@
-package de.fhmuenster.masterthesis.Testgenerator.rest.dto;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class BPMNTestcaseDTO {
-
-	private String name;
-	private String flow;
-	private List<TaskVariablesDTO> taskVariableList;
-	private List<EndCheckDTO> endChecks;
-	private List<String> mocks;
-	
-	public BPMNTestcaseDTO() {
-		this.taskVariableList = new ArrayList<>();
-	}
-	
-	public String getName() {
-		return name;
-	}
-	
-	public void setName(String name) {
-		this.name = name;
-	}
-	
-	public String getFlow() {
-		return flow;
-	}
-	
-	public void setFlow(String flow) {
-		this.flow = flow;
-	}
-	
-	public List<TaskVariablesDTO> getTaskVariableList() {
-		return taskVariableList;
-	}
-	
-	public void setTaskVariableList(List<TaskVariablesDTO> taskVariableList) {
-		this.taskVariableList = taskVariableList;
-	}
-	
-	public List<EndCheckDTO> getEndChecks() {
-		return endChecks;
-	}
-	
-	public void setEndChecks(List<EndCheckDTO> endChecks) {
-		this.endChecks = endChecks;
-	}
-	
-	public List<String> getMocks() {
-		return mocks;
-	}
-	
-	public void setMocks(List<String> mocks) {
-		this.mocks = mocks;
-	}
-}
+package de.fhmuenster.masterthesis.Testgenerator.rest.dto;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class BPMNTestcaseDTO {
+
+	private String name;
+	private String flow;
+	private List<TaskVariablesDTO> taskVariableList;
+	private List<EndCheckDTO> endChecks;
+	private List<String> mocks;
+	private int priority;
+	
+	public BPMNTestcaseDTO() {
+		this.taskVariableList = new ArrayList<>();
+	}
+	
+	public String getName() {
+		return name;
+	}
+	
+	public void setName(String name) {
+		this.name = name;
+	}
+	
+	public String getFlow() {
+		return flow;
+	}
+	
+	public void setFlow(String flow) {
+		this.flow = flow;
+	}
+	
+	public List<TaskVariablesDTO> getTaskVariableList() {
+		return taskVariableList;
+	}
+	
+	public void setTaskVariableList(List<TaskVariablesDTO> taskVariableList) {
+		this.taskVariableList = taskVariableList;
+	}
+	
+	public List<EndCheckDTO> getEndChecks() {
+		return endChecks;
+	}
+	
+	public void setEndChecks(List<EndCheckDTO> endChecks) {
+		this.endChecks = endChecks;
+	}
+	
+	public List<String> getMocks() {
+		return mocks;
+	}
+	
+	public void setMocks(List<String> mocks) {
+		this.mocks = mocks;
+	}
+
+	public int getPriority() {
+		return priority;
+	}
+
+	public void setPriority(int priority) {
+		this.priority = priority;
+	}
+}
diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/converters/TestConverter.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/converters/TestConverter.java
index 4bacc7c..eae6d7f 100644
--- a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/converters/TestConverter.java
+++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/converters/TestConverter.java
@@ -1,170 +1,173 @@
-package de.fhmuenster.masterthesis.Testgenerator.rest.service.converters;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
-
-import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNTestcase;
-import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.EndCheck;
-import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.EndCheckCompareOperator;
-import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.TaskVariables;
-import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.VariableValue;
-import de.fhmuenster.masterthesis.serialization.TestgeneratorDSLObjectCreator;
-import de.fhmuenster.masterthesis.testgeneratorDSL.BooleanVariableEquals;
-import de.fhmuenster.masterthesis.testgeneratorDSL.BooleanVariableNotEquals;
-import de.fhmuenster.masterthesis.testgeneratorDSL.EndChecks;
-import de.fhmuenster.masterthesis.testgeneratorDSL.Flow;
-import de.fhmuenster.masterthesis.testgeneratorDSL.FlowElement;
-import de.fhmuenster.masterthesis.testgeneratorDSL.IntVariableEquals;
-import de.fhmuenster.masterthesis.testgeneratorDSL.IntVariableNotEquals;
-import de.fhmuenster.masterthesis.testgeneratorDSL.Mock;
-import de.fhmuenster.masterthesis.testgeneratorDSL.StringVariableEquals;
-import de.fhmuenster.masterthesis.testgeneratorDSL.StringVariableNotEquals;
-import de.fhmuenster.masterthesis.testgeneratorDSL.Test;
-import de.fhmuenster.masterthesis.testgeneratorDSL.Variable;
-import de.fhmuenster.masterthesis.testgeneratorDSL.VariableDeclaration;
-import de.fhmuenster.masterthesis.testgeneratorDSL.VariableDeclarations;
-import de.fhmuenster.masterthesis.utils.TestgeneratorDSLUtils;
-
-public class TestConverter {
-
-	public static Test getTest(BPMNTestcase testcase, Flow flow, List<FlowElement> flowElements,
-			List<Variable> variables, List<Mock> mocks) {
-		List<VariableDeclarations> variableDeclarationsList = new ArrayList<>();
-		for (TaskVariables entry : testcase.getTaskVariableList()) {
-			String taskName = entry.getTask();
-			FlowElement task = getFlowElement(flowElements, taskName);
-			List<VariableValue> variableValues = entry.getVariableValues();
-
-			List<VariableDeclaration> variableDeclaration = new ArrayList<>();
-			for (VariableValue variableEntry : variableValues) {
-				String variableName = variableEntry.getVariable();
-				Object variableValue = variableEntry.getValue();
-				variableDeclaration.add(VariableConverter.getVariableDeclaration(variables, variableName, variableValue));
-			}
-
-			VariableDeclarations variableDeclarations = TestgeneratorDSLObjectCreator.createVariableDeclarations(task,
-					variableDeclaration);
-			variableDeclarationsList.add(variableDeclarations);
-		}
-		
-		List<de.fhmuenster.masterthesis.testgeneratorDSL.EndCheck> endChecks = new ArrayList<>();
-		for (EndCheck endCheck : testcase.getEndChecks()) {
-			if(EndCheckCompareOperator.EQUALS.equals(endCheck.getCompareOperator())) {
-				String variableName = endCheck.getVariable();
-				Object variableValue = endCheck.getValue();
-				endChecks.add(VariableConverter.getVariableEquals(variables, variableName, variableValue));
-			} 
-			
-			if(EndCheckCompareOperator.NOT_EQUALS.equals(endCheck.getCompareOperator())) {
-				String variableName = endCheck.getVariable();
-				Object variableValue = endCheck.getValue();
-				endChecks.add(VariableConverter.getVariableNotEquals(variables, variableName, variableValue));
-			}
-		}
-
-		EndChecks endCheckDeclaration = TestgeneratorDSLObjectCreator.createEndChecks(endChecks);
-		
-		return TestgeneratorDSLObjectCreator.createTest(testcase.getName(), flow, variableDeclarationsList, endCheckDeclaration, mocks);
-	}
-
-	public static FlowElement getFlowElement(List<FlowElement> flowElements, String name) {
-		Optional<FlowElement> flowElementOpt = flowElements.stream() //
-				.filter(flowElement -> flowElement.getName().equals(name)) //
-				.findAny();
-
-		return flowElementOpt.isPresent() ? flowElementOpt.get() : null;
-	}
-
-	public static BPMNTestcase getBPMNTestcase(Test testcase) {
-		List<TaskVariables> taskVariableList = new ArrayList<>();
-		for (VariableDeclarations variableDeclarations : TestgeneratorDSLUtils.getVariableDeclarations(testcase)) {
-			List<VariableValue> variableValues = new ArrayList<>();
-			for (VariableDeclaration variableDeclaration : TestgeneratorDSLUtils.getVariables(variableDeclarations)) {
-				variableValues.add(VariableConverter.getVariableValue(variableDeclaration));
-			}
-
-			TaskVariables taskVariables = new TaskVariables();
-			taskVariables.setTask(variableDeclarations.getTaskReference().getRef().getName());
-			taskVariables.setVariableValues(variableValues);
-			taskVariableList.add(taskVariables);
-		}
-		
-		List<EndCheck> endCheckList = new ArrayList<>();
-		for (de.fhmuenster.masterthesis.testgeneratorDSL.EndCheck endCheck : TestgeneratorDSLUtils.getEndChecks(testcase)) {
-			endCheckList.add(getEndCheck(endCheck));
-		}
-		
-		List<String> mocks = new ArrayList<>();
-		for(Mock mock : TestgeneratorDSLUtils.getMocks(testcase)) {
-			mocks.add(mock.getName());
-		}
-		
-		BPMNTestcase bpmnTestcase = new BPMNTestcase();
-		bpmnTestcase.setName(testcase.getName());
-		bpmnTestcase.setFlow(testcase.getFlowReference().getRef().getName());
-		bpmnTestcase.setTaskVariableList(taskVariableList);
-		bpmnTestcase.setEndChecks(endCheckList);
-		bpmnTestcase.setMocks(mocks);
-
-		return bpmnTestcase;
-	}
-
-	private static EndCheck getEndCheck(de.fhmuenster.masterthesis.testgeneratorDSL.EndCheck endCheck) {
-		EndCheck endCheckResult = new EndCheck();
-
-		if (endCheck instanceof StringVariableEquals) {
-			String name = ((StringVariableEquals) endCheck).getKey().getName();
-			String value = ((StringVariableEquals) endCheck).getValue();
-			endCheckResult.setVariable(name);
-			endCheckResult.setValue(value);
-			endCheckResult.setCompareOperator(EndCheckCompareOperator.EQUALS);
-		}
-
-		if (endCheck instanceof IntVariableEquals) {
-			String name = ((IntVariableEquals) endCheck).getKey().getName();
-			int value = ((IntVariableEquals) endCheck).getValue();
-			endCheckResult.setVariable(name);
-			endCheckResult.setValue(value);
-			endCheckResult.setCompareOperator(EndCheckCompareOperator.EQUALS);
-		}
-
-		if (endCheck instanceof BooleanVariableEquals) {
-			String name = ((BooleanVariableEquals) endCheck).getKey().getName();
-			de.fhmuenster.masterthesis.testgeneratorDSL.Boolean valueDSL = ((BooleanVariableEquals) endCheck)
-					.getValue();
-			Boolean value = TestgeneratorDSLUtils.mapDSLBoolean(valueDSL);
-			endCheckResult.setVariable(name);
-			endCheckResult.setValue(value);
-			endCheckResult.setCompareOperator(EndCheckCompareOperator.EQUALS);
-		}
-
-		if (endCheck instanceof StringVariableNotEquals) {
-			String name = ((StringVariableNotEquals) endCheck).getKey().getName();
-			String value = ((StringVariableNotEquals) endCheck).getValue();
-			endCheckResult.setVariable(name);
-			endCheckResult.setValue(value);
-			endCheckResult.setCompareOperator(EndCheckCompareOperator.NOT_EQUALS);
-		}
-
-		if (endCheck instanceof IntVariableNotEquals) {
-			String name = ((IntVariableNotEquals) endCheck).getKey().getName();
-			int value = ((IntVariableNotEquals) endCheck).getValue();
-			endCheckResult.setVariable(name);
-			endCheckResult.setValue(value);
-			endCheckResult.setCompareOperator(EndCheckCompareOperator.NOT_EQUALS);
-		}
-
-		if (endCheck instanceof BooleanVariableNotEquals) {
-			String name = ((BooleanVariableNotEquals) endCheck).getKey().getName();
-			de.fhmuenster.masterthesis.testgeneratorDSL.Boolean valueDSL = ((BooleanVariableNotEquals) endCheck)
-					.getValue();
-			Boolean value = TestgeneratorDSLUtils.mapDSLBoolean(valueDSL);
-			endCheckResult.setVariable(name);
-			endCheckResult.setValue(value);
-			endCheckResult.setCompareOperator(EndCheckCompareOperator.NOT_EQUALS);
-		}
-		
-		return endCheckResult;
-	}
-}
+package de.fhmuenster.masterthesis.Testgenerator.rest.service.converters;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+
+import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNTestcase;
+import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.EndCheck;
+import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.EndCheckCompareOperator;
+import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.TaskVariables;
+import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.VariableValue;
+import de.fhmuenster.masterthesis.serialization.TestgeneratorDSLObjectCreator;
+import de.fhmuenster.masterthesis.testgeneratorDSL.BooleanVariableEquals;
+import de.fhmuenster.masterthesis.testgeneratorDSL.BooleanVariableNotEquals;
+import de.fhmuenster.masterthesis.testgeneratorDSL.EndChecks;
+import de.fhmuenster.masterthesis.testgeneratorDSL.Flow;
+import de.fhmuenster.masterthesis.testgeneratorDSL.FlowElement;
+import de.fhmuenster.masterthesis.testgeneratorDSL.IntVariableEquals;
+import de.fhmuenster.masterthesis.testgeneratorDSL.IntVariableNotEquals;
+import de.fhmuenster.masterthesis.testgeneratorDSL.Mock;
+import de.fhmuenster.masterthesis.testgeneratorDSL.StringVariableEquals;
+import de.fhmuenster.masterthesis.testgeneratorDSL.StringVariableNotEquals;
+import de.fhmuenster.masterthesis.testgeneratorDSL.Test;
+import de.fhmuenster.masterthesis.testgeneratorDSL.Variable;
+import de.fhmuenster.masterthesis.testgeneratorDSL.VariableDeclaration;
+import de.fhmuenster.masterthesis.testgeneratorDSL.VariableDeclarations;
+import de.fhmuenster.masterthesis.utils.TestgeneratorDSLUtils;
+
+public class TestConverter {
+
+	public static Test getTest(BPMNTestcase testcase, Flow flow, List<FlowElement> flowElements,
+			List<Variable> variables, List<Mock> mocks) {
+		List<VariableDeclarations> variableDeclarationsList = new ArrayList<>();
+		for (TaskVariables entry : testcase.getTaskVariableList()) {
+			String taskName = entry.getTask();
+			FlowElement task = getFlowElement(flowElements, taskName);
+			List<VariableValue> variableValues = entry.getVariableValues();
+
+			List<VariableDeclaration> variableDeclaration = new ArrayList<>();
+			for (VariableValue variableEntry : variableValues) {
+				String variableName = variableEntry.getVariable();
+				Object variableValue = variableEntry.getValue();
+				variableDeclaration.add(VariableConverter.getVariableDeclaration(variables, variableName, variableValue));
+			}
+
+			VariableDeclarations variableDeclarations = TestgeneratorDSLObjectCreator.createVariableDeclarations(task,
+					variableDeclaration);
+			variableDeclarationsList.add(variableDeclarations);
+		}
+		
+		List<de.fhmuenster.masterthesis.testgeneratorDSL.EndCheck> endChecks = new ArrayList<>();
+		for (EndCheck endCheck : testcase.getEndChecks()) {
+			if(EndCheckCompareOperator.EQUALS.equals(endCheck.getCompareOperator())) {
+				String variableName = endCheck.getVariable();
+				Object variableValue = endCheck.getValue();
+				endChecks.add(VariableConverter.getVariableEquals(variables, variableName, variableValue));
+			} 
+			
+			if(EndCheckCompareOperator.NOT_EQUALS.equals(endCheck.getCompareOperator())) {
+				String variableName = endCheck.getVariable();
+				Object variableValue = endCheck.getValue();
+				endChecks.add(VariableConverter.getVariableNotEquals(variables, variableName, variableValue));
+			}
+		}
+
+		EndChecks endCheckDeclaration = TestgeneratorDSLObjectCreator.createEndChecks(endChecks);
+		
+		// @Tim, @Henning Priorität hier hinzufügen
+		int prio = 100;
+		return TestgeneratorDSLObjectCreator.createTest(testcase.getName(), flow, variableDeclarationsList, endCheckDeclaration, mocks, prio);
+	}
+
+	public static FlowElement getFlowElement(List<FlowElement> flowElements, String name) {
+		Optional<FlowElement> flowElementOpt = flowElements.stream() //
+				.filter(flowElement -> flowElement.getName().equals(name)) //
+				.findAny();
+
+		return flowElementOpt.isPresent() ? flowElementOpt.get() : null;
+	}
+
+	public static BPMNTestcase getBPMNTestcase(Test testcase) {
+		List<TaskVariables> taskVariableList = new ArrayList<>();
+		for (VariableDeclarations variableDeclarations : TestgeneratorDSLUtils.getVariableDeclarations(testcase)) {
+			List<VariableValue> variableValues = new ArrayList<>();
+			for (VariableDeclaration variableDeclaration : TestgeneratorDSLUtils.getVariables(variableDeclarations)) {
+				variableValues.add(VariableConverter.getVariableValue(variableDeclaration));
+			}
+
+			TaskVariables taskVariables = new TaskVariables();
+			taskVariables.setTask(variableDeclarations.getTaskReference().getRef().getName());
+			taskVariables.setVariableValues(variableValues);
+			taskVariableList.add(taskVariables);
+		}
+		
+		List<EndCheck> endCheckList = new ArrayList<>();
+		for (de.fhmuenster.masterthesis.testgeneratorDSL.EndCheck endCheck : TestgeneratorDSLUtils.getEndChecks(testcase)) {
+			endCheckList.add(getEndCheck(endCheck));
+		}
+		
+		List<String> mocks = new ArrayList<>();
+		for(Mock mock : TestgeneratorDSLUtils.getMocks(testcase)) {
+			mocks.add(mock.getName());
+		}
+		
+		BPMNTestcase bpmnTestcase = new BPMNTestcase();
+		bpmnTestcase.setName(testcase.getName());
+		bpmnTestcase.setFlow(testcase.getFlowReference().getRef().getName());
+		bpmnTestcase.setTaskVariableList(taskVariableList);
+		bpmnTestcase.setEndChecks(endCheckList);
+		bpmnTestcase.setMocks(mocks);
+		bpmnTestcase.setPriority(testcase.getPriority());
+
+		return bpmnTestcase;
+	}
+
+	private static EndCheck getEndCheck(de.fhmuenster.masterthesis.testgeneratorDSL.EndCheck endCheck) {
+		EndCheck endCheckResult = new EndCheck();
+
+		if (endCheck instanceof StringVariableEquals) {
+			String name = ((StringVariableEquals) endCheck).getKey().getName();
+			String value = ((StringVariableEquals) endCheck).getValue();
+			endCheckResult.setVariable(name);
+			endCheckResult.setValue(value);
+			endCheckResult.setCompareOperator(EndCheckCompareOperator.EQUALS);
+		}
+
+		if (endCheck instanceof IntVariableEquals) {
+			String name = ((IntVariableEquals) endCheck).getKey().getName();
+			int value = ((IntVariableEquals) endCheck).getValue();
+			endCheckResult.setVariable(name);
+			endCheckResult.setValue(value);
+			endCheckResult.setCompareOperator(EndCheckCompareOperator.EQUALS);
+		}
+
+		if (endCheck instanceof BooleanVariableEquals) {
+			String name = ((BooleanVariableEquals) endCheck).getKey().getName();
+			de.fhmuenster.masterthesis.testgeneratorDSL.Boolean valueDSL = ((BooleanVariableEquals) endCheck)
+					.getValue();
+			Boolean value = TestgeneratorDSLUtils.mapDSLBoolean(valueDSL);
+			endCheckResult.setVariable(name);
+			endCheckResult.setValue(value);
+			endCheckResult.setCompareOperator(EndCheckCompareOperator.EQUALS);
+		}
+
+		if (endCheck instanceof StringVariableNotEquals) {
+			String name = ((StringVariableNotEquals) endCheck).getKey().getName();
+			String value = ((StringVariableNotEquals) endCheck).getValue();
+			endCheckResult.setVariable(name);
+			endCheckResult.setValue(value);
+			endCheckResult.setCompareOperator(EndCheckCompareOperator.NOT_EQUALS);
+		}
+
+		if (endCheck instanceof IntVariableNotEquals) {
+			String name = ((IntVariableNotEquals) endCheck).getKey().getName();
+			int value = ((IntVariableNotEquals) endCheck).getValue();
+			endCheckResult.setVariable(name);
+			endCheckResult.setValue(value);
+			endCheckResult.setCompareOperator(EndCheckCompareOperator.NOT_EQUALS);
+		}
+
+		if (endCheck instanceof BooleanVariableNotEquals) {
+			String name = ((BooleanVariableNotEquals) endCheck).getKey().getName();
+			de.fhmuenster.masterthesis.testgeneratorDSL.Boolean valueDSL = ((BooleanVariableNotEquals) endCheck)
+					.getValue();
+			Boolean value = TestgeneratorDSLUtils.mapDSLBoolean(valueDSL);
+			endCheckResult.setVariable(name);
+			endCheckResult.setValue(value);
+			endCheckResult.setCompareOperator(EndCheckCompareOperator.NOT_EQUALS);
+		}
+		
+		return endCheckResult;
+	}
+}
diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/test/TestController.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/test/TestController.java
index 5a16edc..a40128a 100644
--- a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/test/TestController.java
+++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/test/TestController.java
@@ -1,143 +1,146 @@
-package de.fhmuenster.masterthesis.Testgenerator.rest.service.test;
-
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.servlet.config.annotation.EnableWebMvc;
-
-import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNServiceWithMocks;
-import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNTestcase;
-import de.fhmuenster.masterthesis.Testgenerator.rest.dto.BPMNTestcaseDTO;
-import de.fhmuenster.masterthesis.Testgenerator.rest.dto.ExternalTopicWithMockDTO;
-import de.fhmuenster.masterthesis.Testgenerator.rest.dto.FlowElementEnhancedDTO;
-import de.fhmuenster.masterthesis.Testgenerator.rest.dto.FlowInfoDTO;
-import de.fhmuenster.masterthesis.Testgenerator.rest.dto.LoopDTO;
-import de.fhmuenster.masterthesis.Testgenerator.rest.dto.ServiceWithMockDTO;
-import de.fhmuenster.masterthesis.Testgenerator.rest.dto.VariableProposalDTO;
-import de.fhmuenster.masterthesis.Testgenerator.rest.mapper.ObjectMapper;
-import de.fhmuenster.masterthesis.Testgenerator.rest.service.flow.FlowService;
-import de.fhmuenster.masterthesis.Testgenerator.rest.service.mock.MockService;
-import de.fhmuenster.masterthesis.Testgenerator.rest.service.project.Project;
-import de.fhmuenster.masterthesis.Testgenerator.rest.service.project.ProjectService;
-import de.fhmuenster.masterthesis.serialization.VariableProposal;
-import de.fhmuenster.masterthesis.testgeneratorDSL.Flow;
-import de.fhmuenster.masterthesis.testgeneratorDSL.FlowElement;
-import de.fhmuenster.masterthesis.testgeneratorDSL.Loop;
-
-@RestController
-@EnableWebMvc
-public class TestController {
-
-	@Autowired
-	private ProjectService projectService;
-	@Autowired
-	private FlowService flowService;
-	@Autowired
-	private TestService testService;
-	@Autowired
-	private MockService mockService;
-
-	private static final ObjectMapper MAPPER = new ObjectMapper() //
-			.withVariableConverter() //
-			.withCompareOperatorConverter(); //
-
-	public TestController() {
-	}
-
-	@RequestMapping(path = "/project/{projectId}/initLoop", method = RequestMethod.POST)
-	public List<LoopDTO> initLoops(@PathVariable(required = true) Long projectId) {
-		Project projectForId = projectService.getProjectForId(projectId);
-
-		List<Loop> loops = testService.initLoops(projectForId);
-		
-		return MAPPER.mapToList(loops, LoopDTO.class);
-	}
-	
-	@RequestMapping(path = "/project/{projectId}/initTest", method = RequestMethod.POST)
-	public void initTestcollection(@PathVariable(required = true) Long projectId) {
-		Project projectForId = projectService.getProjectForId(projectId);
-
-		testService.initTestcollection(projectForId);
-	}
-
-	@RequestMapping(path = "/project/{projectId}/test/{testId}", method = RequestMethod.PUT)
-	public void updateTest(@PathVariable(required = true) Long projectId, @PathVariable(required = true) String testId,
-			@RequestBody(required = true) BPMNTestcaseDTO testcaseDTO) {
-		Project projectForId = projectService.getProjectForId(projectId);
-
-		BPMNTestcase testcase = MAPPER.map(testcaseDTO, BPMNTestcase.class);
-
-		testService.updateTest(testId, testcase, projectForId.getProjectDirectories());
-	}
-
-	@RequestMapping(path = "/project/{projectId}/test", method = RequestMethod.POST)
-	public void addTest(@PathVariable(required = true) Long projectId,
-			@RequestBody(required = true) BPMNTestcaseDTO testcaseDTO) {
-		Project projectForId = projectService.getProjectForId(projectId);
-
-		BPMNTestcase testcase = MAPPER.map(testcaseDTO, BPMNTestcase.class);
-
-		testService.addTest(testcase, projectForId.getProjectDirectories());
-	}
-
-	@RequestMapping(path = "/project/{projectId}/flow/{flowId}/test", method = RequestMethod.GET)
-	public List<BPMNTestcaseDTO> getTests(@PathVariable(required = true) Long projectId,
-			@PathVariable(required = true) String flowId) {
-		Project projectForId = projectService.getProjectForId(projectId);
-
-		Flow flow = flowService.getFlow(projectForId.getProjectDirectories(), flowId);
-		List<BPMNTestcase> tests = testService.getTests(projectForId.getProjectDirectories(), flow);
-
-		List<BPMNTestcaseDTO> dtos = MAPPER.mapToList(tests, BPMNTestcaseDTO.class);
-		return dtos;
-	}
-
-	@RequestMapping(path = "/project/{projectId}/test/{testId}", method = RequestMethod.GET)
-	public BPMNTestcaseDTO getTest(@PathVariable(required = true) Long projectId,
-			@PathVariable(required = true) String testId) {
-		Project projectForId = projectService.getProjectForId(projectId);
-
-		BPMNTestcase test = testService.getTest(projectForId.getProjectDirectories(), testId);
-		return MAPPER.map(test, BPMNTestcaseDTO.class);
-	}
-
-	@RequestMapping(path = "/project/{projectId}/test/{testId}", method = RequestMethod.DELETE)
-	public void deleteTest(@PathVariable(required = true) Long projectId,
-			@PathVariable(required = true) String testId) {
-		Project projectForId = projectService.getProjectForId(projectId);
-
-		testService.deleteTest(projectForId.getProjectDirectories(), testId);
-	}
-
-	@SuppressWarnings("rawtypes")
-	@RequestMapping(path = "/project/{projectId}/flow/{flowId}/info", method = RequestMethod.GET)
-	public FlowInfoDTO getInfo(@PathVariable(required = true) Long projectId,
-			@PathVariable(required = true) String flowId) {
-		Project projectForId = projectService.getProjectForId(projectId);
-
-		Flow flow = flowService.getFlow(projectForId.getProjectDirectories(), flowId);
-		List<FlowElement> userInputTasks = testService.getUserInputTasks(flow);
-		List<FlowElementEnhancedDTO> userInputDtos = MAPPER.mapToList(userInputTasks, FlowElementEnhancedDTO.class);
-
-		List<VariableProposal<?>> variableProposals = testService
-				.getVariableProposals(projectForId.getProjectDirectories());
-		List<VariableProposalDTO> variableDtos = MAPPER.mapToList(variableProposals, VariableProposalDTO.class);
-
-		BPMNServiceWithMocks servicesWithMocks = mockService.getServicesWithMocks(projectForId.getProjectDirectories(), flow);
-		List<ServiceWithMockDTO> delegateServices = MAPPER.mapToList(servicesWithMocks.getDelegateServices(), ServiceWithMockDTO.class);
-		List<ExternalTopicWithMockDTO> externalTopics = MAPPER.mapToList(servicesWithMocks.getExternalTopics(), ExternalTopicWithMockDTO.class);
-		
-		FlowInfoDTO flowInfoDTO = new FlowInfoDTO();
-		flowInfoDTO.setUserInputs(userInputDtos);
-		flowInfoDTO.setVariables(variableDtos);
-		flowInfoDTO.setDelegateServices(delegateServices);
-		flowInfoDTO.setExternalTopics(externalTopics);
-
-		return flowInfoDTO;
-	}
-}
+package de.fhmuenster.masterthesis.Testgenerator.rest.service.test;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.servlet.config.annotation.EnableWebMvc;
+
+import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNServiceWithMocks;
+import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNTestcase;
+import de.fhmuenster.masterthesis.Testgenerator.rest.dto.BPMNTestcaseDTO;
+import de.fhmuenster.masterthesis.Testgenerator.rest.dto.ExternalTopicWithMockDTO;
+import de.fhmuenster.masterthesis.Testgenerator.rest.dto.FlowElementEnhancedDTO;
+import de.fhmuenster.masterthesis.Testgenerator.rest.dto.FlowInfoDTO;
+import de.fhmuenster.masterthesis.Testgenerator.rest.dto.LoopDTO;
+import de.fhmuenster.masterthesis.Testgenerator.rest.dto.ServiceWithMockDTO;
+import de.fhmuenster.masterthesis.Testgenerator.rest.dto.VariableProposalDTO;
+import de.fhmuenster.masterthesis.Testgenerator.rest.mapper.ObjectMapper;
+import de.fhmuenster.masterthesis.Testgenerator.rest.service.flow.FlowService;
+import de.fhmuenster.masterthesis.Testgenerator.rest.service.mock.MockService;
+import de.fhmuenster.masterthesis.Testgenerator.rest.service.project.Project;
+import de.fhmuenster.masterthesis.Testgenerator.rest.service.project.ProjectService;
+import de.fhmuenster.masterthesis.serialization.VariableProposal;
+import de.fhmuenster.masterthesis.testgeneratorDSL.Flow;
+import de.fhmuenster.masterthesis.testgeneratorDSL.FlowElement;
+import de.fhmuenster.masterthesis.testgeneratorDSL.Loop;
+
+@RestController
+@EnableWebMvc
+public class TestController {
+
+	@Autowired
+	private ProjectService projectService;
+	@Autowired
+	private FlowService flowService;
+	@Autowired
+	private TestService testService;
+	@Autowired
+	private MockService mockService;
+
+	private static final ObjectMapper MAPPER = new ObjectMapper() //
+			.withVariableConverter() //
+			.withCompareOperatorConverter(); //
+
+	public TestController() {
+	}
+
+	@RequestMapping(path = "/project/{projectId}/initLoop", method = RequestMethod.POST)
+	public List<LoopDTO> initLoops(@PathVariable(required = true) Long projectId) {
+		Project projectForId = projectService.getProjectForId(projectId);
+
+		List<Loop> loops = testService.initLoops(projectForId);
+		
+		return MAPPER.mapToList(loops, LoopDTO.class);
+	}
+	
+	@RequestMapping(path = "/project/{projectId}/initTest", method = RequestMethod.POST)
+	public void initTestcollection(@PathVariable(required = true) Long projectId) {
+		Project projectForId = projectService.getProjectForId(projectId);
+
+		testService.initTestcollection(projectForId);
+	}
+
+	@RequestMapping(path = "/project/{projectId}/test/{testId}", method = RequestMethod.PUT)
+	public void updateTest(@PathVariable(required = true) Long projectId, @PathVariable(required = true) String testId,
+			@RequestBody(required = true) BPMNTestcaseDTO testcaseDTO) {
+		Project projectForId = projectService.getProjectForId(projectId);
+
+		BPMNTestcase testcase = MAPPER.map(testcaseDTO, BPMNTestcase.class);
+
+		testService.updateTest(testId, testcase, projectForId.getProjectDirectories());
+	}
+
+	@RequestMapping(path = "/project/{projectId}/test", method = RequestMethod.POST)
+	public void addTest(@PathVariable(required = true) Long projectId,
+			@RequestBody(required = true) BPMNTestcaseDTO testcaseDTO) {
+		Project projectForId = projectService.getProjectForId(projectId);
+
+		BPMNTestcase testcase = MAPPER.map(testcaseDTO, BPMNTestcase.class);
+
+		testService.addTest(testcase, projectForId.getProjectDirectories());
+	}
+
+	@RequestMapping(path = "/project/{projectId}/flow/{flowId}/test", method = RequestMethod.GET)
+	public List<BPMNTestcaseDTO> getTests(@PathVariable(required = true) Long projectId,
+			@PathVariable(required = true) String flowId) {
+		Project projectForId = projectService.getProjectForId(projectId);
+
+		Flow flow = flowService.getFlow(projectForId.getProjectDirectories(), flowId);
+		List<BPMNTestcase> tests = testService.getTests(projectForId.getProjectDirectories(), flow);
+
+		List<BPMNTestcaseDTO> dtos = MAPPER.mapToList(tests, BPMNTestcaseDTO.class);
+		return dtos;
+	}
+
+	@RequestMapping(path = "/project/{projectId}/test/{testId}", method = RequestMethod.GET)
+	public BPMNTestcaseDTO getTest(@PathVariable(required = true) Long projectId,
+			@PathVariable(required = true) String testId) {
+		Project projectForId = projectService.getProjectForId(projectId);
+
+		BPMNTestcase test = testService.getTest(projectForId.getProjectDirectories(), testId);
+		
+		// @Tim, @Henning Debug
+		System.out.println("Priority: " + test.getPriority());
+		return MAPPER.map(test, BPMNTestcaseDTO.class);
+	}
+
+	@RequestMapping(path = "/project/{projectId}/test/{testId}", method = RequestMethod.DELETE)
+	public void deleteTest(@PathVariable(required = true) Long projectId,
+			@PathVariable(required = true) String testId) {
+		Project projectForId = projectService.getProjectForId(projectId);
+
+		testService.deleteTest(projectForId.getProjectDirectories(), testId);
+	}
+
+	@SuppressWarnings("rawtypes")
+	@RequestMapping(path = "/project/{projectId}/flow/{flowId}/info", method = RequestMethod.GET)
+	public FlowInfoDTO getInfo(@PathVariable(required = true) Long projectId,
+			@PathVariable(required = true) String flowId) {
+		Project projectForId = projectService.getProjectForId(projectId);
+
+		Flow flow = flowService.getFlow(projectForId.getProjectDirectories(), flowId);
+		List<FlowElement> userInputTasks = testService.getUserInputTasks(flow);
+		List<FlowElementEnhancedDTO> userInputDtos = MAPPER.mapToList(userInputTasks, FlowElementEnhancedDTO.class);
+
+		List<VariableProposal<?>> variableProposals = testService
+				.getVariableProposals(projectForId.getProjectDirectories());
+		List<VariableProposalDTO> variableDtos = MAPPER.mapToList(variableProposals, VariableProposalDTO.class);
+
+		BPMNServiceWithMocks servicesWithMocks = mockService.getServicesWithMocks(projectForId.getProjectDirectories(), flow);
+		List<ServiceWithMockDTO> delegateServices = MAPPER.mapToList(servicesWithMocks.getDelegateServices(), ServiceWithMockDTO.class);
+		List<ExternalTopicWithMockDTO> externalTopics = MAPPER.mapToList(servicesWithMocks.getExternalTopics(), ExternalTopicWithMockDTO.class);
+		
+		FlowInfoDTO flowInfoDTO = new FlowInfoDTO();
+		flowInfoDTO.setUserInputs(userInputDtos);
+		flowInfoDTO.setVariables(variableDtos);
+		flowInfoDTO.setDelegateServices(delegateServices);
+		flowInfoDTO.setExternalTopics(externalTopics);
+
+		return flowInfoDTO;
+	}
+}
diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/test/TestService.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/test/TestService.java
index 9e4f962..c6d365b 100644
--- a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/test/TestService.java
+++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/test/TestService.java
@@ -1,524 +1,524 @@
-package de.fhmuenster.masterthesis.Testgenerator.rest.service.test;
-
-import java.io.IOException;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.stream.Collectors;
-
-import org.camunda.bpm.model.bpmn.instance.BusinessRuleTask;
-import org.camunda.bpm.model.bpmn.instance.EndEvent;
-import org.camunda.bpm.model.bpmn.instance.Gateway;
-import org.camunda.bpm.model.bpmn.instance.ManualTask;
-import org.camunda.bpm.model.bpmn.instance.ScriptTask;
-import org.camunda.bpm.model.bpmn.instance.SequenceFlow;
-import org.camunda.bpm.model.bpmn.instance.ServiceTask;
-import org.camunda.bpm.model.bpmn.instance.StartEvent;
-import org.camunda.bpm.model.bpmn.instance.UserTask;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNBundle;
-import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNExpressions;
-import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNFlow;
-import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNFlowSet;
-import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNFormFields;
-import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNIOParameters;
-import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNTestcase;
-import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNTestdata;
-import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.BPMNExpressionScanner;
-import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.BPMNFlowScanner;
-import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.BPMNVariableBoundaryScanner;
-import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.BPMNVariableFormFieldScanner;
-import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.BPMNVariableIOScanner;
-import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.loop.Loop;
-import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.loop.LoopFrequencyAssigner;
-import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.loop.LoopScanner;
-import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.sese.IsElement;
-import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.sese.SESEBuilder;
-import de.fhmuenster.masterthesis.Testgenerator.dmn.data.DMNBundle;
-import de.fhmuenster.masterthesis.Testgenerator.dmn.data.DMNDecisionModel;
-import de.fhmuenster.masterthesis.Testgenerator.dmn.data.DMNVariables;
-import de.fhmuenster.masterthesis.Testgenerator.embeddedform.data.EmbeddedFormDocument;
-import de.fhmuenster.masterthesis.Testgenerator.logging.LoggerProvider;
-import de.fhmuenster.masterthesis.Testgenerator.logging.TestgeneratorLogger;
-import de.fhmuenster.masterthesis.Testgenerator.rest.service.converters.TestConverter;
-import de.fhmuenster.masterthesis.Testgenerator.rest.service.flow.FlowService;
-import de.fhmuenster.masterthesis.Testgenerator.rest.service.mock.MockService;
-import de.fhmuenster.masterthesis.Testgenerator.rest.service.project.Project;
-import de.fhmuenster.masterthesis.Testgenerator.rest.service.project.ProjectDirectories;
-import de.fhmuenster.masterthesis.Testgenerator.utils.BPMNParseUtils;
-import de.fhmuenster.masterthesis.Testgenerator.utils.ProjectDirectoryUtils;
-import de.fhmuenster.masterthesis.serialization.TestgeneratorDSLObjectCreator;
-import de.fhmuenster.masterthesis.serialization.TestgeneratorDSLSerializer;
-import de.fhmuenster.masterthesis.serialization.VariableProposal;
-import de.fhmuenster.masterthesis.testgeneratorDSL.BPMNDiagram;
-import de.fhmuenster.masterthesis.testgeneratorDSL.ExternalTopic;
-import de.fhmuenster.masterthesis.testgeneratorDSL.Flow;
-import de.fhmuenster.masterthesis.testgeneratorDSL.FlowElement;
-import de.fhmuenster.masterthesis.testgeneratorDSL.Mock;
-import de.fhmuenster.masterthesis.testgeneratorDSL.Test;
-import de.fhmuenster.masterthesis.testgeneratorDSL.Variable;
-import de.fhmuenster.masterthesis.testgeneratorDSL.VariableDeclaration;
-import de.fhmuenster.masterthesis.utils.TestgeneratorDSLUtils;
-
-@Service
-public class TestService {
-
-	private static final TestgeneratorLogger LOGGER = LoggerProvider.getLogger(TestService.class);
-	private static final String NAMESPACE_URI_BPMN = "http://camunda.org/schema/1.0/bpmn";
-
-	private long millisDataStart;
-	private long millisDataEnd;
-	
-	@Autowired
-	private FlowService flowService;
-	@Autowired
-	private MockService mockService;
-
-	public TestService() {
-	}
-
-	public List<de.fhmuenster.masterthesis.testgeneratorDSL.Loop> initLoops(Project project) {
-		Path testFilePath = ProjectDirectoryUtils.getTestspecificationPath(project.getProjectDirectories());
-		String testpackage = project.getProjectDirectories().getTestPackage();
-		List<de.fhmuenster.masterthesis.testgeneratorDSL.Loop> dslLoops = null;
-
-		try {
-			TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testFilePath.toString());
-
-			BPMNDiagram bpmnDiagram = serializer.getBPMNDiagram("process");
-			if (bpmnDiagram == null) {
-				BPMNBundle bpmnBundle = BPMNParseUtils.readBPMNBundle(project);
-				List<DMNBundle> dmnBundles = BPMNParseUtils.readDMNBundles(project);
-				List<EmbeddedFormDocument> embeddedFormDocuments = BPMNParseUtils.readEmbeddedFormDocuments(project);
-				List<DMNDecisionModel> decisionModels = BPMNParseUtils.getDecisionModels(dmnBundles);
-				bpmnDiagram = BPMNParseUtils.getBPMNDiagram(bpmnBundle.getProcessModel(), testpackage, decisionModels,
-						embeddedFormDocuments);
-
-				// Build Single-Entry-Single-Exit-Graph
-				SESEBuilder seseBuilder = new SESEBuilder(bpmnBundle.getModelInstance());
-				seseBuilder.buildSingleEntrySingleExit();
-				List<IsElement> seseTransform = seseBuilder.getSeseTransform();
-
-				// Scan for loops
-				LoopScanner loopScanner = new LoopScanner(seseTransform);
-				List<Loop> loops = loopScanner.scanLoops();
-
-				// Set frequency for loops
-				LoopFrequencyAssigner frequencyAssigner = new LoopFrequencyAssigner(loops);
-				frequencyAssigner.assign();
-
-				serializer.addBPMNDiagram(bpmnDiagram);
-				dslLoops = flowService.getDSLLoops(loops);
-				dslLoops.forEach(dslLoop -> serializer.addLoop(dslLoop));
-
-				serializer.serialize();
-			}
-
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-
-		if (dslLoops == null) {
-			return flowService.getLoops(project.getProjectDirectories());
-		}
-
-		return dslLoops;
-	}
-
-	public void initTestcollection(Project project) {
-		Path testFilePath = ProjectDirectoryUtils.getTestspecificationPath(project.getProjectDirectories());
-		String testpackage = project.getProjectDirectories().getTestPackage();
-
-		try {
-			TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testFilePath.toString());
-
-			BPMNDiagram bpmnDiagram = serializer.getBPMNDiagram("process");
-			List<FlowElement> flowElementsCheck = serializer.getFlowElements();
-
-			if (bpmnDiagram != null && flowElementsCheck.isEmpty()) {
-				BPMNBundle bpmnBundle = BPMNParseUtils.readBPMNBundle(project);
-				List<DMNBundle> dmnBundles = BPMNParseUtils.readDMNBundles(project);
-				List<EmbeddedFormDocument> embeddedFormDocuments = BPMNParseUtils.readEmbeddedFormDocuments(project);
-				List<DMNDecisionModel> decisionModels = BPMNParseUtils.getDecisionModels(dmnBundles);
-
-				List<de.fhmuenster.masterthesis.testgeneratorDSL.Loop> dslLoops = serializer.getLoops();
-				List<Loop> loops = getLoops(dslLoops);
-
-				// Parse different flows of process model
-				BPMNFlowScanner scanner = new BPMNFlowScanner(bpmnBundle.getModelInstance(), loops);
-				BPMNFlowSet flowSet = scanner.scanFlows();
-
-				if (LOGGER.isInfo()) {
-					millisDataStart = System.currentTimeMillis();
-				}
-
-				// Read FormFields from Events and Tasks
-				BPMNVariableFormFieldScanner variableScanner = new BPMNVariableFormFieldScanner(flowSet);
-				EmbeddedFormDocument[] embeddedArray = new EmbeddedFormDocument[embeddedFormDocuments.size()];
-				variableScanner.setEmbeddedFormDocuments(embeddedFormDocuments.toArray(embeddedArray));
-				variableScanner.doScan();
-				BPMNFormFields formFields = variableScanner.getFormFields();
-
-				// Read Input/Output-Parameters
-				BPMNVariableIOScanner variableIOScanner = new BPMNVariableIOScanner(flowSet);
-				variableIOScanner.doScan();
-				BPMNIOParameters bpmnIOParameters = variableIOScanner.getBpmnIOParameters();
-
-				// Parse conditional expressions
-				BPMNExpressionScanner expressionScanner = new BPMNExpressionScanner(flowSet);
-				expressionScanner.doScan();
-				BPMNExpressions expressions = expressionScanner.getExpressions();
-
-				List<DMNVariables> dmnVariableList = BPMNParseUtils.getDMNVariables(dmnBundles);
-
-				BPMNVariableBoundaryScanner boundaryScanner = new BPMNVariableBoundaryScanner(expressions, formFields,
-						bpmnIOParameters, dmnVariableList);
-				boundaryScanner.doScan();
-				HashMap<String, BPMNTestdata<?>> variableTestdata = boundaryScanner.getVariableTestdata();
-
-				List<Variable> variables = BPMNParseUtils.getVariables(formFields, variableTestdata, bpmnIOParameters);
-
-				if (LOGGER.isInfo()) {
-					millisDataEnd = System.currentTimeMillis();
-					LOGGER.info("Time needed for Data-Scan: " + (millisDataEnd - millisDataStart) + " ms");
-				}
-				
-				List<ExternalTopic> externalTopics = getExternalTopics(flowSet);
-				List<FlowElement> flowElements = getFlowElements(flowSet, variables, formFields, expressions,
-						bpmnIOParameters, externalTopics);
-				List<Flow> flows = getFlows(bpmnDiagram, flowSet, flowElements);
-
-				flowElements.forEach(flowElement -> serializer.addFlowElement(flowElement));
-				variables.forEach(var -> serializer.addVariable(var));
-				externalTopics.forEach(externalTopic -> serializer.addExternalTopic(externalTopic));
-				flows.forEach(flow -> serializer.addFlow(flow));
-
-				serializer.serialize();
-			}
-
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-	}
-
-	public void addTest(BPMNTestcase testcase, ProjectDirectories projectDirectories) {
-		Path testspecificationPath = ProjectDirectoryUtils.getTestspecificationPath(projectDirectories);
-
-		try {
-			TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testspecificationPath.toString());
-
-			checkTestIdAlreadyTaken(testcase.getName(), serializer);
-
-			addTest(testcase, serializer, projectDirectories);
-
-			serializer.serialize();
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-	}
-
-	public void updateTest(String testId, BPMNTestcase testcase, ProjectDirectories projectDirectories) {
-		Path testspecificationPath = ProjectDirectoryUtils.getTestspecificationPath(projectDirectories);
-
-		try {
-			TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testspecificationPath.toString());
-
-			if (!testId.equals(testcase.getName())) {
-				checkTestIdAlreadyTaken(testcase.getName(), serializer);
-			}
-
-			Test testToDelete = getTest(testId, serializer);
-			serializer.deleteTest(testToDelete.getName());
-
-			addTest(testcase, serializer, projectDirectories);
-
-			serializer.serialize();
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-	}
-
-	private void addTest(BPMNTestcase testcase, TestgeneratorDSLSerializer serializer,
-			ProjectDirectories projectDirectories) {
-		Flow flow = serializer.getFlow(testcase.getFlow());
-		List<FlowElement> flowElements = serializer.getFlowElements();
-		List<Variable> variables = serializer.getVariables();
-		List<Mock> mocks = mockService.getMocks(testcase.getMocks(), projectDirectories);
-
-		Test newTest = TestConverter.getTest(testcase, flow, flowElements, variables, mocks);
-		serializer.addTest(newTest);
-	}
-
-	public List<VariableProposal<?>> getVariableProposals(ProjectDirectories projectDirectories) {
-		Path testspecificationPath = ProjectDirectoryUtils.getTestspecificationPath(projectDirectories);
-
-		List<VariableProposal<?>> variableProposals = new ArrayList<>();
-		try {
-			TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testspecificationPath.toString());
-
-			variableProposals = serializer.getVariableProposals();
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-
-		return variableProposals;
-	}
-
-	public List<BPMNTestcase> getTests(ProjectDirectories projectDirectories, Flow flow) {
-		Path testspecificationPath = ProjectDirectoryUtils.getTestspecificationPath(projectDirectories);
-
-		try {
-			TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testspecificationPath.toString());
-
-			List<Test> testsForFlow = serializer.getTestsForFlow(flow);
-			List<BPMNTestcase> bpmnTestcases = new ArrayList<>();
-			for (Test test : testsForFlow) {
-				bpmnTestcases.add(TestConverter.getBPMNTestcase(test));
-			}
-
-			return bpmnTestcases;
-		} catch (IOException e) {
-			//
-		}
-
-		return null;
-	}
-
-	public BPMNTestcase getTest(ProjectDirectories projectDirectories, String testId) {
-		Path testspecificationPath = ProjectDirectoryUtils.getTestspecificationPath(projectDirectories);
-
-		try {
-			TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testspecificationPath.toString());
-
-			Test test = getTest(testId, serializer);
-
-			BPMNTestcase bpmnTestcase = TestConverter.getBPMNTestcase(test);
-			return bpmnTestcase;
-		} catch (IOException e) {
-			//
-		}
-
-		return null;
-	}
-
-	public void deleteTest(ProjectDirectories projectDirectories, String testId) {
-		Path testspecificationPath = ProjectDirectoryUtils.getTestspecificationPath(projectDirectories);
-
-		try {
-			TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testspecificationPath.toString());
-
-			serializer.deleteTest(testId);
-
-			serializer.serialize();
-		} catch (IOException e) {
-			//
-		}
-	}
-
-	public List<FlowElement> getUserInputTasks(Flow flow) {
-		return TestgeneratorDSLUtils.getUserInputElements(flow);
-	}
-
-	public Map<String, Long> getFlowTestcount(ProjectDirectories projectDirectories) {
-		Path testspecificationPath = ProjectDirectoryUtils.getTestspecificationPath(projectDirectories);
-
-		try {
-			TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testspecificationPath.toString());
-			Map<String, Long> flowTestCount = serializer.getFlowTestCount();
-
-			return flowTestCount;
-		} catch (IOException e) {
-			//
-		}
-
-		return new HashMap<>();
-	}
-
-	private List<FlowElement> getFlowElements(BPMNFlowSet flowSet, List<Variable> variables, BPMNFormFields formFields,
-			BPMNExpressions expressions, BPMNIOParameters bpmnIOParameters, List<ExternalTopic> externalTopics) {
-		return flowSet.getFlowElements().stream() //
-				.map(flowElement -> getFlowElement(flowElement, variables, formFields, expressions, bpmnIOParameters,
-						externalTopics)) //
-				.collect(Collectors.toList()); //
-	}
-
-	private FlowElement getFlowElement(org.camunda.bpm.model.bpmn.instance.FlowElement flowElement,
-			List<Variable> variables, BPMNFormFields formFields, BPMNExpressions expressions,
-			BPMNIOParameters bpmnIOParameters, List<ExternalTopic> externalTopics) {
-
-		if (flowElement instanceof StartEvent) {
-			List<Variable> inputVariables = filterFlowElementVariables(variables,
-					formFields.getVariablesForTask(flowElement.getId()));
-			return TestgeneratorDSLObjectCreator.createStartFlowElement(flowElement.getId(), inputVariables);
-		} else if (flowElement instanceof EndEvent) {
-			return TestgeneratorDSLObjectCreator.createEndFlowElement(flowElement.getId());
-		} else if (flowElement instanceof Gateway) {
-			return TestgeneratorDSLObjectCreator.createGatewayFlowElement(flowElement.getId());
-		} else if (flowElement instanceof UserTask) {
-			List<String> inputVariableNames = new ArrayList<>();
-			inputVariableNames.addAll(bpmnIOParameters.getOutputVariables(flowElement.getId()));
-			inputVariableNames.addAll(formFields.getVariablesForTask(flowElement.getId()));
-
-			List<Variable> inputVariables = filterFlowElementVariables(variables, inputVariableNames);
-
-			return TestgeneratorDSLObjectCreator.createUserTaskFlowElement(flowElement.getId(), inputVariables);
-		} else if (flowElement instanceof ManualTask) {
-			return TestgeneratorDSLObjectCreator.createManualTaskFlowElement(flowElement.getId());
-		} else if (flowElement instanceof ScriptTask) {
-			return TestgeneratorDSLObjectCreator.createScriptTaskFlowElement(flowElement.getId());
-		} else if (flowElement instanceof BusinessRuleTask) {
-			return TestgeneratorDSLObjectCreator.createBusinessRuleTaskFlowElement(flowElement.getId());
-		} else if (flowElement instanceof ServiceTask) {
-			String delegate = getDelegate((ServiceTask) flowElement);
-			String externalTopicTextual = getExternalTopic((ServiceTask) flowElement);
-			ExternalTopic externalTopic = getExternalTopic(externalTopics, externalTopicTextual);
-
-			if (delegate != null) {
-				return TestgeneratorDSLObjectCreator.createDelegateServiceTaskFlowElement(flowElement.getId(),
-						delegate);
-			} else if (externalTopic != null) {
-				List<VariableDeclaration> hardcodedVariables = BPMNParseUtils.getHardcodedVariables(flowElement.getId(), variables,
-						bpmnIOParameters);
-				return TestgeneratorDSLObjectCreator.createExternalServiceTaskFlowElement(flowElement.getId(),
-						externalTopic, hardcodedVariables);
-			} else {
-				throw new IncompleteFlowElementException(flowElement.getId());
-			}
-		} else if (flowElement instanceof SequenceFlow) {
-			String expression = expressions.getSequenceFlowExpressionMap().get(flowElement.getId());
-			return TestgeneratorDSLObjectCreator.createSequenceFlowElement(flowElement.getId(), expression);
-		}
-
-		throw new UnsupportedFlowElementException(flowElement.getId());
-	}
-
-	private List<Flow> getFlows(BPMNDiagram bpmn, BPMNFlowSet flowSet, List<FlowElement> flowElements) {
-		return flowSet.getFlows().stream() //
-				.map(flow -> createFlow(bpmn, flow, flowElements)) //
-				.collect(Collectors.toList()); //
-	}
-
-	private Flow createFlow(BPMNDiagram bpmn, BPMNFlow flow, List<FlowElement> flowElements) {
-		List<String> flowNodes = flow.getFlowElementIds();
-
-		List<FlowElement> inclFlowElements = getInclFlowElements(flowElements, flowNodes);
-		List<FlowElement> exclFlowElements = getExclFlowElements(flowElements, flowNodes);
-		return TestgeneratorDSLObjectCreator.createFlow(flow.getName(), bpmn, inclFlowElements, exclFlowElements);
-	}
-
-	private List<FlowElement> getInclFlowElements(List<FlowElement> flowElements, List<String> subset) {
-		return subset.stream() //
-				.map(flowElementName -> getFlowElementByName(flowElements, flowElementName)) //
-				.collect(Collectors.toList()); //
-	}
-
-	private List<FlowElement> getExclFlowElements(List<FlowElement> flowElements, List<String> subset) {
-		return flowElements.stream() //
-				.filter(flowElement -> !subset.contains(flowElement.getName())) //
-				.collect(Collectors.toList()); //
-	}
-
-	private List<Variable> filterFlowElementVariables(List<Variable> allVariables,
-			List<String> variablesForFlowElement) {
-		return allVariables.stream() //
-				.filter(variable -> variablesForFlowElement.contains(variable.getName())) //
-				.collect(Collectors.toList()); //
-	}
-
-	@SuppressWarnings("unchecked")
-	private <T extends Object> List<T> getProposals(String variable, BPMNTestdata<? extends Object> variableTestdata,
-			Class<T> clazz) {
-		return variableTestdata.getValues().stream() //
-				.map(value -> ((T) value)) //
-				.collect(Collectors.toList()); //
-	}
-
-	private List<Integer> getIntProposals(String variable, BPMNTestdata<? extends Object> variableTestdata) {
-		return variableTestdata.getValues().stream() //
-				.map(value -> ((Long) value).intValue()) //
-				.collect(Collectors.toList()); //
-	}
-
-	private void checkTestIdAlreadyTaken(String testId, TestgeneratorDSLSerializer serializer) {
-		Test test = serializer.getTest(testId);
-
-		if (test != null) {
-			throw new TestIdAlreadyTakenException(testId);
-		}
-	}
-
-	private Test getTest(String testId, TestgeneratorDSLSerializer serializer) {
-		Test test = serializer.getTest(testId);
-		if (test == null) {
-			throw new TestNotFoundException(testId);
-		}
-
-		return test;
-	}
-
-	private FlowElement getFlowElementByName(List<FlowElement> flowElements, String name) {
-		return flowElements.stream() //
-				.filter(flowElement -> flowElement.getName().equals(name)) //
-				.findFirst() //
-				.get(); // always present
-	}
-
-	private String getDelegate(ServiceTask serviceTask) {
-		String delegate = serviceTask.getAttributeValueNs(NAMESPACE_URI_BPMN, "delegateExpression");
-
-		if (delegate != null) {
-			delegate = delegate.substring(2, delegate.length() - 1);
-		}
-
-		return delegate;
-	}
-
-	private List<ExternalTopic> getExternalTopics(BPMNFlowSet flowSet) {
-		return flowSet.getFlowElements().stream() //
-				.filter(flowElement -> flowElement instanceof ServiceTask) //
-				.map(serviceTask -> ((ServiceTask) serviceTask)) //
-				.map(serviceTask -> getExternalTopic(serviceTask)) //
-				.filter(externalTopicName -> externalTopicName != null) //
-				.distinct() //
-				.map(externalTopicName -> TestgeneratorDSLObjectCreator.createExternalTopic(externalTopicName)) //
-				.collect(Collectors.toList()); //
-	}
-
-	private String getExternalTopic(ServiceTask serviceTask) {
-		String externalTopic = serviceTask.getAttributeValueNs(NAMESPACE_URI_BPMN, "topic");
-		return externalTopic;
-	}
-
-	private ExternalTopic getExternalTopic(List<ExternalTopic> externalTopics, String externalTopicTextual) {
-		Optional<ExternalTopic> externalTopicOpt = externalTopics.stream() //
-				.filter(externalTopic -> externalTopic.getName().equals(externalTopicTextual)) //
-				.findFirst();
-
-		return externalTopicOpt.isPresent() ? externalTopicOpt.get() : null;
-	}
-
-	
-
-	private List<Loop> getLoops(List<de.fhmuenster.masterthesis.testgeneratorDSL.Loop> dslLoops) {
-		return dslLoops.stream() //
-				.map(dslLoop -> getLoop(dslLoop)) //
-				.collect(Collectors.toList()); //
-	}
-
-	private Loop getLoop(de.fhmuenster.masterthesis.testgeneratorDSL.Loop dslLoop) {
-		Loop loop = new Loop();
-		loop.setId(dslLoop.getName());
-		loop.setEndId(dslLoop.getEnd());
-		loop.setStartId(dslLoop.getStart());
-		loop.setStartFollowerId(dslLoop.getFollower());
-		loop.setComplexity(dslLoop.getComplexity());
-		loop.setFrequencies(TestgeneratorDSLUtils.getFrequencies(dslLoop));
-
-		return loop;
-	}
-}
+package de.fhmuenster.masterthesis.Testgenerator.rest.service.test;
+
+import java.io.IOException;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+import org.camunda.bpm.model.bpmn.instance.BusinessRuleTask;
+import org.camunda.bpm.model.bpmn.instance.EndEvent;
+import org.camunda.bpm.model.bpmn.instance.Gateway;
+import org.camunda.bpm.model.bpmn.instance.ManualTask;
+import org.camunda.bpm.model.bpmn.instance.ScriptTask;
+import org.camunda.bpm.model.bpmn.instance.SequenceFlow;
+import org.camunda.bpm.model.bpmn.instance.ServiceTask;
+import org.camunda.bpm.model.bpmn.instance.StartEvent;
+import org.camunda.bpm.model.bpmn.instance.UserTask;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNBundle;
+import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNExpressions;
+import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNFlow;
+import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNFlowSet;
+import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNFormFields;
+import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNIOParameters;
+import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNTestcase;
+import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNTestdata;
+import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.BPMNExpressionScanner;
+import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.BPMNFlowScanner;
+import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.BPMNVariableBoundaryScanner;
+import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.BPMNVariableFormFieldScanner;
+import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.BPMNVariableIOScanner;
+import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.loop.Loop;
+import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.loop.LoopFrequencyAssigner;
+import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.loop.LoopScanner;
+import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.sese.IsElement;
+import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.sese.SESEBuilder;
+import de.fhmuenster.masterthesis.Testgenerator.dmn.data.DMNBundle;
+import de.fhmuenster.masterthesis.Testgenerator.dmn.data.DMNDecisionModel;
+import de.fhmuenster.masterthesis.Testgenerator.dmn.data.DMNVariables;
+import de.fhmuenster.masterthesis.Testgenerator.embeddedform.data.EmbeddedFormDocument;
+import de.fhmuenster.masterthesis.Testgenerator.logging.LoggerProvider;
+import de.fhmuenster.masterthesis.Testgenerator.logging.TestgeneratorLogger;
+import de.fhmuenster.masterthesis.Testgenerator.rest.service.converters.TestConverter;
+import de.fhmuenster.masterthesis.Testgenerator.rest.service.flow.FlowService;
+import de.fhmuenster.masterthesis.Testgenerator.rest.service.mock.MockService;
+import de.fhmuenster.masterthesis.Testgenerator.rest.service.project.Project;
+import de.fhmuenster.masterthesis.Testgenerator.rest.service.project.ProjectDirectories;
+import de.fhmuenster.masterthesis.Testgenerator.utils.BPMNParseUtils;
+import de.fhmuenster.masterthesis.Testgenerator.utils.ProjectDirectoryUtils;
+import de.fhmuenster.masterthesis.serialization.TestgeneratorDSLObjectCreator;
+import de.fhmuenster.masterthesis.serialization.TestgeneratorDSLSerializer;
+import de.fhmuenster.masterthesis.serialization.VariableProposal;
+import de.fhmuenster.masterthesis.testgeneratorDSL.BPMNDiagram;
+import de.fhmuenster.masterthesis.testgeneratorDSL.ExternalTopic;
+import de.fhmuenster.masterthesis.testgeneratorDSL.Flow;
+import de.fhmuenster.masterthesis.testgeneratorDSL.FlowElement;
+import de.fhmuenster.masterthesis.testgeneratorDSL.Mock;
+import de.fhmuenster.masterthesis.testgeneratorDSL.Test;
+import de.fhmuenster.masterthesis.testgeneratorDSL.Variable;
+import de.fhmuenster.masterthesis.testgeneratorDSL.VariableDeclaration;
+import de.fhmuenster.masterthesis.utils.TestgeneratorDSLUtils;
+
+@Service
+public class TestService {
+
+	private static final TestgeneratorLogger LOGGER = LoggerProvider.getLogger(TestService.class);
+	private static final String NAMESPACE_URI_BPMN = "http://camunda.org/schema/1.0/bpmn";
+
+	private long millisDataStart;
+	private long millisDataEnd;
+	
+	@Autowired
+	private FlowService flowService;
+	@Autowired
+	private MockService mockService;
+
+	public TestService() {
+	}
+
+	public List<de.fhmuenster.masterthesis.testgeneratorDSL.Loop> initLoops(Project project) {
+		Path testFilePath = ProjectDirectoryUtils.getTestspecificationPath(project.getProjectDirectories());
+		String testpackage = project.getProjectDirectories().getTestPackage();
+		List<de.fhmuenster.masterthesis.testgeneratorDSL.Loop> dslLoops = null;
+
+		try {
+			TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testFilePath.toString());
+
+			BPMNDiagram bpmnDiagram = serializer.getBPMNDiagram("process");
+			if (bpmnDiagram == null) {
+				BPMNBundle bpmnBundle = BPMNParseUtils.readBPMNBundle(project);
+				List<DMNBundle> dmnBundles = BPMNParseUtils.readDMNBundles(project);
+				List<EmbeddedFormDocument> embeddedFormDocuments = BPMNParseUtils.readEmbeddedFormDocuments(project);
+				List<DMNDecisionModel> decisionModels = BPMNParseUtils.getDecisionModels(dmnBundles);
+				bpmnDiagram = BPMNParseUtils.getBPMNDiagram(bpmnBundle.getProcessModel(), testpackage, decisionModels,
+						embeddedFormDocuments);
+
+				// Build Single-Entry-Single-Exit-Graph
+				SESEBuilder seseBuilder = new SESEBuilder(bpmnBundle.getModelInstance());
+				seseBuilder.buildSingleEntrySingleExit();
+				List<IsElement> seseTransform = seseBuilder.getSeseTransform();
+
+				// Scan for loops
+				LoopScanner loopScanner = new LoopScanner(seseTransform);
+				List<Loop> loops = loopScanner.scanLoops();
+
+				// Set frequency for loops
+				LoopFrequencyAssigner frequencyAssigner = new LoopFrequencyAssigner(loops);
+				frequencyAssigner.assign();
+
+				serializer.addBPMNDiagram(bpmnDiagram);
+				dslLoops = flowService.getDSLLoops(loops);
+				dslLoops.forEach(dslLoop -> serializer.addLoop(dslLoop));
+
+				serializer.serialize();
+			}
+
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+
+		if (dslLoops == null) {
+			return flowService.getLoops(project.getProjectDirectories());
+		}
+
+		return dslLoops;
+	}
+
+	public void initTestcollection(Project project) {
+		Path testFilePath = ProjectDirectoryUtils.getTestspecificationPath(project.getProjectDirectories());
+		String testpackage = project.getProjectDirectories().getTestPackage();
+
+		try {
+			TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testFilePath.toString());
+
+			BPMNDiagram bpmnDiagram = serializer.getBPMNDiagram("process");
+			List<FlowElement> flowElementsCheck = serializer.getFlowElements();
+
+			if (bpmnDiagram != null && flowElementsCheck.isEmpty()) {
+				BPMNBundle bpmnBundle = BPMNParseUtils.readBPMNBundle(project);
+				List<DMNBundle> dmnBundles = BPMNParseUtils.readDMNBundles(project);
+				List<EmbeddedFormDocument> embeddedFormDocuments = BPMNParseUtils.readEmbeddedFormDocuments(project);
+				List<DMNDecisionModel> decisionModels = BPMNParseUtils.getDecisionModels(dmnBundles);
+
+				List<de.fhmuenster.masterthesis.testgeneratorDSL.Loop> dslLoops = serializer.getLoops();
+				List<Loop> loops = getLoops(dslLoops);
+
+				// Parse different flows of process model
+				BPMNFlowScanner scanner = new BPMNFlowScanner(bpmnBundle.getModelInstance(), loops);
+				BPMNFlowSet flowSet = scanner.scanFlows();
+
+				if (LOGGER.isInfo()) {
+					millisDataStart = System.currentTimeMillis();
+				}
+
+				// Read FormFields from Events and Tasks
+				BPMNVariableFormFieldScanner variableScanner = new BPMNVariableFormFieldScanner(flowSet);
+				EmbeddedFormDocument[] embeddedArray = new EmbeddedFormDocument[embeddedFormDocuments.size()];
+				variableScanner.setEmbeddedFormDocuments(embeddedFormDocuments.toArray(embeddedArray));
+				variableScanner.doScan();
+				BPMNFormFields formFields = variableScanner.getFormFields();
+
+				// Read Input/Output-Parameters
+				BPMNVariableIOScanner variableIOScanner = new BPMNVariableIOScanner(flowSet);
+				variableIOScanner.doScan();
+				BPMNIOParameters bpmnIOParameters = variableIOScanner.getBpmnIOParameters();
+
+				// Parse conditional expressions
+				BPMNExpressionScanner expressionScanner = new BPMNExpressionScanner(flowSet);
+				expressionScanner.doScan();
+				BPMNExpressions expressions = expressionScanner.getExpressions();
+
+				List<DMNVariables> dmnVariableList = BPMNParseUtils.getDMNVariables(dmnBundles);
+
+				BPMNVariableBoundaryScanner boundaryScanner = new BPMNVariableBoundaryScanner(expressions, formFields,
+						bpmnIOParameters, dmnVariableList);
+				boundaryScanner.doScan();
+				HashMap<String, BPMNTestdata<?>> variableTestdata = boundaryScanner.getVariableTestdata();
+
+				List<Variable> variables = BPMNParseUtils.getVariables(formFields, variableTestdata, bpmnIOParameters);
+
+				if (LOGGER.isInfo()) {
+					millisDataEnd = System.currentTimeMillis();
+					LOGGER.info("Time needed for Data-Scan: " + (millisDataEnd - millisDataStart) + " ms");
+				}
+				
+				List<ExternalTopic> externalTopics = getExternalTopics(flowSet);
+				List<FlowElement> flowElements = getFlowElements(flowSet, variables, formFields, expressions,
+						bpmnIOParameters, externalTopics);
+				List<Flow> flows = getFlows(bpmnDiagram, flowSet, flowElements);
+
+				flowElements.forEach(flowElement -> serializer.addFlowElement(flowElement));
+				variables.forEach(var -> serializer.addVariable(var));
+				externalTopics.forEach(externalTopic -> serializer.addExternalTopic(externalTopic));
+				flows.forEach(flow -> serializer.addFlow(flow));
+
+				serializer.serialize();
+			}
+
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+	public void addTest(BPMNTestcase testcase, ProjectDirectories projectDirectories) {
+		Path testspecificationPath = ProjectDirectoryUtils.getTestspecificationPath(projectDirectories);
+
+		try {
+			TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testspecificationPath.toString());
+
+			checkTestIdAlreadyTaken(testcase.getName(), serializer);
+
+			addTest(testcase, serializer, projectDirectories);
+
+			serializer.serialize();
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+	public void updateTest(String testId, BPMNTestcase testcase, ProjectDirectories projectDirectories) {
+		Path testspecificationPath = ProjectDirectoryUtils.getTestspecificationPath(projectDirectories);
+
+		try {
+			TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testspecificationPath.toString());
+
+			if (!testId.equals(testcase.getName())) {
+				checkTestIdAlreadyTaken(testcase.getName(), serializer);
+			}
+
+			Test testToDelete = getTest(testId, serializer);
+			serializer.deleteTest(testToDelete.getName());
+
+			addTest(testcase, serializer, projectDirectories);
+
+			serializer.serialize();
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+	private void addTest(BPMNTestcase testcase, TestgeneratorDSLSerializer serializer,
+			ProjectDirectories projectDirectories) {
+		Flow flow = serializer.getFlow(testcase.getFlow());
+		List<FlowElement> flowElements = serializer.getFlowElements();
+		List<Variable> variables = serializer.getVariables();
+		List<Mock> mocks = mockService.getMocks(testcase.getMocks(), projectDirectories);
+		Test newTest = TestConverter.getTest(testcase, flow, flowElements, variables, mocks);
+		
+		serializer.addTest(newTest);
+	}
+
+	public List<VariableProposal<?>> getVariableProposals(ProjectDirectories projectDirectories) {
+		Path testspecificationPath = ProjectDirectoryUtils.getTestspecificationPath(projectDirectories);
+
+		List<VariableProposal<?>> variableProposals = new ArrayList<>();
+		try {
+			TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testspecificationPath.toString());
+
+			variableProposals = serializer.getVariableProposals();
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+
+		return variableProposals;
+	}
+
+	public List<BPMNTestcase> getTests(ProjectDirectories projectDirectories, Flow flow) {
+		Path testspecificationPath = ProjectDirectoryUtils.getTestspecificationPath(projectDirectories);
+
+		try {
+			TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testspecificationPath.toString());
+
+			List<Test> testsForFlow = serializer.getTestsForFlow(flow);
+			List<BPMNTestcase> bpmnTestcases = new ArrayList<>();
+			for (Test test : testsForFlow) {
+				bpmnTestcases.add(TestConverter.getBPMNTestcase(test));
+			}
+
+			return bpmnTestcases;
+		} catch (IOException e) {
+			//
+		}
+
+		return null;
+	}
+
+	public BPMNTestcase getTest(ProjectDirectories projectDirectories, String testId) {
+		Path testspecificationPath = ProjectDirectoryUtils.getTestspecificationPath(projectDirectories);
+
+		try {
+			TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testspecificationPath.toString());
+
+			Test test = getTest(testId, serializer);
+
+			BPMNTestcase bpmnTestcase = TestConverter.getBPMNTestcase(test);
+			return bpmnTestcase;
+		} catch (IOException e) {
+			//
+		}
+
+		return null;
+	}
+
+	public void deleteTest(ProjectDirectories projectDirectories, String testId) {
+		Path testspecificationPath = ProjectDirectoryUtils.getTestspecificationPath(projectDirectories);
+
+		try {
+			TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testspecificationPath.toString());
+
+			serializer.deleteTest(testId);
+
+			serializer.serialize();
+		} catch (IOException e) {
+			//
+		}
+	}
+
+	public List<FlowElement> getUserInputTasks(Flow flow) {
+		return TestgeneratorDSLUtils.getUserInputElements(flow);
+	}
+
+	public Map<String, Long> getFlowTestcount(ProjectDirectories projectDirectories) {
+		Path testspecificationPath = ProjectDirectoryUtils.getTestspecificationPath(projectDirectories);
+
+		try {
+			TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testspecificationPath.toString());
+			Map<String, Long> flowTestCount = serializer.getFlowTestCount();
+
+			return flowTestCount;
+		} catch (IOException e) {
+			//
+		}
+
+		return new HashMap<>();
+	}
+
+	private List<FlowElement> getFlowElements(BPMNFlowSet flowSet, List<Variable> variables, BPMNFormFields formFields,
+			BPMNExpressions expressions, BPMNIOParameters bpmnIOParameters, List<ExternalTopic> externalTopics) {
+		return flowSet.getFlowElements().stream() //
+				.map(flowElement -> getFlowElement(flowElement, variables, formFields, expressions, bpmnIOParameters,
+						externalTopics)) //
+				.collect(Collectors.toList()); //
+	}
+
+	private FlowElement getFlowElement(org.camunda.bpm.model.bpmn.instance.FlowElement flowElement,
+			List<Variable> variables, BPMNFormFields formFields, BPMNExpressions expressions,
+			BPMNIOParameters bpmnIOParameters, List<ExternalTopic> externalTopics) {
+
+		if (flowElement instanceof StartEvent) {
+			List<Variable> inputVariables = filterFlowElementVariables(variables,
+					formFields.getVariablesForTask(flowElement.getId()));
+			return TestgeneratorDSLObjectCreator.createStartFlowElement(flowElement.getId(), inputVariables);
+		} else if (flowElement instanceof EndEvent) {
+			return TestgeneratorDSLObjectCreator.createEndFlowElement(flowElement.getId());
+		} else if (flowElement instanceof Gateway) {
+			return TestgeneratorDSLObjectCreator.createGatewayFlowElement(flowElement.getId());
+		} else if (flowElement instanceof UserTask) {
+			List<String> inputVariableNames = new ArrayList<>();
+			inputVariableNames.addAll(bpmnIOParameters.getOutputVariables(flowElement.getId()));
+			inputVariableNames.addAll(formFields.getVariablesForTask(flowElement.getId()));
+
+			List<Variable> inputVariables = filterFlowElementVariables(variables, inputVariableNames);
+
+			return TestgeneratorDSLObjectCreator.createUserTaskFlowElement(flowElement.getId(), inputVariables);
+		} else if (flowElement instanceof ManualTask) {
+			return TestgeneratorDSLObjectCreator.createManualTaskFlowElement(flowElement.getId());
+		} else if (flowElement instanceof ScriptTask) {
+			return TestgeneratorDSLObjectCreator.createScriptTaskFlowElement(flowElement.getId());
+		} else if (flowElement instanceof BusinessRuleTask) {
+			return TestgeneratorDSLObjectCreator.createBusinessRuleTaskFlowElement(flowElement.getId());
+		} else if (flowElement instanceof ServiceTask) {
+			String delegate = getDelegate((ServiceTask) flowElement);
+			String externalTopicTextual = getExternalTopic((ServiceTask) flowElement);
+			ExternalTopic externalTopic = getExternalTopic(externalTopics, externalTopicTextual);
+
+			if (delegate != null) {
+				return TestgeneratorDSLObjectCreator.createDelegateServiceTaskFlowElement(flowElement.getId(),
+						delegate);
+			} else if (externalTopic != null) {
+				List<VariableDeclaration> hardcodedVariables = BPMNParseUtils.getHardcodedVariables(flowElement.getId(), variables,
+						bpmnIOParameters);
+				return TestgeneratorDSLObjectCreator.createExternalServiceTaskFlowElement(flowElement.getId(),
+						externalTopic, hardcodedVariables);
+			} else {
+				throw new IncompleteFlowElementException(flowElement.getId());
+			}
+		} else if (flowElement instanceof SequenceFlow) {
+			String expression = expressions.getSequenceFlowExpressionMap().get(flowElement.getId());
+			return TestgeneratorDSLObjectCreator.createSequenceFlowElement(flowElement.getId(), expression);
+		}
+
+		throw new UnsupportedFlowElementException(flowElement.getId());
+	}
+
+	private List<Flow> getFlows(BPMNDiagram bpmn, BPMNFlowSet flowSet, List<FlowElement> flowElements) {
+		return flowSet.getFlows().stream() //
+				.map(flow -> createFlow(bpmn, flow, flowElements)) //
+				.collect(Collectors.toList()); //
+	}
+
+	private Flow createFlow(BPMNDiagram bpmn, BPMNFlow flow, List<FlowElement> flowElements) {
+		List<String> flowNodes = flow.getFlowElementIds();
+
+		List<FlowElement> inclFlowElements = getInclFlowElements(flowElements, flowNodes);
+		List<FlowElement> exclFlowElements = getExclFlowElements(flowElements, flowNodes);
+		return TestgeneratorDSLObjectCreator.createFlow(flow.getName(), bpmn, inclFlowElements, exclFlowElements);
+	}
+
+	private List<FlowElement> getInclFlowElements(List<FlowElement> flowElements, List<String> subset) {
+		return subset.stream() //
+				.map(flowElementName -> getFlowElementByName(flowElements, flowElementName)) //
+				.collect(Collectors.toList()); //
+	}
+
+	private List<FlowElement> getExclFlowElements(List<FlowElement> flowElements, List<String> subset) {
+		return flowElements.stream() //
+				.filter(flowElement -> !subset.contains(flowElement.getName())) //
+				.collect(Collectors.toList()); //
+	}
+
+	private List<Variable> filterFlowElementVariables(List<Variable> allVariables,
+			List<String> variablesForFlowElement) {
+		return allVariables.stream() //
+				.filter(variable -> variablesForFlowElement.contains(variable.getName())) //
+				.collect(Collectors.toList()); //
+	}
+
+	@SuppressWarnings("unchecked")
+	private <T extends Object> List<T> getProposals(String variable, BPMNTestdata<? extends Object> variableTestdata,
+			Class<T> clazz) {
+		return variableTestdata.getValues().stream() //
+				.map(value -> ((T) value)) //
+				.collect(Collectors.toList()); //
+	}
+
+	private List<Integer> getIntProposals(String variable, BPMNTestdata<? extends Object> variableTestdata) {
+		return variableTestdata.getValues().stream() //
+				.map(value -> ((Long) value).intValue()) //
+				.collect(Collectors.toList()); //
+	}
+
+	private void checkTestIdAlreadyTaken(String testId, TestgeneratorDSLSerializer serializer) {
+		Test test = serializer.getTest(testId);
+
+		if (test != null) {
+			throw new TestIdAlreadyTakenException(testId);
+		}
+	}
+
+	private Test getTest(String testId, TestgeneratorDSLSerializer serializer) {
+		Test test = serializer.getTest(testId);
+		if (test == null) {
+			throw new TestNotFoundException(testId);
+		}
+
+		return test;
+	}
+
+	private FlowElement getFlowElementByName(List<FlowElement> flowElements, String name) {
+		return flowElements.stream() //
+				.filter(flowElement -> flowElement.getName().equals(name)) //
+				.findFirst() //
+				.get(); // always present
+	}
+
+	private String getDelegate(ServiceTask serviceTask) {
+		String delegate = serviceTask.getAttributeValueNs(NAMESPACE_URI_BPMN, "delegateExpression");
+
+		if (delegate != null) {
+			delegate = delegate.substring(2, delegate.length() - 1);
+		}
+
+		return delegate;
+	}
+
+	private List<ExternalTopic> getExternalTopics(BPMNFlowSet flowSet) {
+		return flowSet.getFlowElements().stream() //
+				.filter(flowElement -> flowElement instanceof ServiceTask) //
+				.map(serviceTask -> ((ServiceTask) serviceTask)) //
+				.map(serviceTask -> getExternalTopic(serviceTask)) //
+				.filter(externalTopicName -> externalTopicName != null) //
+				.distinct() //
+				.map(externalTopicName -> TestgeneratorDSLObjectCreator.createExternalTopic(externalTopicName)) //
+				.collect(Collectors.toList()); //
+	}
+
+	private String getExternalTopic(ServiceTask serviceTask) {
+		String externalTopic = serviceTask.getAttributeValueNs(NAMESPACE_URI_BPMN, "topic");
+		return externalTopic;
+	}
+
+	private ExternalTopic getExternalTopic(List<ExternalTopic> externalTopics, String externalTopicTextual) {
+		Optional<ExternalTopic> externalTopicOpt = externalTopics.stream() //
+				.filter(externalTopic -> externalTopic.getName().equals(externalTopicTextual)) //
+				.findFirst();
+
+		return externalTopicOpt.isPresent() ? externalTopicOpt.get() : null;
+	}
+
+	
+
+	private List<Loop> getLoops(List<de.fhmuenster.masterthesis.testgeneratorDSL.Loop> dslLoops) {
+		return dslLoops.stream() //
+				.map(dslLoop -> getLoop(dslLoop)) //
+				.collect(Collectors.toList()); //
+	}
+
+	private Loop getLoop(de.fhmuenster.masterthesis.testgeneratorDSL.Loop dslLoop) {
+		Loop loop = new Loop();
+		loop.setId(dslLoop.getName());
+		loop.setEndId(dslLoop.getEnd());
+		loop.setStartId(dslLoop.getStart());
+		loop.setStartFollowerId(dslLoop.getFollower());
+		loop.setComplexity(dslLoop.getComplexity());
+		loop.setFrequencies(TestgeneratorDSLUtils.getFrequencies(dslLoop));
+
+		return loop;
+	}
+}
diff --git a/testgenerator-web/testgenerator-web/src/app/components/test/test.component.css b/testgenerator-web/testgenerator-web/src/app/components/test/test.component.css
index f74d5f5..4c468e7 100644
--- a/testgenerator-web/testgenerator-web/src/app/components/test/test.component.css
+++ b/testgenerator-web/testgenerator-web/src/app/components/test/test.component.css
@@ -1,35 +1,39 @@
-.testgen-taskvariable-container {
-    margin-top: 2rem;
-    margin-bottom: 2rem;
-}
-
-.testgen-testtask {
-    border: 2px solid #4b515d;
-    margin-bottom: 1rem;
-    padding: 1rem;
-    border-radius: 25px;
-}
-
-.testgen-form-radio {
-    margin-top: 1.5rem;
-    margin-bottom: 2rem
-}
-
-.testgen-endcheck-container {
-    margin-top: 2rem;
-    margin-bottom: 2rem;
-}
-
-.testgen-endcheck {
-    border: 2px solid #4b515d;
-    margin-bottom: 1rem;
-    padding: 1rem;
-    border-radius: 25px;
-}
-
-.testgen-mock-container {
-    border: 2px solid #4b515d;
-    margin-bottom: 1rem;
-    padding: 1rem;
-    border-radius: 25px;
+.testgen-taskvariable-container {
+    margin-top: 2rem;
+    margin-bottom: 2rem;
+}
+
+.testgen-testtask {
+    border: 2px solid #4b515d;
+    margin-bottom: 1rem;
+    padding: 1rem;
+    border-radius: 25px;
+}
+
+.testgen-form-radio {
+    margin-top: 1.5rem;
+    margin-bottom: 2rem
+}
+
+.testgen-endcheck-container {
+    margin-top: 2rem;
+    margin-bottom: 2rem;
+}
+
+.testgen-endcheck {
+    border: 2px solid #4b515d;
+    margin-bottom: 1rem;
+    padding: 1rem;
+    border-radius: 25px;
+}
+
+.testgen-mock-container {
+    border: 2px solid #4b515d;
+    margin-bottom: 1rem;
+    padding: 1rem;
+    border-radius: 25px;
+}
+
+.testPrioTitle {
+    line-height: 28px;
 }
\ No newline at end of file
diff --git a/testgenerator-web/testgenerator-web/src/app/components/test/test.component.html b/testgenerator-web/testgenerator-web/src/app/components/test/test.component.html
index 062b56e..09b217d 100644
--- a/testgenerator-web/testgenerator-web/src/app/components/test/test.component.html
+++ b/testgenerator-web/testgenerator-web/src/app/components/test/test.component.html
@@ -1,152 +1,159 @@
-<div class="container">
-    <div class="row row mt-5">
-
-        <div class="col" *ngIf="!isLoading && !isTestLoading && testcase">
-            <h2 class="testgen-headline-message" *ngIf="isEdit" i18n="edit test">Edit test</h2>
-            <h2 class="testgen-headline-message" *ngIf="!isEdit" i18n="create test">Create test</h2>
-
-            <form [formGroup]="formGroup">
-                <div class="md-form form-group">
-                    <input mdbInput mdbValidate type="text" class="form-control" id="name" formControlName="name">
-                    <label for="name" i18n="testcase name" i18n="test name">Testcase name</label>
-                    <p class="text-danger" *ngIf="formGroup.get('name').touched && formGroup.get('name').hasError('required')" i18n="test name required">Testcase name is required.</p>
-                    <p class="text-danger" *ngIf="formGroup.get('name').hasError('testIdTaken')" i18n="test name taken">Testcase name is already taken.</p>
-                </div>
-
-                <div [formGroupName]="'mocks'" class="testgen-mock-container">
-                    <h3 i18n="mock header">Mocks</h3>
-                    <div *ngFor="let delegateService of flowInfo.delegateServices; let i=index">
-                        <div class="form-row">
-                            <div class="col-md-6">
-                                <label for="{{delegateService.serviceName}}"  i18n="mock for service">Mock for {{delegateService.serviceName}}</label>
-                                <select class="browser-default custom-select" formControlName="{{delegateService.serviceName}}">
-                                    <option *ngFor="let mockName of mocks.get(delegateService.serviceName); let mockIndex=index" value="{{mockName}}">{{mockName}}</option>
-                                </select>
-                            </div>
-                        </div>
-                    </div>
-
-                    <div *ngFor="let externalTopic of flowInfo.externalTopics; let i=index">
-                        <div class="form-row">
-                            <div class="col-md-6">
-                                <label for="{{externalTopic.externalTopicName}}" i18n="mock for topic">Mock for {{externalTopic.externalTopicName}}</label>
-                                <select class="browser-default custom-select" formControlName="{{externalTopic.externalTopicName}}">
-                                    <option *ngFor="let mockName of mocks.get(externalTopic.externalTopicName); let mockIndex=index" value="{{mockName}}">{{mockName}}</option>
-                                </select>
-                            </div>
-                        </div>
-                    </div>
-
-                    <div *ngIf="flowInfo.delegateServices.length == 0 && flowInfo.externalTopics.length == 0">
-                        <p i18n="no mocks created">No service tasks were detected for which mocks were already created.</p>
-                    </div>
-                </div>
-
-                <div formArrayName="taskVariableList">
-                    <div class="testgen-taskvariable-container" *ngFor="let taskVariable of testcase.taskVariableList; let i=index">
-                        <hr *ngIf="i > 0">
-                        <div class="testgen-testtask" [formGroupName]="i">
-                            <h3>{{taskVariable.task}}</h3>
-
-                            <div *ngFor="let variableValue of taskVariable.variableValues; let v=index">
-                                <!--String and Integer Fields-->
-                                <div class="md-form form-group" *ngIf="(dataTypes.get(variableValue.variable) == 'java.lang.Integer') || dataTypes.get(variableValue.variable) == 'java.lang.String'">
-                                    <input mdbInput mdbValidate type="number" class="form-control" id="{{variableValue.variable}}-{{i}}-{{v}}"
-                                        formControlName="{{variableValue.variable}}" *ngIf="dataTypes.get(variableValue.variable) == 'java.lang.Integer'">
-                                    <input mdbInput mdbValidate type="text" class="form-control" id="{{variableValue.variable}}-{{i}}-{{v}}"
-                                        formControlName="{{variableValue.variable}}" *ngIf="dataTypes.get(variableValue.variable) == 'java.lang.String'">
-                                    <label for="{{variableValue.variable}}-{{i}}-{{v}}">{{variableValue.variable}}</label>
-                                    <p *ngIf="getVariableProposals(variableValue.variable).proposals.length > 0" i18n="proposals">Proposals : [{{getVariableProposals(variableValue.variable) | variableProposals}}]</p>
-                                    <p *ngIf="getVariableProposals(variableValue.variable).proposals.length == 0" i18n="no proposals">No proposals</p>
-                                </div>
-
-                                <!--Boolean Checkboxes-->
-                                <div class="testgen-form-radio" *ngIf="dataTypes.get(variableValue.variable) == 'java.lang.Boolean'">
-                                    <label for="{{variableValue.variable}}-{{i}}-{{v}}">{{variableValue.variable}}</label>
-                                    <div class="custom-control custom-radio">
-                                        <input type="radio" class="custom-control-input" id="{{variableValue.variable}}Yes-{{i}}-{{v}}"
-                                            value="true" formControlName="{{variableValue.variable}}" mdbInput>
-                                        <label class="custom-control-label" for="{{variableValue.variable}}Yes-{{i}}-{{v}}">true</label>
-                                    </div>
-
-                                    <div class="custom-control custom-radio">
-                                        <input type="radio" class="custom-control-input" id="{{variableValue.variable}}No-{{i}}-{{v}}"
-                                            value="false" formControlName="{{variableValue.variable}}" mdbInput>
-                                        <label class="custom-control-label" for="{{variableValue.variable}}No-{{i}}-{{v}}">false</label>
-                                    </div>
-
-                                    <div class="custom-control custom-radio">
-                                        <input type="radio" class="custom-control-input" id="{{variableValue.variable}}Null-{{i}}-{{v}}"
-                                            value="null" formControlName="{{variableValue.variable}}" mdbInput>
-                                        <label class="custom-control-label" for="{{variableValue.variable}}Null-{{i}}-{{v}}">null</label>
-                                    </div>
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-
-                <hr>
-
-                <div>
-                    <div class="testgen-endcheck-container">
-                        <div class="testgen-endcheck">
-                            <h3 i18n="end check">Target-Actual-Comparison of the variables</h3>
-
-                            <div formGroupName="endChecks">
-                                <div *ngFor="let variableValue of testcase.endChecks; let i=index">
-
-                                    <!--String and Integer Fields-->
-                                    <div class="md-form form-group" *ngIf="(dataTypes.get(variableValue.variable) == 'java.lang.Integer') || dataTypes.get(variableValue.variable) == 'java.lang.String'">
-                                        <input mdbInput mdbValidate type="number" class="form-control" id="{{variableValue.variable}}"
-                                            formControlName="{{variableValue.variable}}" *ngIf="dataTypes.get(variableValue.variable) == 'java.lang.Integer'">
-                                        <input mdbInput mdbValidate type="text" class="form-control" id="{{variableValue.variable}}"
-                                            formControlName="{{variableValue.variable}}" *ngIf="dataTypes.get(variableValue.variable) == 'java.lang.String'">
-                                        <label for="{{variableValue.variable}}">{{variableValue.variable}}</label>
-                                    </div>
-
-                                    <!--Boolean Checkboxes-->
-                                    <div class="testgen-form-radio" *ngIf="dataTypes.get(variableValue.variable) == 'java.lang.Boolean'">
-                                        <label for="{{variableValue.variable}}">{{variableValue.variable}}</label>
-                                        <div class="custom-control custom-radio">
-                                            <input type="radio" class="custom-control-input" id="{{variableValue.variable}}YesEndCheck"
-                                                value="true" formControlName="{{variableValue.variable}}" mdbInput>
-                                            <label class="custom-control-label" for="{{variableValue.variable}}YesEndCheck">true</label>
-                                        </div>
-
-                                        <div class="custom-control custom-radio">
-                                            <input type="radio" class="custom-control-input" id="{{variableValue.variable}}NoEndCheck"
-                                                value="false" formControlName="{{variableValue.variable}}" mdbInput>
-                                            <label class="custom-control-label" for="{{variableValue.variable}}NoEndCheck">false</label>
-                                        </div>
-
-                                        <div class="custom-control custom-radio">
-                                            <input type="radio" class="custom-control-input" id="{{variableValue.variable}}NullEndCheck"
-                                                value="null" formControlName="{{variableValue.variable}}" mdbInput>
-                                            <label class="custom-control-label" for="{{variableValue.variable}}NullEndCheck">null</label>
-                                        </div>
-                                    </div>
-
-                                    <select class="browser-default custom-select" formControlName="{{variableValue.variable}}Compare">
-                                        <option value="==" [attr.selected]="variableValue.compareOperator == '==' ? 'selected' : null" i18n="equals">Equals</option>
-                                        <option value="!=" [attr.selected]="variableValue.compareOperator == '!=' ? 'selected' : null" i18n="not equals">Not equals</option>
-                                    </select>
-
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-            </form>
-            <div class="testgen-actionbar testgen-actionbar-right">
-                <a class="btn btn-md waves-effect waves-light testgen-danger testgen-btn-rounded" [routerLink]="['../']"
-                    *ngIf="!isEdit" i18n="cancel">Cancel</a>
-                <a class="btn btn-md waves-effect waves-light testgen-danger testgen-btn-rounded" [routerLink]="['../../']"
-                    *ngIf="isEdit" i18n="cancel">Cancel</a>
-                <a class="btn btn-md waves-effect waves-light testgen-primary testgen-btn-rounded" (click)="save()" i18n="save testcase">Save testcase</a>
-            </div>
-        </div>
-    </div>
-</div>
-
+<div class="container">
+    <div class="row row mt-5">
+
+        <div class="col" *ngIf="!isLoading && !isTestLoading && testcase">
+            <h2 class="testgen-headline-message" *ngIf="isEdit" i18n="edit test">Edit test</h2>
+            <h2 class="testgen-headline-message" *ngIf="!isEdit" i18n="create test">Create test</h2>
+
+            <form [formGroup]="formGroup">
+                    <div class="md-form form-group">
+                        <div class="col">
+                            <input mdbInput mdbValidate type="text" class="form-control" id="name" formControlName="name">
+                            <label for="name" i18n="testcase name" i18n="test name">Testcase name</label>
+                            <p class="text-danger" *ngIf="formGroup.get('name').touched && formGroup.get('name').hasError('required')" i18n="test name required">Testcase name is required.</p>
+                            <p class="text-danger" *ngIf="formGroup.get('name').hasError('testIdTaken')" i18n="test name taken">Testcase name is already taken.</p>
+                        </div>
+                        <br>
+                        <div class="col">
+                            <label for="priority" i18n="testcase priority">Test priority</label>
+                            <input mdbInput type="number" class="form-control" id="priority" value="{{testcase.priority}}">
+                        </div>
+                    </div>
+        
+                <div [formGroupName]="'mocks'" class="testgen-mock-container">
+                    <h3 i18n="mock header">Mocks</h3>
+                    <div *ngFor="let delegateService of flowInfo.delegateServices; let i=index">
+                        <div class="form-row">
+                            <div class="col-md-6">
+                                <label for="{{delegateService.serviceName}}"  i18n="mock for service">Mock for {{delegateService.serviceName}}</label>
+                                <select class="browser-default custom-select" formControlName="{{delegateService.serviceName}}">
+                                    <option *ngFor="let mockName of mocks.get(delegateService.serviceName); let mockIndex=index" value="{{mockName}}">{{mockName}}</option>
+                                </select>
+                            </div>
+                        </div>
+                    </div>
+
+                    <div *ngFor="let externalTopic of flowInfo.externalTopics; let i=index">
+                        <div class="form-row">
+                            <div class="col-md-6">
+                                <label for="{{externalTopic.externalTopicName}}" i18n="mock for topic">Mock for {{externalTopic.externalTopicName}}</label>
+                                <select class="browser-default custom-select" formControlName="{{externalTopic.externalTopicName}}">
+                                    <option *ngFor="let mockName of mocks.get(externalTopic.externalTopicName); let mockIndex=index" value="{{mockName}}">{{mockName}}</option>
+                                </select>
+                            </div>
+                        </div>
+                    </div>
+
+                    <div *ngIf="flowInfo.delegateServices.length == 0 && flowInfo.externalTopics.length == 0">
+                        <p i18n="no mocks created">No service tasks were detected for which mocks were already created.</p>
+                    </div>
+                </div>
+
+                <div formArrayName="taskVariableList">
+                    <div class="testgen-taskvariable-container" *ngFor="let taskVariable of testcase.taskVariableList; let i=index">
+                        <hr *ngIf="i > 0">
+                        <div class="testgen-testtask" [formGroupName]="i">
+                            <h3>{{taskVariable.task}}</h3>
+
+                            <div *ngFor="let variableValue of taskVariable.variableValues; let v=index">
+                                <!--String and Integer Fields-->
+                                <div class="md-form form-group" *ngIf="(dataTypes.get(variableValue.variable) == 'java.lang.Integer') || dataTypes.get(variableValue.variable) == 'java.lang.String'">
+                                    <input mdbInput mdbValidate type="number" class="form-control" id="{{variableValue.variable}}-{{i}}-{{v}}"
+                                        formControlName="{{variableValue.variable}}" *ngIf="dataTypes.get(variableValue.variable) == 'java.lang.Integer'">
+                                    <input mdbInput mdbValidate type="text" class="form-control" id="{{variableValue.variable}}-{{i}}-{{v}}"
+                                        formControlName="{{variableValue.variable}}" *ngIf="dataTypes.get(variableValue.variable) == 'java.lang.String'">
+                                    <label for="{{variableValue.variable}}-{{i}}-{{v}}">{{variableValue.variable}}</label>
+                                    <p *ngIf="getVariableProposals(variableValue.variable).proposals.length > 0" i18n="proposals">Proposals : [{{getVariableProposals(variableValue.variable) | variableProposals}}]</p>
+                                    <p *ngIf="getVariableProposals(variableValue.variable).proposals.length == 0" i18n="no proposals">No proposals</p>
+                                </div>
+
+                                <!--Boolean Checkboxes-->
+                                <div class="testgen-form-radio" *ngIf="dataTypes.get(variableValue.variable) == 'java.lang.Boolean'">
+                                    <label for="{{variableValue.variable}}-{{i}}-{{v}}">{{variableValue.variable}}</label>
+                                    <div class="custom-control custom-radio">
+                                        <input type="radio" class="custom-control-input" id="{{variableValue.variable}}Yes-{{i}}-{{v}}"
+                                            value="true" formControlName="{{variableValue.variable}}" mdbInput>
+                                        <label class="custom-control-label" for="{{variableValue.variable}}Yes-{{i}}-{{v}}">true</label>
+                                    </div>
+
+                                    <div class="custom-control custom-radio">
+                                        <input type="radio" class="custom-control-input" id="{{variableValue.variable}}No-{{i}}-{{v}}"
+                                            value="false" formControlName="{{variableValue.variable}}" mdbInput>
+                                        <label class="custom-control-label" for="{{variableValue.variable}}No-{{i}}-{{v}}">false</label>
+                                    </div>
+
+                                    <div class="custom-control custom-radio">
+                                        <input type="radio" class="custom-control-input" id="{{variableValue.variable}}Null-{{i}}-{{v}}"
+                                            value="null" formControlName="{{variableValue.variable}}" mdbInput>
+                                        <label class="custom-control-label" for="{{variableValue.variable}}Null-{{i}}-{{v}}">null</label>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+
+                <hr>
+
+                <div>
+                    <div class="testgen-endcheck-container">
+                        <div class="testgen-endcheck">
+                            <h3 i18n="end check">Target-Actual-Comparison of the variables</h3>
+
+                            <div formGroupName="endChecks">
+                                <div *ngFor="let variableValue of testcase.endChecks; let i=index">
+
+                                    <!--String and Integer Fields-->
+                                    <div class="md-form form-group" *ngIf="(dataTypes.get(variableValue.variable) == 'java.lang.Integer') || dataTypes.get(variableValue.variable) == 'java.lang.String'">
+                                        <input mdbInput mdbValidate type="number" class="form-control" id="{{variableValue.variable}}"
+                                            formControlName="{{variableValue.variable}}" *ngIf="dataTypes.get(variableValue.variable) == 'java.lang.Integer'">
+                                        <input mdbInput mdbValidate type="text" class="form-control" id="{{variableValue.variable}}"
+                                            formControlName="{{variableValue.variable}}" *ngIf="dataTypes.get(variableValue.variable) == 'java.lang.String'">
+                                        <label for="{{variableValue.variable}}">{{variableValue.variable}}</label>
+                                    </div>
+
+                                    <!--Boolean Checkboxes-->
+                                    <div class="testgen-form-radio" *ngIf="dataTypes.get(variableValue.variable) == 'java.lang.Boolean'">
+                                        <label for="{{variableValue.variable}}">{{variableValue.variable}}</label>
+                                        <div class="custom-control custom-radio">
+                                            <input type="radio" class="custom-control-input" id="{{variableValue.variable}}YesEndCheck"
+                                                value="true" formControlName="{{variableValue.variable}}" mdbInput>
+                                            <label class="custom-control-label" for="{{variableValue.variable}}YesEndCheck">true</label>
+                                        </div>
+
+                                        <div class="custom-control custom-radio">
+                                            <input type="radio" class="custom-control-input" id="{{variableValue.variable}}NoEndCheck"
+                                                value="false" formControlName="{{variableValue.variable}}" mdbInput>
+                                            <label class="custom-control-label" for="{{variableValue.variable}}NoEndCheck">false</label>
+                                        </div>
+
+                                        <div class="custom-control custom-radio">
+                                            <input type="radio" class="custom-control-input" id="{{variableValue.variable}}NullEndCheck"
+                                                value="null" formControlName="{{variableValue.variable}}" mdbInput>
+                                            <label class="custom-control-label" for="{{variableValue.variable}}NullEndCheck">null</label>
+                                        </div>
+                                    </div>
+
+                                    <select class="browser-default custom-select" formControlName="{{variableValue.variable}}Compare">
+                                        <option value="==" [attr.selected]="variableValue.compareOperator == '==' ? 'selected' : null" i18n="equals">Equals</option>
+                                        <option value="!=" [attr.selected]="variableValue.compareOperator == '!=' ? 'selected' : null" i18n="not equals">Not equals</option>
+                                    </select>
+
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </form>
+            <div class="testgen-actionbar testgen-actionbar-right">
+                <a class="btn btn-md waves-effect waves-light testgen-danger testgen-btn-rounded" [routerLink]="['../']"
+                    *ngIf="!isEdit" i18n="cancel">Cancel</a>
+                <a class="btn btn-md waves-effect waves-light testgen-danger testgen-btn-rounded" [routerLink]="['../../']"
+                    *ngIf="isEdit" i18n="cancel">Cancel</a>
+                <a class="btn btn-md waves-effect waves-light testgen-primary testgen-btn-rounded" (click)="save()" i18n="save testcase">Save testcase</a>
+            </div>
+        </div>
+    </div>
+</div>
+
 <app-loading *ngIf="isLoading"></app-loading>
\ No newline at end of file
-- 
GitLab