diff --git a/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/ManualTasks.java b/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/ManualTasks.java
index c508bd1fbcd5689596486a20b62fda7e71ecb361..ac22bea9a8ef059ec8b51fbfb5ddcfcc66bad3c5 100644
--- a/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/ManualTasks.java
+++ b/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/ManualTasks.java
@@ -1,9 +1,9 @@
-package de.sample.onlineschuhdemo;
-
-public class ManualTasks {
-
-	public static final String WARE_EINSORTIEREN = "Ware_einsortieren";
-	public static final String WARE_AUSPACKEN_NORMAL = "Ware_auspacken_normal";
-	public static final String WARE_AUSPACKEN_LUXUS = "Ware_auspacken_luxus";
-
-}
+package de.sample.onlineschuhdemo;
+
+public class ManualTasks {
+
+	public static final String WARE_EINSORTIEREN = "Ware_einsortieren";
+	public static final String WARE_AUSPACKEN_NORMAL = "Ware_auspacken_normal";
+	public static final String WARE_AUSPACKEN_LUXUS = "Ware_auspacken_luxus";
+
+}
diff --git a/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/Testcollection-old.java b/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/Testcollection-old.java
index fcfc89b210c7ee3e4e861f567464984d341cbaad..94c502e2cd7c99ab20e2216f5b5f17ed0312287d 100644
--- a/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/Testcollection-old.java
+++ b/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/Testcollection-old.java
@@ -13,9 +13,6 @@ 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;
@@ -30,22 +27,6 @@ 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();
@@ -54,1081 +35,5 @@ 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/main/resources/backup/MatchingTestcollectionOld.bpmn-testgen b/OnlineSchuhDemo/src/main/resources/backup/MatchingTestcollectionOld.bpmn-testgen
new file mode 100644
index 0000000000000000000000000000000000000000..573d0905a7227d2d6dcfc94565f5346c053e65dc
--- /dev/null
+++ b/OnlineSchuhDemo/src/main/resources/backup/MatchingTestcollectionOld.bpmn-testgen
@@ -0,0 +1,165 @@
+BPMNDiagram process
+with testpackage "de.sample.onlineschuhdemo" with bpmn "retoure.bpmn" with key "Retoure" with dmn : [ "\\schuh_vernichtung_spende.dmn" ] with embedded : [ "\\forms\\warendaten-erfassen-form.html" ] ;
+
+Loop Loop0
+starts with "Gateway_Einpackung_Fehlerhaft"
+follows by "Gateway_Auspacken"
+ends with "Gateway_Einpackung_Fehlerhaft_Closed"
+has complexity 2 passed : [ 0 , 1 ] ;
+
+FlowElement Retoure_Start : StartEvent with inputVariables : [ kundennummer , erstattung , beschaedigt ] ;
+FlowElement Flow_Start : SequenceFlow ;
+FlowElement Gateway_Parallel_Lager_Neusendung : Gateway ;
+FlowElement Flow_0eh02jo : SequenceFlow ;
+FlowElement Gateway_Beschaedigt : Gateway ;
+FlowElement Flow_unbeschaedigt : SequenceFlow ;
+FlowElement Ware_einsortieren : ManualTask ;
+FlowElement Flow_0a9rzst : SequenceFlow ;
+FlowElement New_Task_1 : ManualTask ;
+FlowElement Flow_New_1 : SequenceFlow ;
+FlowElement Gateway_Beschaedigt_Close : Gateway ;
+FlowElement Flow_1c2tfla : SequenceFlow ;
+FlowElement Flow_1gu0k49 : SequenceFlow ;
+FlowElement Kundendaten_ermitteln : ServiceTask with external : customer ;
+FlowElement Flow_0iibopi : SequenceFlow ;
+FlowElement Gateway_Neusendung : Gateway ;
+FlowElement Flow_Erstattung : SequenceFlow with expression : "#{erstattung}" ;
+FlowElement Finanzdaten_ermitteln : ServiceTask with external : financial with hardcoded inputs : [ serviceIdentifier = "getData" ] ;
+FlowElement Flow_Erstattung_Datenermittlung : SequenceFlow ;
+FlowElement Erstattung : ServiceTask with external : financial with hardcoded inputs : [ serviceIdentifier = "refund" ] ;
+FlowElement Flow_Erstattung_abgeschlossen : SequenceFlow ;
+FlowElement New_Task_2 : ManualTask ;
+FlowElement New_Flow_2 : ManualTask ;
+FlowElement Gateway_Neusendung_Closed : Gateway ;
+FlowElement Flow_0m33odz : SequenceFlow ;
+FlowElement Gateway_Parallel_Lager_Neusendung_Closed : Gateway ;
+FlowElement Flow_Ende : SequenceFlow ;
+FlowElement Retoure_Ende : EndEvent ;
+FlowElement Flow_neusenden : SequenceFlow ;
+FlowElement Manuelle_Pruefung : UserTask ;
+FlowElement Flow_0u77zm0 : SequenceFlow ;
+FlowElement Warennummer_ermitteln : ServiceTask with delegate : "warennummer" ;
+FlowElement Flow_03ubi3l : SequenceFlow ;
+FlowElement Gateway_Einpackung_Fehlerhaft_Closed : Gateway ;
+FlowElement Flow_006t3wo : SequenceFlow ;
+FlowElement Paket_packen : UserTask with inputVariables : [ pakettyp ] ;
+FlowElement Flow_0bhr7g8 : SequenceFlow ;
+FlowElement Paket_pruefen : UserTask with inputVariables : [ paket ] ;
+FlowElement Flow_1n6o3h6 : SequenceFlow ;
+FlowElement Gateway_Einpackung_Fehlerhaft : Gateway ;
+FlowElement Flow_paket_okay : SequenceFlow ;
+FlowElement Paket_senden : UserTask ;
+FlowElement Flow_0u4n4gn : SequenceFlow ;
+FlowElement Flow_fehlerhaft_eingepackt : SequenceFlow with expression : "#{paket==false}" ;
+FlowElement Gateway_Auspacken : Gateway ;
+FlowElement Flow_normal_auspacken : SequenceFlow with expression : "#{pakettyp==\"Normalverpackung\"}" ;
+FlowElement Ware_auspacken_normal : ManualTask ;
+FlowElement Flow_0d8lhxo : SequenceFlow ;
+FlowElement Gateway_14evkap : Gateway ;
+FlowElement Flow_1bnro90 : SequenceFlow ;
+FlowElement Flow_luxus_auspacken : SequenceFlow with expression : "#{pakettyp==\"Luxusverpackung\"}" ;
+FlowElement Ware_auspacken_luxus : ManualTask ;
+FlowElement Flow_04tyvq1 : SequenceFlow ;
+FlowElement Flow_beschaedigt : SequenceFlow with expression : "#{beschaedigt == true}" ;
+FlowElement Warendaten_erfassen : UserTask with inputVariables : [ marke , preis ] ;
+FlowElement Flow_01lf19r : SequenceFlow ;
+FlowElement Vernichtung_ermitteln : BusinessRuleTask ;
+FlowElement Flow_0kgxxke : SequenceFlow ;
+FlowElement Gateway_Vernichtung : Gateway ;
+FlowElement Flow_vernichten : SequenceFlow with expression : "#{vernichten == true}" ;
+FlowElement Ware_vernichten : UserTask ;
+FlowElement Flow_0zkq7z5 : SequenceFlow ;
+FlowElement Gateway_Vernichtung_Close : Gateway ;
+FlowElement Flow_14jbtgw : SequenceFlow ;
+FlowElement Flow_spenden : SequenceFlow with expression : "#{vernichten == false}" ;
+FlowElement Ware_spenden : UserTask ;
+FlowElement Flow_0f171gg : SequenceFlow ;
+
+String kundennummer with proposals : [ ] ;
+String marke with proposals : [ "Luxury Foot" , "Simply Shoe" , "Shoe One" ] ;
+String iban with proposals : [ ] ;
+String vorname with proposals : [ ] ;
+String nachname with proposals : [ ] ;
+String pakettyp with proposals : [ "Normalverpackung" , "Luxusverpackung" ] ;
+String emailGesendet with proposals : [ ] ;
+String firstname with proposals : [ ] ;
+String lastname with proposals : [ ] ;
+String ibanRefund with proposals : [ ] ;
+String confirmationEmailSent with proposals : [ ] ;
+String serviceIdentifier with proposals : [ "getData" , "refund" ] ;
+Integer preis with proposals : [ 350 , 349 , 70 , 71 ] ;
+Boolean erstattung with proposals : [ true , false ] ;
+Boolean paket with proposals : [ true , false ] ;
+Boolean beschaedigt with proposals : [ true , false ] ;
+
+ExternalTopic customer ;
+ExternalTopic financial ;
+
+Flow Flow_0 for process
+with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , New_Task_1 , Flow_New_1 , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
+without elements : [ Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , New_Task_2 , New_Flow_2 , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 , Gateway_Vernichtung_Close , Flow_14jbtgw , Flow_spenden , Ware_spenden , Flow_0f171gg ] ;
+Flow Flow_1 for process
+with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , New_Task_1 , Flow_New_1 , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
+without elements : [ Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , New_Task_2 , New_Flow_2 , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 , Gateway_Vernichtung_Close , Flow_14jbtgw , Flow_spenden , Ware_spenden , Flow_0f171gg ] ;
+Flow Flow_2 for process
+with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , New_Task_1 , Flow_New_1 , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Gateway_14evkap , Flow_1bnro90 , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
+without elements : [ Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , New_Task_2 , New_Flow_2 , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 , Gateway_Vernichtung_Close , Flow_14jbtgw , Flow_spenden , Ware_spenden , Flow_0f171gg ] ;
+Flow Flow_3 for process
+with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , New_Task_1 , Flow_New_1 , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , New_Task_2 , New_Flow_2 , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
+without elements : [ Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 , Gateway_Vernichtung_Close , Flow_14jbtgw , Flow_spenden , Ware_spenden , Flow_0f171gg ] ;
+Flow Flow_4 for process
+with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , New_Task_2 , New_Flow_2 , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
+without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , New_Task_1 , Flow_New_1 , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_spenden , Ware_spenden , Flow_0f171gg ] ;
+Flow Flow_5 for process
+with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
+without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , New_Task_1 , Flow_New_1 , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , New_Task_2 , New_Flow_2 , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_spenden , Ware_spenden , Flow_0f171gg ] ;
+Flow Flow_6 for process
+with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
+without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , New_Task_1 , Flow_New_1 , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , New_Task_2 , New_Flow_2 , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_spenden , Ware_spenden , Flow_0f171gg ] ;
+Flow Flow_7 for process
+with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Gateway_14evkap , Flow_1bnro90 , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
+without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , New_Task_1 , Flow_New_1 , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , New_Task_2 , New_Flow_2 , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Flow_spenden , Ware_spenden , Flow_0f171gg ] ;
+Flow Flow_8 for process
+with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_spenden , Ware_spenden , Flow_0f171gg , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
+without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , New_Task_1 , Flow_New_1 , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , New_Task_2 , New_Flow_2 , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 ] ;
+Flow Flow_9 for process
+with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_spenden , Ware_spenden , Flow_0f171gg , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , New_Task_2 , New_Flow_2 , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
+without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , New_Task_1 , Flow_New_1 , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 ] ;
+Flow Flow_10 for process
+with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_spenden , Ware_spenden , Flow_0f171gg , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Gateway_14evkap , Flow_1bnro90 , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
+without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , New_Task_1 , Flow_New_1 , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , New_Task_2 , New_Flow_2 , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 ] ;
+Flow Flow_11 for process
+with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_spenden , Ware_spenden , Flow_0f171gg , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
+without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , New_Task_1 , Flow_New_1 , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , New_Task_2 , New_Flow_2 , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 ] ;
+
+DelegateMock Warennummer_ermitteln for Warennummer_ermitteln with delegate "de.sample.onlineschuhdemo.externalaccess.WarennummerErmittelnDelegate" with manual "de.sample.onlineschuhdemo.externalaccess.LagerService" by setter "setLagerService" ;
+
+ExternalServiceMock customerProvider for topic customer
+with rule : if [ kundennummer == "C-123A456" ] set [ firstname = "Max" , lastname = "Mustermann" ] ,
+with rule : if [ kundennummer == "C-987A654" ] set [ firstname = "Erika" , lastname = "Mustermann" ] ;
+
+ExternalServiceMock financialMock for topic financial
+with rule : if [ serviceIdentifier == "getData" , kundennummer == "C-123A456" ] set [ ibanRefund = "DE12345678900000123456" ] ,
+with rule : if [ serviceIdentifier == "getData" , kundennummer == "C-987A654" ] set [ ibanRefund = "DE12345678900000987654" ] ,
+with rule : if [ serviceIdentifier == "refund" , iban == "DE12345678900000123456" ] set [ confirmationEmailSent = "Nein" ] ,
+with rule : if [ serviceIdentifier == "refund" ] set [ confirmationEmailSent = "Ja" ] ;
+
+Test normalverpackungAuspacken for Flow_2
+with variables for Retoure_Start : [ kundennummer = "C-123A456" , erstattung = false , beschaedigt = false ] ,
+with variables for Paket_packen : [ pakettyp = "Normalverpackung" ] ,
+with variables for Paket_pruefen : [ paket = false ] ,
+with variables for Paket_packen : [ pakettyp = "Luxusverpackung" ] ,
+with variables for Paket_pruefen : [ paket = true ]
+with check : [ kundennummer == "C-123A456" , vorname == "Max" , nachname == "Mustermann" , erstattung == false , beschaedigt == false ]
+with mocks : [ Warennummer_ermitteln , customerProvider ] ;
+
+Test vernichtenErstattung for Flow_4
+with variables for Retoure_Start : [ kundennummer = "C-123A456" , erstattung = true , beschaedigt = true ] ,
+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 ] ;
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 73d060453e51cca8edfe8aa4454936aa79b71e78..65994425d9c27d22074eb744bf7875cab7b95d99 100644
--- a/OnlineSchuhDemo/src/test/java/de/sample/onlineschuhdemo/Testcollection.bpmn-testgen
+++ b/OnlineSchuhDemo/src/test/java/de/sample/onlineschuhdemo/Testcollection.bpmn-testgen
@@ -1,149 +1,174 @@
-BPMNDiagram process
-with testpackage "de.sample.onlineschuhdemo" with bpmn "retoure.bpmn" with key "Retoure" with dmn : [ "\\schuh_vernichtung_spende.dmn" ] with embedded : [ "\\forms\\warendaten-erfassen-form.html" ] ;
-
-Loop Loop0
-starts with "Gateway_Einpackung_Fehlerhaft"
-follows by "Gateway_Auspacken"
-ends with "Gateway_Einpackung_Fehlerhaft_Closed"
-has complexity 2 passed : [ 0 , 1 ] ;
-
-FlowElement Retoure_Start : StartEvent with inputVariables : [ kundennummer , erstattung , beschaedigt ] ;
-FlowElement Flow_Start : SequenceFlow ;
-FlowElement Gateway_Parallel_Lager_Neusendung : Gateway ;
-FlowElement Flow_0eh02jo : SequenceFlow ;
-FlowElement Gateway_Beschaedigt : Gateway ;
-FlowElement Flow_unbeschaedigt : SequenceFlow ;
-FlowElement Ware_einsortieren : ManualTask ;
-FlowElement Flow_0a9rzst : SequenceFlow ;
-FlowElement Gateway_Beschaedigt_Close : Gateway ;
-FlowElement Flow_1c2tfla : SequenceFlow ;
-FlowElement Flow_1gu0k49 : SequenceFlow ;
-FlowElement Kundendaten_ermitteln : ServiceTask with external : customer ;
-FlowElement Flow_0iibopi : SequenceFlow ;
-FlowElement Gateway_Neusendung : Gateway ;
-FlowElement Flow_Erstattung : SequenceFlow with expression : "#{erstattung}" ;
-FlowElement Finanzdaten_ermitteln : ServiceTask with external : financial with hardcoded inputs : [ serviceIdentifier = "getData" ] ;
-FlowElement Flow_Erstattung_Datenermittlung : SequenceFlow ;
-FlowElement Erstattung : ServiceTask with external : financial with hardcoded inputs : [ serviceIdentifier = "refund" ] ;
-FlowElement Flow_Erstattung_abgeschlossen : SequenceFlow ;
-FlowElement Gateway_Neusendung_Closed : Gateway ;
-FlowElement Flow_0m33odz : SequenceFlow ;
-FlowElement Gateway_Parallel_Lager_Neusendung_Closed : Gateway ;
-FlowElement Flow_Ende : SequenceFlow ;
-FlowElement Retoure_Ende : EndEvent ;
-FlowElement Flow_neusenden : SequenceFlow ;
-FlowElement Manuelle_Pruefung : UserTask ;
-FlowElement Flow_0u77zm0 : SequenceFlow ;
-FlowElement Warennummer_ermitteln : ServiceTask with delegate : "warennummer" ;
-FlowElement Flow_03ubi3l : SequenceFlow ;
-FlowElement Gateway_Einpackung_Fehlerhaft_Closed : Gateway ;
-FlowElement Flow_006t3wo : SequenceFlow ;
-FlowElement Paket_packen : UserTask with inputVariables : [ pakettyp ] ;
-FlowElement Flow_0bhr7g8 : SequenceFlow ;
-FlowElement Paket_pruefen : UserTask with inputVariables : [ paket ] ;
-FlowElement Flow_1n6o3h6 : SequenceFlow ;
-FlowElement Gateway_Einpackung_Fehlerhaft : Gateway ;
-FlowElement Flow_paket_okay : SequenceFlow ;
-FlowElement Paket_senden : UserTask ;
-FlowElement Flow_0u4n4gn : SequenceFlow ;
-FlowElement Flow_fehlerhaft_eingepackt : SequenceFlow with expression : "#{paket==false}" ;
-FlowElement Gateway_Auspacken : Gateway ;
-FlowElement Flow_normal_auspacken : SequenceFlow with expression : "#{pakettyp==\"Normalverpackung\"}" ;
-FlowElement Ware_auspacken_normal : ManualTask ;
-FlowElement Flow_0d8lhxo : SequenceFlow ;
-FlowElement Gateway_14evkap : Gateway ;
-FlowElement Flow_1bnro90 : SequenceFlow ;
-FlowElement Flow_luxus_auspacken : SequenceFlow with expression : "#{pakettyp==\"Luxusverpackung\"}" ;
-FlowElement Ware_auspacken_luxus : ManualTask ;
-FlowElement Flow_04tyvq1 : SequenceFlow ;
-FlowElement Flow_beschaedigt : SequenceFlow with expression : "#{beschaedigt == true}" ;
-FlowElement Warendaten_erfassen : UserTask with inputVariables : [ marke , preis ] ;
-FlowElement Flow_01lf19r : SequenceFlow ;
-FlowElement Vernichtung_ermitteln : BusinessRuleTask ;
-FlowElement Flow_0kgxxke : SequenceFlow ;
-FlowElement Gateway_Vernichtung : Gateway ;
-FlowElement Flow_vernichten : SequenceFlow with expression : "#{vernichten == true}" ;
-FlowElement Ware_vernichten : UserTask ;
-FlowElement Flow_0zkq7z5 : SequenceFlow ;
-FlowElement Gateway_Vernichtung_Close : Gateway ;
-FlowElement Flow_14jbtgw : SequenceFlow ;
-FlowElement Flow_spenden : SequenceFlow with expression : "#{vernichten == false}" ;
-FlowElement Ware_spenden : UserTask ;
-FlowElement Flow_0f171gg : SequenceFlow ;
-
-String kundennummer with proposals : [ ] ;
-String marke with proposals : [ "Luxury Foot" , "Simply Shoe" , "Shoe One" ] ;
-String iban with proposals : [ ] ;
-String vorname with proposals : [ ] ;
-String nachname with proposals : [ ] ;
-String pakettyp with proposals : [ "Normalverpackung" , "Luxusverpackung" ] ;
-String emailGesendet with proposals : [ ] ;
-String firstname with proposals : [ ] ;
-String lastname with proposals : [ ] ;
-String ibanRefund with proposals : [ ] ;
-String confirmationEmailSent with proposals : [ ] ;
-String serviceIdentifier with proposals : [ "getData" , "refund" ] ;
-Integer preis with proposals : [ 350 , 349 , 70 , 71 ] ;
-Boolean erstattung with proposals : [ true , false ] ;
-Boolean paket with proposals : [ true , false ] ;
-Boolean beschaedigt with proposals : [ true , false ] ;
-
-ExternalTopic customer ;
-ExternalTopic financial ;
-
-Flow Flow_0 for process
-with elements : [ Flow_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
-without elements : [ Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 , Gateway_Vernichtung_Close , Flow_14jbtgw , Flow_spenden , Ware_spenden , Flow_0f171gg ] ;
-Flow Flow_1 for process
-with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
-without elements : [ Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 , Gateway_Vernichtung_Close , Flow_14jbtgw , Flow_spenden , Ware_spenden , Flow_0f171gg ] ;
-Flow Flow_2 for process
-with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
-without elements : [ Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 , Gateway_Vernichtung_Close , Flow_14jbtgw , Flow_spenden , Ware_spenden , Flow_0f171gg ] ;
-Flow Flow_3 for process
-with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Gateway_14evkap , Flow_1bnro90 , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
-without elements : [ Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 , Gateway_Vernichtung_Close , Flow_14jbtgw , Flow_spenden , Ware_spenden , Flow_0f171gg ] ;
-Flow Flow_4 for process
-with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
-without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_spenden , Ware_spenden , Flow_0f171gg ] ;
-Flow Flow_5 for process
-with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
-without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_spenden , Ware_spenden , Flow_0f171gg ] ;
-Flow Flow_6 for process
-with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
-without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_spenden , Ware_spenden , Flow_0f171gg ] ;
-Flow Flow_7 for process
-with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Gateway_14evkap , Flow_1bnro90 , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
-without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Flow_spenden , Ware_spenden , Flow_0f171gg ] ;
-Flow Flow_8 for process
-with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_spenden , Ware_spenden , Flow_0f171gg , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
-without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 ] ;
-Flow Flow_9 for process
-with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_spenden , Ware_spenden , Flow_0f171gg , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
-without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 ] ;
-Flow Flow_10 for process
-with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_spenden , Ware_spenden , Flow_0f171gg , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
-without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 ] ;
-Flow Flow_11 for process
-with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_spenden , Ware_spenden , Flow_0f171gg , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Gateway_14evkap , Flow_1bnro90 , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
-without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 ] ;
-
-DelegateMock Warennummer_ermitteln for Warennummer_ermitteln with delegate "de.sample.onlineschuhdemo.externalaccess.WarennummerErmittelnDelegate" with manual "de.sample.onlineschuhdemo.externalaccess.LagerService" by setter "setLagerService" ;
-
-ExternalServiceMock customerProvider for topic customer
-with rule : if [ kundennummer == "C-123A456" ] set [ firstname = "Max" , lastname = "Mustermann" ] ,
-with rule : if [ kundennummer == "C-987A654" ] set [ firstname = "Erika" , lastname = "Mustermann" ] ;
-
-ExternalServiceMock financialMock for topic financial
-with rule : if [ serviceIdentifier == "getData" , kundennummer == "C-123A456" ] set [ ibanRefund = "DE12345678900000123456" ] ,
-with rule : if [ serviceIdentifier == "getData" , kundennummer == "C-987A654" ] set [ ibanRefund = "DE12345678900000987654" ] ,
-with rule : if [ serviceIdentifier == "refund" , iban == "DE12345678900000123456" ] set [ confirmationEmailSent = "Nein" ] ,
-with rule : if [ serviceIdentifier == "refund" ] set [ confirmationEmailSent = "Ja" ] ;
-
-Test TestHenning for Flow_0
-with priority 104
-with check : [ kundennummer == "123123123312" ] with mocks : [ financialMock , customerProvider ] ;
-
-Test Test2 for Flow_1
-with priority 2
-with variables for Retoure_Start : [ kundennummer = "123132" ] with mocks : [ Warennummer_ermitteln , customerProvider ] ;
+BPMNDiagram process
+with testpackage "de.sample.onlineschuhdemo" with bpmn "retoure.bpmn" with key "Retoure" with dmn : [ "\\schuh_vernichtung_spende.dmn" ] with embedded : [ "\\forms\\warendaten-erfassen-form.html" ] ;
+
+Loop Loop0
+starts with "Gateway_Einpackung_Fehlerhaft"
+follows by "Gateway_Auspacken"
+ends with "Gateway_Einpackung_Fehlerhaft_Closed"
+has complexity 2 passed : [ 0 , 1 ] ;
+
+FlowElement Retoure_Start : StartEvent with inputVariables : [ kundennummer , erstattung , beschaedigt ] ;
+FlowElement Flow_Start : SequenceFlow ;
+FlowElement Gateway_Parallel_Lager_Neusendung : Gateway ;
+FlowElement Flow_0eh02jo : SequenceFlow ;
+FlowElement Gateway_Beschaedigt : Gateway ;
+FlowElement Flow_unbeschaedigt : SequenceFlow ;
+FlowElement Ware_einsortieren : ManualTask ;
+FlowElement Flow_0a9rzst : SequenceFlow ;
+FlowElement Gateway_Beschaedigt_Close : Gateway ;
+FlowElement Flow_1c2tfla : SequenceFlow ;
+FlowElement Flow_1gu0k49 : SequenceFlow ;
+FlowElement Kundendaten_ermitteln : ServiceTask with external : customer ;
+FlowElement Flow_0iibopi : SequenceFlow ;
+FlowElement Gateway_Neusendung : Gateway ;
+FlowElement Flow_Erstattung : SequenceFlow with expression : "#{erstattung}" ;
+FlowElement Finanzdaten_ermitteln : ServiceTask with external : financial with hardcoded inputs : [ serviceIdentifier = "getData" ] ;
+FlowElement Flow_Erstattung_Datenermittlung : SequenceFlow ;
+FlowElement Erstattung : ServiceTask with external : financial with hardcoded inputs : [ serviceIdentifier = "refund" ] ;
+FlowElement Flow_Erstattung_abgeschlossen : SequenceFlow ;
+FlowElement Gateway_Neusendung_Closed : Gateway ;
+FlowElement Flow_0m33odz : SequenceFlow ;
+FlowElement Gateway_Parallel_Lager_Neusendung_Closed : Gateway ;
+FlowElement Flow_Ende : SequenceFlow ;
+FlowElement Retoure_Ende : EndEvent ;
+FlowElement Flow_neusenden : SequenceFlow ;
+FlowElement Manuelle_Pruefung : UserTask ;
+FlowElement Flow_0u77zm0 : SequenceFlow ;
+FlowElement Warennummer_ermitteln : ServiceTask with delegate : "warennummer" ;
+FlowElement Flow_03ubi3l : SequenceFlow ;
+FlowElement Gateway_Einpackung_Fehlerhaft_Closed : Gateway ;
+FlowElement Flow_006t3wo : SequenceFlow ;
+FlowElement Paket_packen : UserTask with inputVariables : [ pakettyp ] ;
+FlowElement Flow_0bhr7g8 : SequenceFlow ;
+FlowElement Paket_pruefen : UserTask with inputVariables : [ paket ] ;
+FlowElement Flow_1n6o3h6 : SequenceFlow ;
+FlowElement Gateway_Einpackung_Fehlerhaft : Gateway ;
+FlowElement Flow_paket_okay : SequenceFlow ;
+FlowElement Paket_senden : UserTask ;
+FlowElement Flow_0u4n4gn : SequenceFlow ;
+FlowElement Flow_fehlerhaft_eingepackt : SequenceFlow with expression : "#{paket==false}" ;
+FlowElement Gateway_Auspacken : Gateway ;
+FlowElement Flow_normal_auspacken : SequenceFlow with expression : "#{pakettyp==\"Normalverpackung\"}" ;
+FlowElement Ware_auspacken_normal : ManualTask ;
+FlowElement Flow_0d8lhxo : SequenceFlow ;
+FlowElement Gateway_14evkap : Gateway ;
+FlowElement Flow_1bnro90 : SequenceFlow ;
+FlowElement Flow_luxus_auspacken : SequenceFlow with expression : "#{pakettyp==\"Luxusverpackung\"}" ;
+FlowElement Ware_auspacken_luxus : ManualTask ;
+FlowElement Flow_04tyvq1 : SequenceFlow ;
+FlowElement Flow_beschaedigt : SequenceFlow with expression : "#{beschaedigt == true}" ;
+FlowElement Warendaten_erfassen : UserTask with inputVariables : [ marke , preis ] ;
+FlowElement Flow_01lf19r : SequenceFlow ;
+FlowElement Vernichtung_ermitteln : BusinessRuleTask ;
+FlowElement Flow_0kgxxke : SequenceFlow ;
+FlowElement Gateway_Vernichtung : Gateway ;
+FlowElement Flow_vernichten : SequenceFlow with expression : "#{vernichten == true}" ;
+FlowElement Ware_vernichten : UserTask ;
+FlowElement Flow_0zkq7z5 : SequenceFlow ;
+FlowElement Gateway_Vernichtung_Close : Gateway ;
+FlowElement Flow_14jbtgw : SequenceFlow ;
+FlowElement Flow_spenden : SequenceFlow with expression : "#{vernichten == false}" ;
+FlowElement Ware_spenden : UserTask ;
+FlowElement Flow_0f171gg : SequenceFlow ;
+
+String kundennummer with proposals : [ ] ;
+String marke with proposals : [ "Luxury Foot" , "Simply Shoe" , "Shoe One" ] ;
+String iban with proposals : [ ] ;
+String vorname with proposals : [ ] ;
+String nachname with proposals : [ ] ;
+String pakettyp with proposals : [ "Normalverpackung" , "Luxusverpackung" ] ;
+String emailGesendet with proposals : [ ] ;
+String firstname with proposals : [ ] ;
+String lastname with proposals : [ ] ;
+String ibanRefund with proposals : [ ] ;
+String confirmationEmailSent with proposals : [ ] ;
+String serviceIdentifier with proposals : [ "getData" , "refund" ] ;
+Integer preis with proposals : [ 350 , 349 , 70 , 71 ] ;
+Boolean erstattung with proposals : [ true , false ] ;
+Boolean paket with proposals : [ true , false ] ;
+Boolean beschaedigt with proposals : [ true , false ] ;
+
+ExternalTopic customer ;
+ExternalTopic financial ;
+
+Flow Flow_0 for process
+with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
+without elements : [ Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 , Gateway_Vernichtung_Close , Flow_14jbtgw , Flow_spenden , Ware_spenden , Flow_0f171gg ] ;
+Flow Flow_1 for process
+with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
+without elements : [ Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 , Gateway_Vernichtung_Close , Flow_14jbtgw , Flow_spenden , Ware_spenden , Flow_0f171gg ] ;
+Flow Flow_2 for process
+with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
+without elements : [ Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 , Gateway_Vernichtung_Close , Flow_14jbtgw , Flow_spenden , Ware_spenden , Flow_0f171gg ] ;
+Flow Flow_3 for process
+with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Gateway_14evkap , Flow_1bnro90 , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
+without elements : [ Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 , Gateway_Vernichtung_Close , Flow_14jbtgw , Flow_spenden , Ware_spenden , Flow_0f171gg ] ;
+Flow Flow_4 for process
+with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
+without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_spenden , Ware_spenden , Flow_0f171gg ] ;
+Flow Flow_5 for process
+with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
+without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_spenden , Ware_spenden , Flow_0f171gg ] ;
+Flow Flow_6 for process
+with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
+without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_spenden , Ware_spenden , Flow_0f171gg ] ;
+Flow Flow_7 for process
+with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Gateway_14evkap , Flow_1bnro90 , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
+without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Flow_spenden , Ware_spenden , Flow_0f171gg ] ;
+Flow Flow_8 for process
+with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_spenden , Ware_spenden , Flow_0f171gg , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
+without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 ] ;
+Flow Flow_9 for process
+with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_spenden , Ware_spenden , Flow_0f171gg , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
+without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 ] ;
+Flow Flow_10 for process
+with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_spenden , Ware_spenden , Flow_0f171gg , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
+without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 ] ;
+Flow Flow_11 for process
+with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_spenden , Ware_spenden , Flow_0f171gg , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Gateway_14evkap , Flow_1bnro90 , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
+without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 ] ;
+Flow Flow_12 for process
+with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_spenden , Ware_spenden , Flow_0f171gg , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
+without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , New_Task_1 , Flow_New_1 , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , New_Task_2 , New_Flow_2 , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 ] ;
+Flow Flow_13 for process
+with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_spenden , Ware_spenden , Flow_0f171gg , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Gateway_14evkap , Flow_1bnro90 , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
+without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , New_Task_1 , Flow_New_1 , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , New_Task_2 , New_Flow_2 , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 ] ;
+Flow Flow_14 for process
+with elements : [ Retoure_Start , Flow_Start , Gateway_Parallel_Lager_Neusendung , Flow_0eh02jo , Gateway_Beschaedigt , Flow_beschaedigt , Warendaten_erfassen , Flow_01lf19r , Vernichtung_ermitteln , Flow_0kgxxke , Gateway_Vernichtung , Flow_vernichten , Ware_vernichten , Flow_0zkq7z5 , Gateway_Vernichtung_Close , Flow_14jbtgw , Gateway_Beschaedigt_Close , Flow_1c2tfla , Flow_1gu0k49 , Kundendaten_ermitteln , Flow_0iibopi , Gateway_Neusendung , Flow_neusenden , Manuelle_Pruefung , Flow_0u77zm0 , Warennummer_ermitteln , Flow_03ubi3l , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_fehlerhaft_eingepackt , Gateway_Auspacken , Flow_luxus_auspacken , Ware_auspacken_luxus , Flow_04tyvq1 , Gateway_14evkap , Flow_1bnro90 , Gateway_Einpackung_Fehlerhaft_Closed , Flow_006t3wo , Paket_packen , Flow_0bhr7g8 , Paket_pruefen , Flow_1n6o3h6 , Gateway_Einpackung_Fehlerhaft , Flow_paket_okay , Paket_senden , Flow_0u4n4gn , Gateway_Neusendung_Closed , Flow_0m33odz , Gateway_Parallel_Lager_Neusendung_Closed , Flow_Ende , Retoure_Ende ]
+without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , New_Task_1 , Flow_New_1 , Flow_Erstattung , Finanzdaten_ermitteln , Flow_Erstattung_Datenermittlung , Erstattung , Flow_Erstattung_abgeschlossen , New_Task_2 , New_Flow_2 , Flow_normal_auspacken , Ware_auspacken_normal , Flow_0d8lhxo , Flow_spenden , Ware_spenden , Flow_0f171gg ] ;
+
+DelegateMock Warennummer_ermitteln for Warennummer_ermitteln with delegate "de.sample.onlineschuhdemo.externalaccess.WarennummerErmittelnDelegate" with manual "de.sample.onlineschuhdemo.externalaccess.LagerService" by setter "setLagerService" ;
+
+ExternalServiceMock customerProvider for topic customer
+with rule : if [ kundennummer == "C-123A456" ] set [ firstname = "Max" , lastname = "Mustermann" ] ,
+with rule : if [ kundennummer == "C-987A654" ] set [ firstname = "Erika" , lastname = "Mustermann" ] ;
+
+ExternalServiceMock financialMock for topic financial
+with rule : if [ serviceIdentifier == "getData" , kundennummer == "C-123A456" ] set [ ibanRefund = "DE12345678900000123456" ] ,
+with rule : if [ serviceIdentifier == "getData" , kundennummer == "C-987A654" ] set [ ibanRefund = "DE12345678900000987654" ] ,
+with rule : if [ serviceIdentifier == "refund" , iban == "DE12345678900000123456" ] set [ confirmationEmailSent = "Nein" ] ,
+with rule : if [ serviceIdentifier == "refund" ] set [ confirmationEmailSent = "Ja" ] ;
+
+Test normalverpackungAuspacken for Flow_2
+with variables for Retoure_Start : [ kundennummer = "C-123A456" , erstattung = false , beschaedigt = false ] ,
+with variables for Paket_packen : [ pakettyp = "Normalverpackung" ] ,
+with variables for Paket_pruefen : [ paket = false ] ,
+with variables for Paket_packen : [ pakettyp = "Luxusverpackung" ] ,
+with variables for Paket_pruefen : [ paket = true ]
+with check : [ kundennummer == "C-123A456" , vorname == "Max" , nachname == "Mustermann" , erstattung == false , beschaedigt == false ]
+with mocks : [ Warennummer_ermitteln , customerProvider ] ;
+
+Test vernichtenErstattung for Flow_4
+with variables for Retoure_Start : [ kundennummer = "C-123A456" , erstattung = true , beschaedigt = true ] ,
+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 ] ;
diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/migration/FlowChangeWrapper.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/migration/FlowChangeWrapper.java
index 43f943a5600510924a3ae4bcd34980c30865f714..49ec4494b987f3686213daa7b6c04ec4392e0115 100644
--- a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/migration/FlowChangeWrapper.java
+++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/migration/FlowChangeWrapper.java
@@ -87,9 +87,9 @@ public class FlowChangeWrapper {
 		dto.setFlowElement(flowElementDTO);
 		
 		MigrationResultDTO migrationResultDTO = new MigrationResultDTO();
-		migrationResultDTO.setPriority(this.getMigrationResult().getPriority());
 		
 		migrationResultDTO.setPriority(this.getMigrationResult().getPriority());
+		
 		migrationResultDTO.setStatus(this.getMigrationResult().getStatus().name());
 		
 		dto.setMigrationResult(migrationResultDTO);
diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/migration/MigrationService.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/migration/MigrationService.java
index 70a08eb15dfb97e85900d48314f111b932019775..aea5bf6112604eeb16715674ed1e0287ad7bd20a 100644
--- a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/migration/MigrationService.java
+++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/migration/MigrationService.java
@@ -9,9 +9,13 @@ import javax.annotation.PostConstruct;
 
 import org.eclipse.emf.common.util.BasicEList;
 import org.eclipse.emf.common.util.EList;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import de.fhmuenster.masterthesis.Testgenerator.rest.dto.MigrationResultWrapperDTO;
+import de.fhmuenster.masterthesis.Testgenerator.rest.service.change.ChangeService;
+import de.fhmuenster.masterthesis.Testgenerator.rest.service.test.TestService;
+import de.fhmuenster.masterthesis.Testgenerator.yaml.MigrationResultStatus;
 import de.fhmuenster.masterthesis.Testgenerator.yaml.MigrationYaml;
 import de.fhmuenster.masterthesis.Testgenerator.yaml.YamlReader;
 import de.fhmuenster.masterthesis.serialization.TestgeneratorDSLSerializer;
@@ -33,6 +37,9 @@ public class MigrationService {
 	
 	private MigrationYaml yaml;
 	
+	@Autowired
+	private ChangeService changeService;
+	
 	public MigrationService() {
 	}
 	
@@ -47,8 +54,6 @@ public class MigrationService {
 		MigrationResultWrapper migrationResultWrapper = new MigrationResultWrapper();
 		List<FlowChangeWrapper> result = new ArrayList<>();
 		
-		//oldDSL.getVariables().get(0).
-		
 		// 1. Schritt: Prüfen, ob in einem Flow neue Elemente hinzugekommen sind
 		List<FlowChangeWrapper> activityAddActionResults = detectActivityAddActions(oldDSL.getFlows(), newDSL.getFlows());
 		transferResultsToCorrespondingCategory(migrationResultWrapper, activityAddActionResults);
@@ -64,10 +69,20 @@ public class MigrationService {
 	
 	private List<FlowChangeWrapper> detectActivityAddActions(List<Flow> oldFlows, List<Flow> newFlows) {
 		List<FlowChangeWrapper> result = new ArrayList<>();
+		
+		//Flow Matching
+		Flow [][] matchingFlows = this.changeService.compareFlows(newFlows, oldFlows);
+		
+		for(int i=0; i < matchingFlows.length; i++) {
+			result.addAll(compareFlowsForAddAction(matchingFlows[i][1], matchingFlows[i][0]));
+		}
+		
 		//Flows miteinander vergleichen
+		/*
 		for(int i=0; i < oldFlows.size(); i++) {
 			result.addAll(compareFlowsForAddAction(oldFlows.get(i), newFlows.get(i)));
 		}
+		*/
 		
 		return result;
 	}
@@ -95,12 +110,22 @@ public class MigrationService {
 		
 		for(FlowElementReference e : addedFlowElements) {
 			if(e.getRef() instanceof ManualTaskFlowElement) {
-				result.add(new FlowChangeWrapper(newFlow, ActionType.ACTIVITY_ADD_MANUAL_TASK,
-						e.getRef(), yaml.getActivity().getAdd().getManualTask()));
+				FlowChangeWrapper fcw = new FlowChangeWrapper(newFlow, ActionType.ACTIVITY_ADD_MANUAL_TASK,
+						e.getRef(), yaml.getActivity().getAdd().getManualTask());
+				if(fcw.getMigrationResult().getPriority() == null) {
+					fcw.getMigrationResult().setPriority(this.loadGlobalPriority(fcw.getMigrationResult().getStatus(), yaml));
+				}
+				
+				result.add(fcw);
 			}
 			if(e.getRef() instanceof UserTaskFlowElement) {
-				result.add(new FlowChangeWrapper(newFlow, ActionType.ACTIVITY_ADD_USER_TASK,
-						e.getRef(), yaml.getActivity().getAdd().getManualTask()));
+				FlowChangeWrapper fcw = new FlowChangeWrapper(newFlow, ActionType.ACTIVITY_ADD_USER_TASK,
+						e.getRef(), yaml.getActivity().getAdd().getUserTask());
+				if(fcw.getMigrationResult().getPriority() == null) {
+					fcw.getMigrationResult().setPriority(this.loadGlobalPriority(fcw.getMigrationResult().getStatus(), yaml));
+				}
+				
+				result.add(fcw);
 			}
 			if(e.getRef() instanceof BusinessRuleTaskFlowElement) {
 				BusinessRuleTaskFlowElement element = (BusinessRuleTaskFlowElement) e.getRef();
@@ -153,4 +178,24 @@ public class MigrationService {
 		
 		return dto;
 	}
+	
+	private Integer loadGlobalPriority(MigrationResultStatus status, MigrationYaml yaml) {
+		Integer globalPriority = 0;
+		switch(status) {
+		case GREEN:
+			globalPriority = yaml.getConfiguration().getGreen();
+			break;
+		case YELLOW:
+			globalPriority = yaml.getConfiguration().getYellow();
+			break;
+		case RED:
+			globalPriority = yaml.getConfiguration().getRed();
+			break;
+		default:
+			globalPriority = yaml.getConfiguration().getGreen();
+			break;
+		}
+		
+		return globalPriority;
+	}
 }
diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/change/ChangeController.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/change/ChangeController.java
index a2959a3aa7ea83f1c3693dc3f47b1e74774e9ef1..847feecf0a5bef497a8e008bf799bd9224ca1f9d 100644
--- a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/change/ChangeController.java
+++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/change/ChangeController.java
@@ -4,8 +4,10 @@ import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileReader;
 import java.io.IOException;
+import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -38,6 +40,8 @@ import de.fhmuenster.masterthesis.serialization.TestgeneratorDSLSerializer;
 import de.fhmuenster.masterthesis.Testgenerator.rest.service.test.TestService;
 import de.fhmuenster.masterthesis.Testgenerator.utils.ProjectDirectoryUtils;
 import de.fhmuenster.masterthesis.serialization.TestgeneratorDSLSerializer;
+import de.fhmuenster.masterthesis.services.TestgeneratorDSLGrammarAccess.FlowElements;
+import de.fhmuenster.masterthesis.testgeneratorDSL.BPMNReference;
 import de.fhmuenster.masterthesis.testgeneratorDSL.Flow;
 import de.fhmuenster.masterthesis.testgeneratorDSL.FlowElement;
 import de.fhmuenster.masterthesis.testgeneratorDSL.FlowElementReference;
@@ -53,59 +57,21 @@ public class ChangeController {
 	@Autowired
 	private FlowService flowService;
 	@Autowired
-	private TestService testService;
-	
+	private ChangeService changeService;
 	@Autowired
 	private MigrationService migrationService;
+	@Autowired
+	private TestService testService;
 	
 	@RequestMapping(path = "/project/{projectId}/match", method = RequestMethod.GET)
-	public String getNewFlows(@PathVariable(required = true) Long projectId) {
+	public void getNewFlows(@PathVariable(required = true) Long projectId) {
 		
-		boolean success = true;
-		List <List<String>> newFlowsElements = new ArrayList<List<String>>();
-		List <List<String>> oldFlowsElements = new ArrayList<List<String>>();
-		
-		//neue Flow ist erste Element, alte Flow zweite
-		List <List<String>> matchingFlows = new ArrayList<List<String>>();
-
-
-//		String[] keywords = { "Flow Flow_", "with elements", "without elements"};
-//		try {
-//            BufferedReader reader = new BufferedReader(new FileReader("C:\\Users\\tillb\\Desktop\\fe_projekt\\fe-pda-testing-tool\\OnlineSchuhDemo\\dsl_matching\\Testcollection1.bpmn-testgen"));
-//            String line = reader.readLine();
-//            while(line !=null)
-//            {
-//               for(int i = 0 ; i<keywords.length;i++){
-//               if(line.startsWith(keywords[i])){
-//                     System.out.println(line);
-//               }
-//               }
-//               line=reader.readLine();
-//            }
-//        } catch (Exception ex) {
-//            System.out.println(ex.getMessage());
-//        }
 		
 		Project projectForId = projectService.getProjectForId(projectId);
 
-		//speichern von neuen Flow Elementen aller Flows
+		//speichern aller neuen Flows
+		List<Flow> newFlows = flowService.getFlows(projectForId.getProjectDirectories());		
 		
-		List<Flow> newFlows = flowService.getFlows(projectForId.getProjectDirectories());
-		List<BPMNFlowDTO> newFlowDtos = MAPPER_FLOW.mapToList(newFlows, BPMNFlowDTO.class);
-		
-		System.out.println("neu:");
-		
-		//for Schleife durchläuft alle Flows
-		for (int i= 0; i<newFlowDtos.size(); i++) {
-			List<String> currentFlow = new ArrayList<String>();
-			currentFlow.add("Flow_"+i);
-			
-			//for Schleife durchläuft alle Flow-Elemente
-			for(FlowElementDTO flowElement : newFlowDtos.get(i).getFlowElements()){
-				currentFlow.add(flowElement.getId());
-			}
-			newFlowsElements.add(currentFlow);
-		}
 
 //		System.out.println("new: " +newFlowsElements);
 		
@@ -115,112 +81,17 @@ public class ChangeController {
 		//für alte Flows
 		String pathOld = "D:\\VSProjects\\fe-pda-testing-tool\\OnlineSchuhDemo\\dsl_matching\\MatchingTestcollectionOld.bpmn-testgen";
 		List<Flow> oldFlows = flowService.getOldFlows(pathOld);
-		List<BPMNFlowDTO> oldFlowDtos = MAPPER_FLOW.mapToList(oldFlows, BPMNFlowDTO.class);
 		
-		//for Schleife durchläuft alle alten Flows
-				for (int i= 0; i<oldFlowDtos.size(); i++) {
-					List<String> currentFlow = new ArrayList<String>();
-					currentFlow.add("Flow_"+i);
-					
-					//for Schleife durchläuft alle Flow-Elemente
-					for(FlowElementDTO flowElement : oldFlowDtos.get(i).getFlowElements()){
-						currentFlow.add(flowElement.getId());
-					}
-					oldFlowsElements.add(currentFlow);
-				}
-//				System.out.println("old :"+ oldFlowsElements);
- 		
-//		System.out.println("alt:");
-//		for(FlowElementReference e : oldFlows.get(0).getInclElements()){
-//			System.out.println(e.getRef().getName());
-//		}
-		
-		matchingFlows = compareFlows(newFlowsElements, oldFlowsElements);
-		System.out.println(matchingFlows);
-		return "false";
-	}
-	
-	private List<List<String>> compareFlows(List<List<String>> newFlowsElements, List<List<String>> oldFlowsElements) {
-		
-		
-		List <Integer> checkedFlowsOld = new ArrayList <Integer>();
-		
-		List <String> checkedElements = new ArrayList <String>();
-		
-		
-		//an Stelle [x][0] ist neuer Flow,  [x][1] alter Flow, [x][2] Gemeinsamkeiten, [x][3] Unterschiede
-		String [][] matchingFlows = new  String [newFlowsElements.size()][4];
-
-
-		int currentNewFlow = 0;
-		
-		for (List newFlow: newFlowsElements) {
-			
-			int currentOldFlow = 0;
-
-
-			for (List oldFlow: oldFlowsElements) {
-				int similarities = 0;
-				int differences = 0;
-				
-				if(checkedFlowsOld.contains(currentOldFlow));
-				
-				else {
-					
-				for (Object newFlowElement: newFlow) {
-					if((newFlowElement.toString().contains("Flow_"+currentNewFlow)&& newFlowElement.toString().length()==6) || checkedElements.contains(newFlowElement.toString())) {}
-					
-					else {
 
-						for (Object oldFlowElement: oldFlow) {
-					
-							if((oldFlowElement.toString().contains("Flow_"+currentOldFlow)&& oldFlowElement.toString().length()==6) || checkedElements.contains(oldFlowElement.toString())) {}
-							
-							else {
-								if(newFlowElement.equals(oldFlowElement)) {
-									similarities++;
-									checkedElements.add(newFlowElement.toString());
-									
-								}
-						
-							}
-						}
-					}
-				}  
-			}
-				//berechnen der Elemente, die aus dem alten und neuen Flow nicht zueinander gepasst haben
-				differences = oldFlow.size()-similarities + newFlow.size()-similarities;
-				
-//				System.out.println("Neuer Flow: "+ currentNewFlow+ " ; alter Flow: "+currentOldFlow+" ; similarities: "+similarities + " ; difference: "+ differences);
-				
-				// falls aktuell übprüfte Flow alt und neu Kombination die meisten Gemeinsamkeiten haben oder noch nichts in matchingFlows gespeichert wurde
-				if(matchingFlows[currentNewFlow][2]==null || Integer.parseInt(matchingFlows[currentNewFlow][2])<similarities ||  
-						(Integer.parseInt(matchingFlows[currentNewFlow][2])==similarities && Integer.parseInt(matchingFlows[currentNewFlow][3])> differences)) {
-			
-//						System.out.println(currentNewFlow +" "+ currentOldFlow +" "+ similarities+ " "+ differences);
-				
-						matchingFlows[currentNewFlow][0] = "Flow_"+currentNewFlow;
-						matchingFlows[currentNewFlow][1] = "Flow_"+currentOldFlow;
-						matchingFlows[currentNewFlow][2] = Integer.toString(similarities);
-						matchingFlows[currentNewFlow][3] = Integer.toString(differences);
-//						System.out.println("checked: "+checkedElements + " "+ checkedElements.size());
-
-				}
-				checkedElements = new ArrayList <String>();
-				
-				currentOldFlow++;
-
-			}
-			
-			currentNewFlow++;
-		}			
-		
-		for (int i=0; i<newFlowsElements.size();i++) {
-			System.out.println(matchingFlows[i][0]+"   "+matchingFlows[i][1]+"   "+matchingFlows[i][2]+"   "+matchingFlows[i][3]);
-			
+		Flow [][] matchingFlows = changeService.compareFlows(newFlows, oldFlows);
+//		for (int i=0; i<newFlows.size();i++) {
+//			System.out.println(matchingFlows[i][0]+"   "+matchingFlows[i][1]);
+//			
+//		}	
 		}
-		return null;
-	}
+
+	
+	
 
 	
 	@RequestMapping(path = "/project/{projectId}/migration/changes", method = RequestMethod.GET)
@@ -230,10 +101,33 @@ public class ChangeController {
 		Project project = projectService.getProjectForId(projectId);
 		
 		MigrationResultWrapperDTO migrationResultWrapperDTO = new MigrationResultWrapperDTO();
-		//Alte und neue DSL einlesen
+		
+		//Alte DSL kopieren und neu generieren
 		Path testFilePath = ProjectDirectoryUtils.getTestspecificationPath(project.getProjectDirectories());
+		Path source = Paths.get(testFilePath.toString());
+		Path target = Paths.get(project.getProjectDirectories().getProjectRootPath().toString(),
+				project.getProjectDirectories().getModelPath(), this.projectService.getBackupFolderName(),
+				"Testcollection.bpmn-testgen");
+		
+		try {
+			Files.move(source,  target, StandardCopyOption.REPLACE_EXISTING);
+		}
+		catch(Exception e) {
+			
+		}
+		
+		
+		
+		//Path testFilePath = ProjectDirectoryUtils.getTestspecificationPath(project.getProjectDirectories());
 		Path newDSLFile = Paths.get(testFilePath.toString());
-		Path oldDSLFile = Paths.get(project.getProjectDirectories().resolveTestPath(), "Testcollection-old.bpmn-testgen");
+		//Path oldDSLFile = Paths.get(project.getProjectDirectories().resolveTestPath(), "Testcollection-old.bpmn-testgen");
+		Path oldDSLFile = Paths.get(project.getProjectDirectories().getProjectRootPath().toString(),
+				project.getProjectDirectories().getModelPath(), this.projectService.getBackupFolderName(),
+				"Testcollection.bpmn-testgen");
+		
+		testService.initLoops(project);
+		testService.initTestcollection(project);
+		
 		try {
 			TestgeneratorDSLSerializer oldDSL = new TestgeneratorDSLSerializer(oldDSLFile.toString());
 			TestgeneratorDSLSerializer newDSL = new TestgeneratorDSLSerializer(newDSLFile.toString());
diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/change/ChangeService.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/change/ChangeService.java
new file mode 100644
index 0000000000000000000000000000000000000000..170752c802887417e3927ef05a0945644383f21a
--- /dev/null
+++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/change/ChangeService.java
@@ -0,0 +1,124 @@
+package de.fhmuenster.masterthesis.Testgenerator.rest.service.change;
+
+import java.io.IOException;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.eclipse.emf.common.util.EList;
+import org.springframework.stereotype.Service;
+
+import de.fhmuenster.masterthesis.Testgenerator.rest.service.project.ProjectDirectories;
+import de.fhmuenster.masterthesis.Testgenerator.rest.service.test.FlowNotFoundException;
+import de.fhmuenster.masterthesis.Testgenerator.utils.ProjectDirectoryUtils;
+import de.fhmuenster.masterthesis.serialization.TestgeneratorDSLObjectCreator;
+import de.fhmuenster.masterthesis.serialization.TestgeneratorDSLSerializer;
+import de.fhmuenster.masterthesis.testgeneratorDSL.Flow;
+import de.fhmuenster.masterthesis.testgeneratorDSL.FlowElementReference;
+import de.fhmuenster.masterthesis.testgeneratorDSL.Loop;
+import de.fhmuenster.masterthesis.testgeneratorDSL.ServiceTaskFlowElement;
+
+@Service
+public class ChangeService {
+
+	public ChangeService() {
+	}
+
+public Flow[][] compareFlows(List<Flow> newFlows, List<Flow> oldFlows) {
+		
+		//hier werden die Flows gespeichert, die zurückgegeben werden. [x][0] -> Flow neu, [x][1] -> passender Flow alt
+		Flow [][] matchingFlows = new Flow [newFlows.size()][2];
+		
+		List <Integer> checkedFlowsOld = new ArrayList <Integer>();	
+		List <String> checkedElements = new ArrayList <String>();
+
+		int currentNewFlow = 0;
+		
+		for (Flow newFlow: newFlows) {
+			
+			EList<FlowElementReference> newFlowElements = newFlow.getInclElements();
+		
+			int mostSimilarities = 0;
+			int leastDifferences = 10000;
+			
+			int currentOldFlow = 0;
+
+
+			for (Flow oldFlow: oldFlows) {
+				
+				EList<FlowElementReference> oldFlowElements = oldFlow.getInclElements();
+
+				int similarities = 0;
+				int differences = 0;
+
+				if(checkedFlowsOld.contains(currentOldFlow));
+				
+				else {
+				FlowElementReference newNeighbourBefore = null;
+				FlowElementReference newNeighbourAfter;
+
+				FlowElementReference oldNeighbourBefore = null;
+				FlowElementReference oldNeighbourAfter;
+				
+				//Zeiger auf aktuelles Flow Element des neuen Flows
+				int currentNewFlowElement = 0;
+
+				for (FlowElementReference newFlowElement: newFlowElements) {
+					
+					//Zeiger auf aktuelles Flow Element des alten Flows
+					int currentOldFlowElement = 0;
+					
+					if(checkedElements.contains(newFlowElement.getRef().getName())) {}
+					else {
+						
+						for (FlowElementReference oldFlowElement: oldFlowElements) {
+					
+							if(checkedElements.contains(oldFlowElement.getRef().getName())) {}
+							
+							else {
+
+								if(newFlowElement.getRef().getName().equals(oldFlowElement.getRef().getName())) {
+									similarities++;
+									checkedElements.add(newFlowElement.getRef().getName());
+									
+								}
+						
+							}
+							currentOldFlowElement++;
+						}
+					}
+				}  
+			}
+				//berechnen der Elemente, die aus dem alten und neuen Flow nicht zueinander gepasst haben
+				differences = oldFlow.getInclElements().size()-similarities + newFlow.getInclElements().size()-similarities;
+				
+				
+				// falls aktuell übprüfte Flow alt und neu Kombination die meisten Gemeinsamkeiten haben oder noch nichts in matchingFlows gespeichert wurde
+				if(mostSimilarities<similarities || (mostSimilarities==similarities && leastDifferences> differences)) {
+			
+						
+						mostSimilarities=similarities;
+						leastDifferences = differences;
+
+						matchingFlows[currentNewFlow][0] = newFlow;
+						matchingFlows[currentNewFlow][1] = oldFlow;
+
+
+				}
+				checkedElements = new ArrayList <String>();
+				
+				currentOldFlow++;
+
+			}
+			
+			currentNewFlow++;
+		}			
+//		for (int i=0; i<newFlows.size();i++) {
+//			System.out.println(matchingFlows[i][0]+"   "+matchingFlows[i][1]);
+//			
+//		}
+		
+		return matchingFlows;
+	}
+}
\ No newline at end of file
diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/file/FileController.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/file/FileController.java
index 20ec66ca68353068dfcbbc407ac76c500e34eec1..008626e432f2e17f303f30d2c34458f23a7610f8 100644
--- a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/file/FileController.java
+++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/file/FileController.java
@@ -52,9 +52,14 @@ public class FileController {
 		String rootPath = projectForId.getProjectDirectories().getProjectRootPath();	// D:\Eclipse orkspace\bpmn-testgenerator-tool-master\OnlineSchuhDemo
 		
 		// Hardcoded, die Funktion getBpmnFiles() findet nicht mehrere bpmn dateien sonder nur eine
-		String bpmnPath = "src\\main\\resources\\backup\\diagram.bpmn";
-		Path bpmn = Paths.get(rootPath, bpmnPath);
-		File bpmnFile = new File(bpmn.toString());
+		//String bpmnPath = "src\\main\\resources\\backup\\diagram.bpmn";
+		Path pathToBpmnFile = Paths.get(projectForId.getBpmnFiles().get(0).getPath());
+		
+		Path bpmnPath = Paths.get(rootPath,
+				projectForId.getProjectDirectories().getModelPath(), this.projectService.getBackupFolderName(),
+				pathToBpmnFile.getFileName().toString());
+		//Path bpmn = Paths.get(rootPath, bpmnPath);
+		File bpmnFile = new File(bpmnPath.toString());
 		String bpmnContent = readFile(bpmnFile);
 		
 		return bpmnContent;
diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/project/ProjectService.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/project/ProjectService.java
index d69b87500c49e4ef84add4ebce45cacf5f59ad9f..cbf95f7e2c4f5b356e4f4a3260289a70c049076f 100644
--- a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/project/ProjectService.java
+++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/project/ProjectService.java
@@ -42,6 +42,8 @@ public class ProjectService {
 
 	@Value("${testgenerator.projects}")
 	private String projectsPath;
+	
+	private String backupFolderName = "backup";
 
 	private Path projectConfigPath;
 
@@ -321,7 +323,8 @@ public class ProjectService {
 		LOGGER.info("starting copy process to backup folder");
 		Project project = getProjectForId(projectId);
 		//project.getProjectDirectories().getProjectRootPath().conc
-		Path p = Paths.get(project.getProjectDirectories().getProjectRootPath().toString(), project.getProjectDirectories().getModelPath(), "backup");
+		Path p = Paths.get(project.getProjectDirectories().getProjectRootPath().toString(),
+				project.getProjectDirectories().getModelPath(), this.backupFolderName);
 		File directory = new File(p.toUri());
 		if(!directory.exists()) {
 			directory.mkdir();
@@ -405,4 +408,8 @@ public class ProjectService {
 				}
 		*/
 	}
+	
+	public String getBackupFolderName() {
+		return this.backupFolderName;
+	}
 }
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 f0c3b80ac438d0a70424f749c172076f77a9ad44..35027be70d3be454277aa7531e3eee0f724c536e 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,525 +1,526 @@
-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) {
+			String resultVariable = BPMNParseUtils.getResultVariable((BusinessRuleTask) flowElement);
+			
+			return TestgeneratorDSLObjectCreator.createBusinessRuleTaskFlowElement(flowElement.getId(), resultVariable);
+		} 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/src/main/java/de/fhmuenster/masterthesis/Testgenerator/utils/BPMNParseUtils.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/utils/BPMNParseUtils.java
index 93b97cdfc716d956a09a812c124fccb2064cc248..1058f4830164fe84dc88b0831709af0317155c4a 100644
--- a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/utils/BPMNParseUtils.java
+++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/utils/BPMNParseUtils.java
@@ -10,6 +10,7 @@ import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
 import org.camunda.bpm.model.bpmn.BpmnModelInstance;
+import org.camunda.bpm.model.bpmn.instance.BusinessRuleTask;
 import org.camunda.bpm.model.bpmn.instance.ServiceTask;
 import org.camunda.bpm.model.dmn.DmnModelInstance;
 
@@ -223,6 +224,11 @@ public class BPMNParseUtils {
 		return externalTopic;
 	}
 	
+	public static String getResultVariable(BusinessRuleTask businessRuleTask) {
+		String resultVariable = businessRuleTask.getAttributeValueNs(NAMESPACE_URI_BPMN, "resultVariable");
+		return resultVariable;
+	}
+	
 	public static List<VariableDeclaration> getHardcodedVariables(String flowElementId, List<Variable> variables,
 			BPMNIOParameters bpmnIOParameters) {
 		List<VariableDeclaration> hardcodedVariables = new ArrayList<>();
diff --git a/Testgenerator/src/main/resources/application.properties b/Testgenerator/src/main/resources/application.properties
index f7d1dac8f318dd197818d957016bb699648d3ac4..59dee823fb4526817c23b33c82a43e5911377485 100644
--- a/Testgenerator/src/main/resources/application.properties
+++ b/Testgenerator/src/main/resources/application.properties
@@ -1,3 +1,3 @@
 logging.level.root=INFO
 
-testgenerator.projects=C:\\CodePro\\projects.json
+testgenerator.projects=C:\\Users\\tillb\\Desktop\\fe_projekt\\projects.json
diff --git a/Testgenerator/src/main/resources/migration.yaml b/Testgenerator/src/main/resources/migration.yaml
index 8781b0b7bf0cf68def945a8c811999455d16c616..55fe0103660b9f994b2b4ba453bb34b18e927ba5 100644
--- a/Testgenerator/src/main/resources/migration.yaml
+++ b/Testgenerator/src/main/resources/migration.yaml
@@ -26,5 +26,4 @@ activity:
       status: RED
       priority: 0
     manualTask:
-      status: GREEN
-      priority: 0
\ No newline at end of file
+      status: GREEN
\ No newline at end of file
diff --git a/testgenerator-web/testgenerator-web/src/app/migration-overview/migration-overview.component.css b/testgenerator-web/testgenerator-web/src/app/components/migration-overview/migration-overview.component.css
similarity index 100%
rename from testgenerator-web/testgenerator-web/src/app/migration-overview/migration-overview.component.css
rename to testgenerator-web/testgenerator-web/src/app/components/migration-overview/migration-overview.component.css
diff --git a/testgenerator-web/testgenerator-web/src/app/migration-overview/migration-overview.component.html b/testgenerator-web/testgenerator-web/src/app/components/migration-overview/migration-overview.component.html
similarity index 100%
rename from testgenerator-web/testgenerator-web/src/app/migration-overview/migration-overview.component.html
rename to testgenerator-web/testgenerator-web/src/app/components/migration-overview/migration-overview.component.html
diff --git a/testgenerator-web/testgenerator-web/src/app/migration-overview/migration-overview.component.spec.ts b/testgenerator-web/testgenerator-web/src/app/components/migration-overview/migration-overview.component.spec.ts
similarity index 100%
rename from testgenerator-web/testgenerator-web/src/app/migration-overview/migration-overview.component.spec.ts
rename to testgenerator-web/testgenerator-web/src/app/components/migration-overview/migration-overview.component.spec.ts
diff --git a/testgenerator-web/testgenerator-web/src/app/migration-overview/migration-overview.component.ts b/testgenerator-web/testgenerator-web/src/app/components/migration-overview/migration-overview.component.ts
similarity index 85%
rename from testgenerator-web/testgenerator-web/src/app/migration-overview/migration-overview.component.ts
rename to testgenerator-web/testgenerator-web/src/app/components/migration-overview/migration-overview.component.ts
index a0aec047820e5814dc080a2c54b190734535c44a..ca40a67be0438d83f52853aee7e3c174e151cbae 100644
--- a/testgenerator-web/testgenerator-web/src/app/migration-overview/migration-overview.component.ts
+++ b/testgenerator-web/testgenerator-web/src/app/components/migration-overview/migration-overview.component.ts
@@ -1,7 +1,7 @@
 import { Component, OnInit } from '@angular/core';
 import { ActivatedRoute } from '@angular/router';
-import { MigrationResultWrapper } from '../models/migration-result-wrapper';
-import { MigrationService } from '../services/migration-service';
+import { MigrationResultWrapper } from '../../models/migration-result-wrapper';
+import { MigrationService } from '../../services/migration-service';
 
 @Component({
   selector: 'app-migration-overview',