diff --git a/plugins/contracts/org.polarsys.chess.contracts.verificationService.test.runtime/resources/tools/nuXmv_win64.exe b/plugins/contracts/org.polarsys.chess.contracts.verificationService.test.runtime/resources/tools/nuXmv_win64.exe
deleted file mode 100644
index 0726884..0000000
--- a/plugins/contracts/org.polarsys.chess.contracts.verificationService.test.runtime/resources/tools/nuXmv_win64.exe
+++ /dev/null
Binary files differ
diff --git a/plugins/contracts/org.polarsys.chess.contracts.verificationService.test.runtime/resources/tools/ocra_win64.exe b/plugins/contracts/org.polarsys.chess.contracts.verificationService.test.runtime/resources/tools/ocra_win64.exe
deleted file mode 100644
index 8ae22d9..0000000
--- a/plugins/contracts/org.polarsys.chess.contracts.verificationService.test.runtime/resources/tools/ocra_win64.exe
+++ /dev/null
Binary files differ
diff --git a/plugins/contracts/org.polarsys.chess.contracts.verificationService.test.runtime/resources/tools/xSAP_win64.exe b/plugins/contracts/org.polarsys.chess.contracts.verificationService.test.runtime/resources/tools/xSAP_win64.exe
deleted file mode 100644
index c723be2..0000000
--- a/plugins/contracts/org.polarsys.chess.contracts.verificationService.test.runtime/resources/tools/xSAP_win64.exe
+++ /dev/null
Binary files differ
diff --git a/plugins/contracts/org.polarsys.chess.contracts.verificationService.test.runtime/src/org/polarsys/chess/contracts/verificationService/test/runtime/tests/TestSafetyAnalysisOperations.java b/plugins/contracts/org.polarsys.chess.contracts.verificationService.test.runtime/src/org/polarsys/chess/contracts/verificationService/test/runtime/tests/TestSafetyAnalysisOperations.java
index f226c4d..06e8557 100644
--- a/plugins/contracts/org.polarsys.chess.contracts.verificationService.test.runtime/src/org/polarsys/chess/contracts/verificationService/test/runtime/tests/TestSafetyAnalysisOperations.java
+++ b/plugins/contracts/org.polarsys.chess.contracts.verificationService.test.runtime/src/org/polarsys/chess/contracts/verificationService/test/runtime/tests/TestSafetyAnalysisOperations.java
@@ -160,6 +160,72 @@
 
 	@Test
 	@PluginResource(projectPath)
+	public void testFMEA() throws Exception {
+
+		// File ossFile = exportModelAsOssFile(testTempOutput);
+
+		String oracleFolder = projectFolderPath + "/VandVResults/FMEA";
+
+		File outputFolder = new File(testOutput);
+		String selectedDirectory = outputFolder.getAbsolutePath();
+		String resultFilePath = selectedDirectory + File.separator + "result_fmea.xml";
+		System.out.println("resultFilePath: " + resultFilePath);
+		// OCRAExecService ocraExecService =
+		// OCRAExecService.getInstance(ChessSystemModel.getInstance());
+		// ocraExecService.executeComputeFaultTree(ossFile, true,
+		// resultFilePath, new NullProgressMonitor(), true);
+
+		XSapExecService xSapExecService = XSapExecService.getInstance();
+
+		File tempFolder = new File(testTempOutput);
+		String selectedTempDirectory = tempFolder.getAbsolutePath();
+		String extendedSmvFileName = selectedTempDirectory + File.separator + "extendedSmv.smv";
+		String expandedFeiFileName = selectedTempDirectory + File.separator + "extendedFei.smv";
+		String feiFileName = selectedTempDirectory + File.separator + "RootElement_System.fei";
+
+		String fmsFileName = selectedTempDirectory + File.separator + "fms.xml";
+		String ftaFmeaCond = "sensor1.sensed_speed_is_present=TRUE";
+
+		Model model = getModel();
+		//IEditorPart editor = TestBasicOperations.openEditor(model);
+		Class umlSelectedComponent = getSystemComponent();
+
+		String fileName = model.getName();
+		String systemQN = umlSelectedComponent.getQualifiedName();
+		List<String> args = new ArrayList<String>();
+		args.add(systemQN);
+		final String systemName = systemQN.substring(systemQN.lastIndexOf("::") + 2);
+		args.add(systemName);
+		String modelName = systemQN; // Used by the
+		args.add(modelName);
+
+		IFile umlFile = TestBasicOperations.getUmlFile(model);
+		URI modelURI = URI.createPlatformResourceURI(umlFile.getFullPath().toString() , true);
+	
+		// Generate the monolithic SMV file
+		File smvFile = TestBasicOperations.exportModelAsMonolithicSmvFile(selectedTempDirectory, umlSelectedComponent);
+		String smvFileName = smvFile.getAbsolutePath();
+		
+		
+		// Generate the FEI file
+		GenerateFaultExtensions genFei = new GenerateFaultExtensions(modelURI, tempFolder, args);
+		genFei.doGenerate(null);
+	
+		// Expand the FEI file
+		xSapExecService.expandFaultExtensions(feiFileName, expandedFeiFileName, true);
+		// Extend the SMV model
+		xSapExecService.extendModel(smvFileName, expandedFeiFileName, fmsFileName, extendedSmvFileName, true);
+
+		String ftFileName = selectedDirectory + File.separator + "ft.xml";
+
+		xSapExecService.computeFmea(extendedSmvFileName, fmsFileName, ftaFmeaCond, ftFileName, true);
+
+		verifyDirsAreEqual(Paths.get(oracleFolder), Paths.get(selectedDirectory));
+		verifyDirsAreEqual(Paths.get(selectedDirectory), Paths.get(oracleFolder));
+	}
+	
+	@Test
+	@PluginResource(projectPath)
 	// @Ignore
 	public void testContractBasedFTA() throws Exception {
 
@@ -203,6 +269,7 @@
 		String OCRAFilePath = getConfigTestProperties().getProperty("OCRAFilePath");
 		String nuXmvFilePath = getConfigTestProperties().getProperty("nuXmvFilePath");
 		String xSapFilePath = getConfigTestProperties().getProperty("xSapFilePath");
+		String feiFilePath = getConfigTestProperties().getProperty("feiFilePathPath");
 		// String xSAPFilePath =
 		// getConfigTestProperties().getProperty("xSAPFilePath");
 
@@ -210,6 +277,7 @@
 		File ocraFile = new File(OCRAFilePath);
 		File nuXmvFile = new File(nuXmvFilePath);
 		File xSapFile = new File(xSapFilePath);
+		File feiExpFile = new File(feiFilePath);
 
 		eu.fbk.tools.adapter.ui.Activator.getDefault().getPreferenceStore().setValue(PreferenceConstants.TOOL_WORKSPACE,
 				// "C:/Users/Alberto/Google Drive/AMASS
@@ -229,6 +297,10 @@
 				PreferenceConstants.XSAP_EXECUTABLE,
 					xSapFile.getAbsolutePath());
 
+		eu.fbk.tools.adapter.ui.Activator.getDefault().getPreferenceStore().setValue(
+				PreferenceConstants.FEI_EXPANDER_EXECUTABLE,
+					feiExpFile.getAbsolutePath());
+		
 	}
 
 	Model getModel() {
diff --git a/plugins/contracts/org.polarsys.chess.contracts.verificationService.test.runtime/src/org/polarsys/chess/contracts/verificationService/test/runtime/tests/TestVAndVOperations.java b/plugins/contracts/org.polarsys.chess.contracts.verificationService.test.runtime/src/org/polarsys/chess/contracts/verificationService/test/runtime/tests/TestVAndVOperations.java
index 924e597..72c2958 100644
--- a/plugins/contracts/org.polarsys.chess.contracts.verificationService.test.runtime/src/org/polarsys/chess/contracts/verificationService/test/runtime/tests/TestVAndVOperations.java
+++ b/plugins/contracts/org.polarsys.chess.contracts.verificationService.test.runtime/src/org/polarsys/chess/contracts/verificationService/test/runtime/tests/TestVAndVOperations.java
@@ -308,6 +308,7 @@
 				// Project/ARTA_p1/eclipse/git_home/CHESS_FBK/plugins/contracts/org.polarsys.chess.contracts.verificationService.test.runtime/resources/tools/xSAP_win64.exe"
 				nuXmvFile.getAbsolutePath());
 
+		
 	}
 
 	Model getModel() {
