diff --git a/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/ManualTasks.java b/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/ManualTasks.java
index 5cc6b030177d43e4d81befd74f3dd2e523e6a48c..ac22bea9a8ef059ec8b51fbfb5ddcfcc66bad3c5 100644
--- a/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/ManualTasks.java
+++ b/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/ManualTasks.java
@@ -3,9 +3,6 @@ package de.sample.onlineschuhdemo;
 public class ManualTasks {
 
 	public static final String WARE_EINSORTIEREN = "Ware_einsortieren";
-	public static final String NEW_TASK_1 = "New_Task_1";
-	public static final String NEW_TASK_2 = "New_Task_2";
-	public static final String NEW_FLOW_2 = "New_Flow_2";
 	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/test/java/de/sample/onlineschuhdemo/Testcollection-old.bpmn-testgen b/OnlineSchuhDemo/src/test/java/de/sample/onlineschuhdemo/Testcollection-old.bpmn-testgen
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
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 4cc8a594f58ba11186ef9800a2ee85d369ee29db..65994425d9c27d22074eb744bf7875cab7b95d99 100644
--- a/OnlineSchuhDemo/src/test/java/de/sample/onlineschuhdemo/Testcollection.bpmn-testgen
+++ b/OnlineSchuhDemo/src/test/java/de/sample/onlineschuhdemo/Testcollection.bpmn-testgen
@@ -127,6 +127,15 @@ without elements : [ Flow_unbeschaedigt , Ware_einsortieren , Flow_0a9rzst , Flo
 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" ;
 
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 f39025f57aa04f56f12a76a57834914d597d4f5c..7c29fa92a78a053ab5ba89bb296689acde67220d 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
@@ -54,141 +54,34 @@ public class ChangeController {
 	@Autowired
 	private FlowService flowService;
 	@Autowired
-	private TestService testService;
-	
+	private ChangeService changeService;
 	@Autowired
 	private MigrationService migrationService;
 	
 	@RequestMapping(path = "/project/{projectId}/match", method = RequestMethod.GET)
 	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
-
-
-//		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());		
 		
 
-
-		//für alte Flows
+		//Pfad zu alten Flows und Speichern aller alten Flows
 		String pathOld = "C:\\Users\\tillb\\Desktop\\fe_projekt\\fe-pda-testing-tool\\OnlineSchuhDemo\\dsl_matching\\MatchingTestcollectionOld.bpmn-testgen";
 		List<Flow> oldFlows = flowService.getOldFlows(pathOld);
 		
 
-		Flow [][] matchingFlows = new Flow [newFlows.size()][];
-
-		matchingFlows = compareFlows(newFlows, oldFlows);
-	}
+		Flow [][] matchingFlows = changeService.compareFlows(newFlows, oldFlows);
+//		for (int i=0; i<newFlows.size();i++) {
+//			System.out.println(matchingFlows[i][0]+"   "+matchingFlows[i][1]);
+//			
+//		}	
+		}
 
 	
-	private 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 {
-					
-				for (FlowElementReference newFlowElement: newFlowElements) {
-					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());
-									
-								}
-						
-							}
-						}
-					}
-				}  
-			}
-				//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++;
-		}			
-
-		
-		
-		
-		
-		return matchingFlows;
-	}
+	
 
 	
 	@RequestMapping(path = "/project/{projectId}/migration/changes", method = RequestMethod.GET)
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..b9778b5f3ffec4fcf345297dd5d629136a29315f
--- /dev/null
+++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/change/ChangeService.java
@@ -0,0 +1,112 @@
+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 {
+					
+				for (FlowElementReference newFlowElement: newFlowElements) {
+					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());
+									
+								}
+						
+							}
+						}
+					}
+				}  
+			}
+				//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/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