diff --git a/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/MatchingTestcollectionOld.java b/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/MatchingTestcollectionOld.java
new file mode 100644
index 0000000000000000000000000000000000000000..c4f1a978faa718fe8a0f2c403380dcf79e1c1819
--- /dev/null
+++ b/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/MatchingTestcollectionOld.java
@@ -0,0 +1,884 @@
+package de.sample.onlineschuhdemo;
+
+import static org.camunda.bpm.engine.test.assertions.ProcessEngineTests.*;
+import static org.camunda.bpm.engine.test.assertions.bpmn.BpmnAwareTests.complete;
+import static org.camunda.bpm.engine.test.assertions.bpmn.BpmnAwareTests.runtimeService;
+import static org.camunda.bpm.engine.test.assertions.bpmn.BpmnAwareTests.task;
+import static org.camunda.bpm.engine.test.assertions.bpmn.BpmnAwareTests.withVariables;
+import static org.assertj.core.api.Assertions.entry;
+import static de.sample.onlineschuhdemo.TestUtils.*;
+
+import org.apache.ibatis.logging.LogFactory;
+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;
+import org.junit.Rule;
+import org.junit.Test;
+import java.util.List;
+import java.util.Map;
+
+public class MatchingTestcollectionOld {
+
+	@ClassRule
+	@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();
+	}
+
+	@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(ManualTasks.NEW_TASK_1) //
+			.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_LUXUS) //
+			.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.NEW_TASK_2) //
+			.hasNotPassed(ManualTasks.NEW_FLOW_2) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.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(ManualTasks.NEW_TASK_1) //
+			.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_LUXUS) //
+			.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.NEW_TASK_2) //
+			.hasNotPassed(ManualTasks.NEW_FLOW_2) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.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(ManualTasks.NEW_TASK_1) //
+			.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_LUXUS) //
+			.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.NEW_TASK_2) //
+			.hasNotPassed(ManualTasks.NEW_FLOW_2) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.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(ManualTasks.NEW_TASK_1) //
+			.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_LUXUS) //
+			.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.NEW_TASK_2) //
+			.hasNotPassed(ManualTasks.NEW_FLOW_2) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.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(ManualTasks.NEW_TASK_1) //
+			.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_LUXUS) //
+			.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.NEW_TASK_2) //
+			.hasNotPassed(ManualTasks.NEW_FLOW_2) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.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(ManualTasks.NEW_TASK_1) //
+			.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_LUXUS) //
+			.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.NEW_TASK_2) //
+			.hasNotPassed(ManualTasks.NEW_FLOW_2) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.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(ManualTasks.NEW_TASK_1) //
+			.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_LUXUS) //
+			.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.NEW_TASK_2) //
+			.hasNotPassed(ManualTasks.NEW_FLOW_2) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.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(ManualTasks.NEW_TASK_1) //
+			.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_LUXUS) //
+			.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.NEW_TASK_2) //
+			.hasNotPassed(ManualTasks.NEW_FLOW_2) //
+			.hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) //
+			.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(ManualTasks.NEW_TASK_2) //
+			.hasNotPassed(ManualTasks.NEW_FLOW_2) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasNotPassed(ManualTasks.NEW_TASK_1) //
+			.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(ManualTasks.NEW_TASK_2) //
+			.hasNotPassed(ManualTasks.NEW_FLOW_2) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasNotPassed(ManualTasks.NEW_TASK_1) //
+			.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(ManualTasks.NEW_TASK_2) //
+			.hasNotPassed(ManualTasks.NEW_FLOW_2) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasNotPassed(ManualTasks.NEW_TASK_1) //
+			.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(ManualTasks.NEW_TASK_2) //
+			.hasNotPassed(ManualTasks.NEW_FLOW_2) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasNotPassed(ManualTasks.NEW_TASK_1) //
+			.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(ManualTasks.NEW_TASK_2) //
+			.hasNotPassed(ManualTasks.NEW_FLOW_2) //
+			.hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasNotPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasNotPassed(ManualTasks.NEW_TASK_1) //
+			.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(ManualTasks.NEW_TASK_2) //
+			.hasPassed(ManualTasks.NEW_FLOW_2) //
+			.hasPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) //
+			.hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) //
+			.hasPassed(Events.RETOURE_ENDE) //
+			.hasNotPassed(ManualTasks.WARE_EINSORTIEREN) //
+			.hasNotPassed(ManualTasks.NEW_TASK_1) //
+			.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(ManualTasks.NEW_TASK_1) //
+			.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(ManualTasks.NEW_TASK_2) //
+			.hasNotPassed(ManualTasks.NEW_FLOW_2) //
+			.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(ManualTasks.NEW_TASK_1) //
+			.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(ManualTasks.NEW_TASK_2) //
+			.hasNotPassed(ManualTasks.NEW_FLOW_2) //
+			.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(ManualTasks.NEW_TASK_1) //
+			.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(ManualTasks.NEW_TASK_2) //
+			.hasNotPassed(ManualTasks.NEW_FLOW_2) //
+			.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(ManualTasks.NEW_TASK_1) //
+			.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(ManualTasks.NEW_TASK_2) //
+			.hasNotPassed(ManualTasks.NEW_FLOW_2) //
+			.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(ManualTasks.NEW_TASK_1) //
+			.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(ManualTasks.NEW_TASK_2) //
+			.hasNotPassed(ManualTasks.NEW_FLOW_2) //
+			.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(ManualTasks.NEW_TASK_1) //
+			.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(ManualTasks.NEW_TASK_2) //
+			.hasNotPassed(ManualTasks.NEW_FLOW_2) //
+			.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)); //
+
+	}
+}
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 220ae098bb81d0b559c35515420bb58167abbde1..0550da4951fc8d77e47b8359725ab8470609c3bd 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
@@ -24,9 +24,11 @@ import de.fhmuenster.masterthesis.testgeneratorDSL.Flow;
 import de.fhmuenster.masterthesis.testgeneratorDSL.FlowElement;
 import de.fhmuenster.masterthesis.testgeneratorDSL.FlowElementReference;
 import de.fhmuenster.masterthesis.testgeneratorDSL.ManualTaskFlowElement;
+import de.fhmuenster.masterthesis.testgeneratorDSL.MockReference;
 import de.fhmuenster.masterthesis.testgeneratorDSL.UserTaskFlowElement;
 import de.fhmuenster.masterthesis.testgeneratorDSL.SequenceFlowElement;
 import de.fhmuenster.masterthesis.testgeneratorDSL.ServiceTaskFlowElement;
+import de.fhmuenster.masterthesis.testgeneratorDSL.TestgeneratorDSLFactory;
 import de.fhmuenster.masterthesis.testgeneratorDSL.BusinessRuleTaskFlowElement;
 import de.fhmuenster.masterthesis.testgeneratorDSL.Flag;
 import de.fhmuenster.masterthesis.utils.TestgeneratorDSLUtils;
@@ -66,18 +68,29 @@ public class MigrationService {
 					+ " mit Status: " + fcw.getMigrationResult().getPriority());
 			
 			try {	
+				//"maximalen" Flag-Wert noch ermitteln, jetzt erstmal nur YELLOW als Standard
 				newDSL.getFlow(fcw.getFlow().getName()).setFlag(Flag.YELLOW);
-//				List<FlowElement> flowElement = newDSL.getFlowElements();
-//				for(FlowElement fe : flowElement ) {
-//					fe.setFlag(Flag.GREEN);
-//				}
-//				List<FlowElementReference> fers = newDSL.getFlow(fcw.getFlow().getName()).getInclElements();
-//				
-//				for(FlowElementReference fer : fers) {
-//					fer.setFlag(Flag.GREEN);
-//					System.out.println(fer.getRef().getName());
-//				}
 				
+				EList<FlowElementReference> inclElements = newDSL.getFlow(fcw.getFlow().getName()).getInclElements();
+				
+				for(FlowElementReference elementReference : inclElements) {
+					if(elementReference.getRef().getName().equals(fcw.getFlowElement().getName())) {
+						elementReference.setFlag(this.convertMigrationResultToFlag(fcw.getMigrationResult().getStatus()));
+					}
+				}
+				
+				//fers.clear();
+				//fers.addAll(fers);
+				
+				//newDSL.updateInclElements(fers);
+				
+				//fcw.getFlow().getInclElements().addAll(newDSL.updateInclElements(fers, fcw.getFlow().getName()));
+				
+				
+				
+				
+				//fcw.getFlow().getInclElements().addAll(newDSL.updateInclElements(fers, fcw.getFlow().getName()));
+				//newDSL.updateInclElements(fers, fcw.getFlow().getName());
 				//newDSL.getFlow(fcw.getFlow().getName()).getInclElements().clear();
 				//newDSL.getFlow(fcw.getFlow().getName()).getInclElements().replaceAll(fers);
 				
@@ -196,6 +209,19 @@ public class MigrationService {
 		}
 	}
 	
+	private Flag convertMigrationResultToFlag(MigrationResultStatus status) {
+		switch(status) {
+		case GREEN:
+			return Flag.GREEN;
+		case YELLOW:
+			return Flag.YELLOW;
+		case RED:
+			return Flag.RED;
+		default:
+			return Flag.GREEN;
+		}
+	}
+	
 	public MigrationResultWrapperDTO convertMigrationResultWrapper(MigrationResultWrapper wrapper) {
 		MigrationResultWrapperDTO dto = new MigrationResultWrapperDTO();
 		dto = wrapper.convertToDTO();