diff --git a/plugins/contracts/org.polarsys.chess.contracts.contractEditor/META-INF/MANIFEST.MF b/plugins/contracts/org.polarsys.chess.contracts.contractEditor/META-INF/MANIFEST.MF
index 638ed57f26a501cf8108e257201ac2c99693da80..bf1c58d13c8d23ce96dd8bd772b41d1a709b82bd 100644
--- a/plugins/contracts/org.polarsys.chess.contracts.contractEditor/META-INF/MANIFEST.MF
+++ b/plugins/contracts/org.polarsys.chess.contracts.contractEditor/META-INF/MANIFEST.MF
@@ -8,7 +8,9 @@ Require-Bundle: org.eclipse.papyrus.uml.diagram.composite;bundle-version="1.0.0"
  org.polarsys.chess.chessmlprofile;bundle-version="0.9.0",
  org.eclipse.papyrus.uml.properties;bundle-version="1.0.0",
  org.polarsys.chess.contracts.profile,
- org.polarsys.chess.core
+ org.polarsys.chess.core,
+ eu.fbk.eclipse.standardtools.utils,
+ org.polarsys.chess.service
 Bundle-ActivationPolicy: lazy
 Bundle-Vendor: Fondazione Bruno Kessler
 Import-Package: eu.fbk.eclipse.standardtools.contractEditor.core,
diff --git a/plugins/contracts/org.polarsys.chess.contracts.contractEditor/src/org/polarsys/chess/contracts/contractEditor/CustomContractEditorTab.java b/plugins/contracts/org.polarsys.chess.contracts.contractEditor/src/org/polarsys/chess/contracts/contractEditor/CustomContractEditorTab.java
index 1bde11317b84cefc4da7f82d7da59ef152c702b8..89953790f7f00b49ac0678064371779532ef5acf 100644
--- a/plugins/contracts/org.polarsys.chess.contracts.contractEditor/src/org/polarsys/chess/contracts/contractEditor/CustomContractEditorTab.java
+++ b/plugins/contracts/org.polarsys.chess.contracts.contractEditor/src/org/polarsys/chess/contracts/contractEditor/CustomContractEditorTab.java
@@ -10,6 +10,7 @@
  ******************************************************************************/
 package org.polarsys.chess.contracts.contractEditor;
 
+
 import org.eclipse.emf.common.util.BasicEList;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.resource.Resource;
@@ -29,9 +30,11 @@ import org.eclipse.uml2.uml.Property;
 import org.eclipse.uml2.uml.UMLPackage;
 import org.polarsys.chess.contracts.profile.chesscontract.util.ContractEntityUtil;
 import org.polarsys.chess.contracts.profile.chesscontract.util.EntityUtil;
+import org.polarsys.chess.service.internal.model.ChessSystemModel;
 import org.polarsys.chess.service.utils.SelectionUtil;
 
 import eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab;
+import eu.fbk.eclipse.standardtools.model.AbstractSystemModel;
 
 /**
  * This is the contract editor designed for the CHESS platform. It extends the
@@ -58,11 +61,11 @@ public class CustomContractEditorTab extends ContractEditorTab {
 	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
 	 * #getContractOwnerInputPorts(java.lang.Object)
 	 */
-	@Override
-	public String[] getContractOwnerInputPorts(Object contract) {
+	/*@Override
+	public String[] getOwnerInputPortsNames(Object contract) {
 		Element umlOwner = entityUtil.getOwner((Element) contract);
 		return entityUtil.getInputPortsNames(umlOwner);
-	}
+	}*/
 
 	/*
 	 * (non-Javadoc)
@@ -71,11 +74,11 @@ public class CustomContractEditorTab extends ContractEditorTab {
 	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
 	 * #getContractOwnerOutputPorts(java.lang.Object)
 	 */
-	@Override
-	public String[] getContractOwnerOutputPorts(Object contract) {
+	/*@Override
+	public String[] getOwnerOutputPortsNames(Object contract) {
 		Element umlOwner = entityUtil.getOwner((Element) contract);
 		return entityUtil.getOutputPortsNames(umlOwner);
-	}
+	}*/
 
 	/*
 	 * (non-Javadoc)
@@ -84,13 +87,13 @@ public class CustomContractEditorTab extends ContractEditorTab {
 	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
 	 * #getContractOwnerInputOutputPorts(java.lang.Object)
 	 */
-	@Override
-	public String[] getContractOwnerInputOutputPorts(Object contract) {
+	/*@Override
+	public String[] getOwnerInputOutputPortsNames(Object contract) {
 		Element umlOwner = entityUtil.getOwner((Element) contract);
 		return entityUtil.getInputOutputPortsNames(umlOwner);
 
 	}
-
+*/
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -98,17 +101,19 @@ public class CustomContractEditorTab extends ContractEditorTab {
 	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
 	 * #getContractOwnerAttributes(java.lang.Object)
 	 */
-	@Override
-	public String[] getContractOwnerAttributes(Object contract) {
-		Element element = ((Class) contract).getOwner();
-		EList<String> attrArr = new BasicEList<String>();
+	/*@Override
+	public String[] getOwnerAttributesNames(Object contract) {
+		return entityUtil.getOwnerAttributesNames(contract);
 
-		attrArr.addAll(entityUtil.getBooleanAttributesNamesExceptsPorts(element));
-		String[] attributesStrArr = new String[attrArr.size()];
-		return attrArr.toArray(attributesStrArr);
+	}*/
 
+	public String getContractQualifiedName(Object contract) {
+		if (contract != null) {
+			return ((Class) contract).getQualifiedName();
+		}
+		return null;
 	}
-
+	
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -215,10 +220,10 @@ public class CustomContractEditorTab extends ContractEditorTab {
 	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
 	 * #getComponentName(java.lang.Object)
 	 */
-	@Override
+	/*@Override
 	public String getComponentName(Object component) {
 		return ((Class) component).getQualifiedName();
-	}
+	}*/
 
 	/*
 	 * (non-Javadoc)
@@ -393,10 +398,93 @@ public class CustomContractEditorTab extends ContractEditorTab {
 		return null;
 	}
 
-	@Override
+	/*@Override
 	public String[] getEnumValuesFromContractOwnerPorts(Object contract) {
 		Class element = (Class) ((Class) contract).getOwner();
 		return entityUtil.getEnumValuesFromComponentPorts(element);		
+	}*/
+
+
+	/*@Override
+	public String getPortName(Object port) {
+		return entityUtil.getPortName((Port)port);
+	}
+
+	@Override
+	public String getAttributeName(Object attribute) {
+		return entityUtil.getAttributeName((Property)attribute);
+	}
+
+	@Override
+	public Set<?> getContractOwnerPorts(Object contract) {
+		return entityUtil.getUmlPorts(entityUtil.getOwner((Element)contract));
 	}
 
+	@Override
+	public Set<?> getContractOwnerAttributes(Object contract) {
+		return entityUtil.getAttributes(entityUtil.getOwner((Element)contract));
+	}
+	
+	@Override
+	public boolean isNumberAttribute(Object attribute) {
+		return false;
+	}
+
+	@Override
+	public boolean isIntAttribute(Object attribute) {
+		return entityUtil.isIntegerAttribute((Property)attribute);
+	}
+
+	@Override
+	public boolean isEventAttribute(Object attribute) {
+		return entityUtil.isEventPortAttribute((Property)attribute);
+	}
+
+	@Override
+	public boolean isEnumAttribute(Object attribute) {
+		return entityUtil.isEnumerationAttribute((Property)attribute);
+	}
+
+	@Override
+	public boolean isBoolAttribute(Object attribute) {
+		return entityUtil.isBooleanAttribute((Property)attribute);
+	}
+
+	@Override
+	public boolean isContinuousAttribute(Object attribute) {
+		return entityUtil.isContinuousAttribute((Property)attribute);
+	}
+
+	@Override
+	public boolean isWordAttribute(Object attribute) {
+		return false;
+	}
+
+	@Override
+	public boolean isRealAttribute(Object attribute) {
+		return entityUtil.isRealAttribute((Property)attribute);
+	}
+
+	@Override
+	public boolean isInOutPort(Object port) {
+		return entityUtil.isInOutPort((Port)port);
+	}
+
+	@Override
+	public boolean isOutputPort(Object port) {
+		return entityUtil.isOutputPort((Port)port);
+	}
+
+	@Override
+	public boolean isInputPort(Object port) {
+		return entityUtil.isInputPort((Port)port);
+	}*/
+
+	@Override
+	public AbstractSystemModel getSystemModel() {
+		return ChessSystemModel.getInstance();
+	}
+
+	
+
 }
diff --git a/plugins/contracts/org.polarsys.chess.contracts.contractEditor/src/org/polarsys/chess/contracts/contractEditor/CustomContractEditorView.java b/plugins/contracts/org.polarsys.chess.contracts.contractEditor/src/org/polarsys/chess/contracts/contractEditor/CustomContractEditorView.java
index 44583f856f71e99174d3e6512913da7310a0727d..8529cd23d823bea5b4006d6fe96f9e11dc32454e 100644
--- a/plugins/contracts/org.polarsys.chess.contracts.contractEditor/src/org/polarsys/chess/contracts/contractEditor/CustomContractEditorView.java
+++ b/plugins/contracts/org.polarsys.chess.contracts.contractEditor/src/org/polarsys/chess/contracts/contractEditor/CustomContractEditorView.java
@@ -10,6 +10,9 @@
  ******************************************************************************/
 package org.polarsys.chess.contracts.contractEditor;
 
+
+import java.util.Set;
+
 import org.eclipse.emf.common.util.BasicEList;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.transaction.RecordingCommand;
@@ -44,19 +47,19 @@ public class CustomContractEditorView extends ContractEditorView {
 	private EntityUtil entityUtil = EntityUtil.getInstance();
 
 	@Override
-	public String[] getContractOwnerInputPorts(Object contract) {		
+	public String[] getContractOwnerInputPortsNames(Object contract) {		
 		Element umlOwner = entityUtil.getOwner((Element) contract);
 		return entityUtil.getInputPortsNames(umlOwner);
 	}
 
 	@Override
-	public String[] getContractOwnerOutputPorts(Object contract) {		
+	public String[] getContractOwnerOutputPortsNames(Object contract) {		
 		Element umlOwner = entityUtil.getOwner((Element) contract);
 		return entityUtil.getOutputPortsNames(umlOwner);
 	}
 
 	@Override
-	public String[] getContractOwnerInputOutputPorts(Object contract) {
+	public String[] getContractOwnerInputOutputPortsNames(Object contract) {
 		Element umlOwner = entityUtil.getOwner((Element) contract);
 		return entityUtil.getInputOutputPortsNames(umlOwner);
 	}
@@ -232,4 +235,88 @@ public class CustomContractEditorView extends ContractEditorView {
 		return entityUtil.getEnumValuesFromComponentPorts(element);	
 	}
 
+	@Override
+	public Set<?> getContractOwnerPorts(Object contract) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public Set<?> getContractOwnerAttributes(Object contract) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public boolean isNumberAttribute(Object attribute) {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	@Override
+	public boolean isIntAttribute(Object attribute) {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	@Override
+	public boolean isEventAttribute(Object attribute) {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	@Override
+	public boolean isEnumAttribute(Object attribute) {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	@Override
+	public boolean isBoolAttribute(Object attribute) {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	@Override
+	public boolean isContinuousAttribute(Object attribute) {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	@Override
+	public boolean isWordAttribute(Object attribute) {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	@Override
+	public boolean isRealAttribute(Object attribute) {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	@Override
+	public boolean isInOutPort(Object port) {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	@Override
+	public boolean isOutputPort(Object port) {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	@Override
+	public boolean isInputPort(Object port) {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	@Override
+	public String getPortName(Object port) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
 }
diff --git a/plugins/contracts/org.polarsys.chess.contracts.profile/src/org/polarsys/chess/contracts/profile/chesscontract/util/EntityUtil.java b/plugins/contracts/org.polarsys.chess.contracts.profile/src/org/polarsys/chess/contracts/profile/chesscontract/util/EntityUtil.java
index a08a5e19963a4205feac1ed163991e080135a95c..018bb85a87a7aa1f1a5e0f772950e73f00d359df 100644
--- a/plugins/contracts/org.polarsys.chess.contracts.profile/src/org/polarsys/chess/contracts/profile/chesscontract/util/EntityUtil.java
+++ b/plugins/contracts/org.polarsys.chess.contracts.profile/src/org/polarsys/chess/contracts/profile/chesscontract/util/EntityUtil.java
@@ -117,11 +117,22 @@ public class EntityUtil {
 	public String[] getSubComponentsName(Object constraint) {
 		Element umlElement = ((Constraint) constraint).getOwner();
 		Set<String> subCompArr = getSubComponentsNames((Class) umlElement);
-		String[] subComStrArr = new String[subCompArr.size()];
-		return subCompArr.toArray(subComStrArr);
+		//String[] subComStrArr = new String[subCompArr.size()];
+		//return subCompArr.toArray(subComStrArr);
+		return toArray(subCompArr);
 
 	}
 	
+	private String[] toArray(Set<String> set){
+		String[] strArray = new String[set.size()];
+		return set.toArray(strArray);
+	}
+	
+	private String[] toArray(EList<String> eList){
+		String[] strArray = new String[eList.size()];
+		return eList.toArray(strArray);
+	}
+	
 	public String getComponentID(Object umlComponent) {
 
 		if (
@@ -180,9 +191,28 @@ public class EntityUtil {
 		//	System.out.println(s);
 		//}
 		
-			String[] enumValuesNamesStrArr = new String[enumValuesEList.size()];
-			return enumValuesEList.toArray(enumValuesNamesStrArr);
+			//String[] enumValuesNamesStrArr = new String[enumValuesEList.size()];
+			// enumValuesEList.toArray(enumValuesNamesStrArr);
+		return toArray(enumValuesEList);
+	}
+	
+	public String[] getEnumValuesFromComponentAttributes(Class umlComponent){
+		EList<String> enumValuesEList = new BasicEList<String>();
+		
+		for(Property element :getAttributes(umlComponent)){
+			if(isEnumerationAttribute(element)){
+				Set<String> currValues = getListValuesForEnumeratorType(element);
+				enumValuesEList.addAll(currValues);
+			}
+		}
+		
+		//for(String s : enumValuesEList){
+		//	System.out.println(s);
+		//}
 		
+			//String[] enumValuesNamesStrArr = new String[enumValuesEList.size()];
+			//return enumValuesEList.toArray(enumValuesNamesStrArr);
+		return toArray(enumValuesEList);
 	}
 	
 	public Set<String> getSubComponentsNames(Class umlComponent) {
@@ -467,8 +497,9 @@ public class EntityUtil {
 	public String[] getValuesForEnumeratorType(Property umlProperty) {
 		Set<String> enumValuesNames = getListValuesForEnumeratorType(umlProperty);		
 		if(enumValuesNames!=null){
-			String[] enumValuesNamesStrArr = new String[enumValuesNames.size()];
-			return enumValuesNames.toArray(enumValuesNamesStrArr);
+			//String[] enumValuesNamesStrArr = new String[enumValuesNames.size()];
+			//return enumValuesNames.toArray(enumValuesNamesStrArr);
+			return toArray(enumValuesNames);
 		}
 		return null;
 		
@@ -528,8 +559,9 @@ public class EntityUtil {
 			portsNames.add(umlPort.getName());
 		}
 
-		String[] portsStrArr = new String[portsNames.size()];
-		return portsNames.toArray(portsStrArr);
+		return toArray(portsNames);
+		//String[] portsStrArr = new String[portsNames.size()];
+		//return portsNames.toArray(portsStrArr);
 	}
 
 	public EList<String> getPortsName(EList<Port> ports) {
@@ -577,6 +609,15 @@ public class EntityUtil {
 		return booleanAttributesNames;
 	}
 
+	public String[] getOwnerAttributesNames(Object contract) {
+		
+		Set<String> attrArr = getAttributesNamesExceptsPorts(((Class) contract).getOwner());
+		//attrArr.addAll(getAttributesNamesExceptsPorts(((Class) contract).getOwner()));
+		return toArray(attrArr);
+
+	}
+
+	
 	public Set<Property> getBooleanAttributes(Element umlElement) {
 		Set<Property> booleanAttributes = new HashSet<Property>();
 
diff --git a/plugins/contracts/org.polarsys.chess.contracts.safetyAnalysis/META-INF/MANIFEST.MF b/plugins/contracts/org.polarsys.chess.contracts.safetyAnalysis/META-INF/MANIFEST.MF
index ef2641848e32dca76604f8f18ea9e975000cfc3e..c2222aec47d0cdb2efde01ad9414a1dd054e7528 100644
--- a/plugins/contracts/org.polarsys.chess.contracts.safetyAnalysis/META-INF/MANIFEST.MF
+++ b/plugins/contracts/org.polarsys.chess.contracts.safetyAnalysis/META-INF/MANIFEST.MF
@@ -10,7 +10,8 @@ Require-Bundle: org.eclipse.core.commands,
  org.eclipse.uml2.uml,
  eu.fbk.eclipse.standardtools.utils;bundle-version="1.0.0",
  eu.fbk.eclipse.standardtools.ExecOcraCommands,
- org.polarsys.chess.contracts.verificationService;bundle-version="1.0.0"
+ org.polarsys.chess.contracts.verificationService;bundle-version="1.0.0",
+ org.polarsys.chess.service
 Bundle-Vendor: Fondazione Bruno Kessler
 Import-Package: org.eclipse.core.runtime,
  org.polarsys.chess.service.utils
diff --git a/plugins/contracts/org.polarsys.chess.contracts.safetyAnalysis/src/org/polarsys/chess/safetyAnalysis/commands/ComputeContractFaultTreeCommand.java b/plugins/contracts/org.polarsys.chess.contracts.safetyAnalysis/src/org/polarsys/chess/safetyAnalysis/commands/ComputeContractFaultTreeCommand.java
index 61a7895b2dcda257d9fc6c4990661759157b9e59..9ae2979a34ed8178f569d3ed24efcc39af5081b9 100644
--- a/plugins/contracts/org.polarsys.chess.contracts.safetyAnalysis/src/org/polarsys/chess/safetyAnalysis/commands/ComputeContractFaultTreeCommand.java
+++ b/plugins/contracts/org.polarsys.chess.contracts.safetyAnalysis/src/org/polarsys/chess/safetyAnalysis/commands/ComputeContractFaultTreeCommand.java
@@ -15,8 +15,9 @@ import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.uml2.uml.Class;
+import org.polarsys.chess.service.internal.model.ChessSystemModel;
 import org.polarsys.chess.service.utils.SelectionUtil;
-import org.polarsys.chess.verificationService.model.ChessSystemModel;
+
 import eu.fbk.eclipse.standardtools.ExecOcraCommands.services.OCRAExecService;
 import eu.fbk.eclipse.standardtools.commands.AbstractJobCommand;
 import eu.fbk.eclipse.standardtools.dialogs.MessageTimeModelDialog;
diff --git a/plugins/contracts/org.polarsys.chess.contracts.safetyAnalysis/src/org/polarsys/chess/safetyAnalysis/commands/debug/ComputeContractFaultTreeOnFileCommand.java b/plugins/contracts/org.polarsys.chess.contracts.safetyAnalysis/src/org/polarsys/chess/safetyAnalysis/commands/debug/ComputeContractFaultTreeOnFileCommand.java
index 64b621b2ab8fc7ba46ea7e860ed45837e6a24fdd..1eeb40c4361aee2e9623d1961c1c91374fafd2cc 100644
--- a/plugins/contracts/org.polarsys.chess.contracts.safetyAnalysis/src/org/polarsys/chess/safetyAnalysis/commands/debug/ComputeContractFaultTreeOnFileCommand.java
+++ b/plugins/contracts/org.polarsys.chess.contracts.safetyAnalysis/src/org/polarsys/chess/safetyAnalysis/commands/debug/ComputeContractFaultTreeOnFileCommand.java
@@ -12,7 +12,7 @@ package org.polarsys.chess.safetyAnalysis.commands.debug;
 
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.polarsys.chess.verificationService.model.ChessSystemModel;
+import org.polarsys.chess.service.internal.model.ChessSystemModel;
 
 import eu.fbk.eclipse.standardtools.ExecOcraCommands.services.OCRAExecService;
 import eu.fbk.eclipse.standardtools.commands.AbstractAsyncJobCommand;
diff --git a/plugins/contracts/org.polarsys.chess.contracts.verificationService/META-INF/MANIFEST.MF b/plugins/contracts/org.polarsys.chess.contracts.verificationService/META-INF/MANIFEST.MF
index a9299111d07921b196568ace546c1620f4debbd3..3576a725e8c2b3b5834ec2bcc0f3d9312ff5cb6d 100644
--- a/plugins/contracts/org.polarsys.chess.contracts.verificationService/META-INF/MANIFEST.MF
+++ b/plugins/contracts/org.polarsys.chess.contracts.verificationService/META-INF/MANIFEST.MF
@@ -22,7 +22,9 @@ Require-Bundle: org.eclipse.core.resources,
  eu.fbk.eclipse.standardtools.ExecOcraCommands,
  org.polarsys.chess.contracts.profile,
  org.polarsys.chess.core,
- eu.fbk.tools.editor.oss
+ eu.fbk.tools.editor.oss,
+ org.polarsys.chess.smvExport,
+ org.polarsys.chess.service
 Import-Package: eu.fbk.eclipse.standardtools.nuXmvService.dialogs,
  eu.fbk.eclipse.standardtools.nuXmvService.services,
  eu.fbk.eclipse.standardtools.nuXmvService.utils,
@@ -33,5 +35,4 @@ Import-Package: eu.fbk.eclipse.standardtools.nuXmvService.dialogs,
  org.polarsys.chess.service.utils
 Bundle-ActivationPolicy: lazy
 Bundle-Vendor: Fondazione Bruno Kessler
-Export-Package: org.polarsys.chess.verificationService.model
 
diff --git a/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/CheckValidationPropertyCommand.java b/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/CheckValidationPropertyCommand.java
index b78224117e293a8a4bb706e8ddd1860b5902fb66..e91280f24fe216e48f35474c47ae3525de61b5be 100644
--- a/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/CheckValidationPropertyCommand.java
+++ b/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/CheckValidationPropertyCommand.java
@@ -17,8 +17,8 @@ import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.uml2.uml.Class;
+import org.polarsys.chess.service.internal.model.ChessSystemModel;
 import org.polarsys.chess.service.utils.SelectionUtil;
-import org.polarsys.chess.verificationService.model.ChessSystemModel;
 
 import eu.fbk.eclipse.standardtools.ExecOcraCommands.services.OCRAExecService;
 import eu.fbk.eclipse.standardtools.commands.AbstractJobCommand;
diff --git a/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/ContractImplementationCommand.java b/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/ContractImplementationCommand.java
index 42b434d4484a8f4a068bc18480557b7ee32321b5..11ce86be5da0b8a996e1ade8ba36d308b3a9f6b1 100644
--- a/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/ContractImplementationCommand.java
+++ b/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/ContractImplementationCommand.java
@@ -23,9 +23,9 @@ import eu.fbk.eclipse.standardtools.dialogs.MessageTimeModelDialog;
 import eu.fbk.eclipse.standardtools.nuXmvService.utils.NuXmvDirectoryUtil;
 import eu.fbk.eclipse.standardtools.utils.OCRADirectoryUtil;
 
+import org.polarsys.chess.service.internal.model.ChessSystemModel;
 import org.polarsys.chess.service.utils.SelectionUtil;
-import org.polarsys.chess.verificationService.model.ChessSystemModel;
-import org.polarsys.chess.verificationService.services.SmvExportService;
+import org.polarsys.chess.smvExport.services.SmvExportService;
 
 public class ContractImplementationCommand extends AbstractJobCommand {
 
@@ -53,7 +53,7 @@ public class ContractImplementationCommand extends AbstractJobCommand {
 		 umlSelectedComponent = selectionUtil.getUmlComponentFromSelectedObject(event);
 		 umlSelectedResource = umlSelectedComponent.eResource();
 		 isDiscreteTime = MessageTimeModelDialog.openQuestion();
-		 showPopups = false;
+		 showPopups = true;
 		 ossFilepath = ocraDirectoryUtil.getOSSFilePath();
 		 smvFilePath = nuXmvDirectoryUtil.getSmvFilePath();
 		 resultFilePath = ocraDirectoryUtil.getCommandCheckImplementationResultPath(umlSelectedComponent.getName());			
diff --git a/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/ContractRefinementCommand.java b/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/ContractRefinementCommand.java
index 2b59669362d1542363d0baf3985b3cbfb46d8d45..8b8d91ddb24389023bab2c0205211ff07158aed0 100644
--- a/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/ContractRefinementCommand.java
+++ b/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/ContractRefinementCommand.java
@@ -22,8 +22,8 @@ import eu.fbk.eclipse.standardtools.commands.AbstractJobCommand;
 import eu.fbk.eclipse.standardtools.dialogs.MessageTimeModelDialog;
 import eu.fbk.eclipse.standardtools.utils.OCRADirectoryUtil;
 
+import org.polarsys.chess.service.internal.model.ChessSystemModel;
 import org.polarsys.chess.service.utils.SelectionUtil;
-import org.polarsys.chess.verificationService.model.ChessSystemModel;
 
 public class ContractRefinementCommand extends  AbstractJobCommand { 
 
diff --git a/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/ExportModelToFileCommand.java b/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/ExportModelToFileCommand.java
index 60e2cdd2637335658c0c747043c5687611010f1c..8bf5f682b67901abedf029320193b452deba2482 100644
--- a/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/ExportModelToFileCommand.java
+++ b/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/ExportModelToFileCommand.java
@@ -22,8 +22,9 @@ import eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.services.OCRATranslato
 import eu.fbk.eclipse.standardtools.commands.AbstractJobCommand;
 import eu.fbk.eclipse.standardtools.dialogs.MessageTimeModelDialog;
 import eu.fbk.eclipse.standardtools.utils.OCRADirectoryUtil;
+
+import org.polarsys.chess.service.internal.model.ChessSystemModel;
 import org.polarsys.chess.service.utils.SelectionUtil;
-import org.polarsys.chess.verificationService.model.ChessSystemModel;
 
 /**
  * 
diff --git a/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/ModelCheckingCommand.java b/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/ModelCheckingCommand.java
index 64a74baf25fd887317b991d8a428ad419006b36d..f6709133033bd202db7b49ab334e3254a7f18616 100644
--- a/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/ModelCheckingCommand.java
+++ b/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/ModelCheckingCommand.java
@@ -17,7 +17,9 @@ import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.uml2.uml.Class;
 
 import org.polarsys.chess.service.utils.SelectionUtil;
-import org.polarsys.chess.verificationService.services.SmvExportService;
+import org.polarsys.chess.smvExport.services.SmvExportService;
+
+//import org.polarsys.chess.verificationService.services.SmvExportService;
 import eu.fbk.eclipse.standardtools.commands.AbstractJobCommand;
 import eu.fbk.eclipse.standardtools.nuXmvService.services.NuXmvService;
 import eu.fbk.eclipse.standardtools.nuXmvService.utils.NuXmvDirectoryUtil;
@@ -44,7 +46,7 @@ public class ModelCheckingCommand extends AbstractJobCommand {
 	@Override
 	public void execGUIOperations(ExecutionEvent event,IProgressMonitor monitor) throws Exception {
 		 umlSelectedComponent = selectionUtil.getUmlComponentFromSelectedObject(event);
-		 showPopups = false;
+		 showPopups = true;
 		 smvFilePath = nuXmvDirectoryUtil.getSmvFilePath();
 	}
 
diff --git a/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/debug/CheckValidationPropertyOnFileCommand.java b/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/debug/CheckValidationPropertyOnFileCommand.java
index ed9c3942a28911dcdbcf4bd3af2ae57c0602ad4e..93dd68923e67a6fff3d90d8548e0f98c7f820f57 100644
--- a/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/debug/CheckValidationPropertyOnFileCommand.java
+++ b/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/debug/CheckValidationPropertyOnFileCommand.java
@@ -13,7 +13,7 @@ package org.polarsys.chess.verificationService.commands.debug;
 
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.polarsys.chess.verificationService.model.ChessSystemModel;
+import org.polarsys.chess.service.internal.model.ChessSystemModel;
 
 import eu.fbk.eclipse.standardtools.ExecOcraCommands.services.OCRAExecService;
 import eu.fbk.eclipse.standardtools.commands.AbstractAsyncJobCommand;
diff --git a/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/debug/ContractImplementationOnFileCommand.java b/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/debug/ContractImplementationOnFileCommand.java
index 0eecf56bca4cfe8e2a540ad562b7a7280e68f7f8..693ad67009d6aa551b8f56f604b6f2a187c96676 100644
--- a/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/debug/ContractImplementationOnFileCommand.java
+++ b/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/debug/ContractImplementationOnFileCommand.java
@@ -12,7 +12,7 @@ package org.polarsys.chess.verificationService.commands.debug;
 
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.polarsys.chess.verificationService.model.ChessSystemModel;
+import org.polarsys.chess.service.internal.model.ChessSystemModel;
 
 import eu.fbk.eclipse.standardtools.ExecOcraCommands.services.OCRAExecService;
 import eu.fbk.eclipse.standardtools.commands.AbstractAsyncJobCommand;
diff --git a/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/debug/ContractRefinementOnFileCommand.java b/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/debug/ContractRefinementOnFileCommand.java
index 9e56ef6b828686b8ffe318f4ecb9cdccaa6c25a8..0a69f8b4845ad746b79eea9d5284ca38553e5611 100644
--- a/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/debug/ContractRefinementOnFileCommand.java
+++ b/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/commands/debug/ContractRefinementOnFileCommand.java
@@ -12,7 +12,7 @@ package org.polarsys.chess.verificationService.commands.debug;
 
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.polarsys.chess.verificationService.model.ChessSystemModel;
+import org.polarsys.chess.service.internal.model.ChessSystemModel;
 
 import eu.fbk.eclipse.standardtools.ExecOcraCommands.services.OCRAExecService;
 import eu.fbk.eclipse.standardtools.commands.AbstractAsyncJobCommand;
diff --git a/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/services/SmvExportService.java b/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/services/SmvExportService.java
index 3829c2729b1e81414886408b4fd9b88db163ed39..380ec735f15f14905970e625614f4d121a44742e 100644
--- a/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/services/SmvExportService.java
+++ b/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/services/SmvExportService.java
@@ -10,7 +10,7 @@
  ******************************************************************************/
 package org.polarsys.chess.verificationService.services;
 
-import java.io.File;
+/*import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
@@ -22,7 +22,7 @@ import org.polarsys.chess.contracts.transformations.main.GenerateErrorModel;
 
 import eu.fbk.eclipse.standardtools.exceptions.NoComponentException;
 //import eu.fbk.eclipse.standardtools.nuXmvService.utils.NuXmvDirectoryUtil;
-import eu.fbk.eclipse.standardtools.utils.DialogUtil;
+import eu.fbk.eclipse.standardtools.utils.DialogUtil;*/
 
 /**
  * 
@@ -39,14 +39,14 @@ public class SmvExportService {
 		return smvExportService;
 	}
 
-	private final Logger logger = Logger.getLogger(SmvExportService.class);
+	//private final Logger logger = Logger.getLogger(SmvExportService.class);
 	
-	private DialogUtil dialogUtil = DialogUtil.getInstance();
+	//private DialogUtil dialogUtil = DialogUtil.getInstance();
 	//private static NuXmvDirectoryUtil nuXmvDirectoryUtil = NuXmvDirectoryUtil.getInstance();
 
 	
 
-	public File exportSmv(Class umlSelectedComponent,boolean showPopups, String smvFilePath, IProgressMonitor monitor)
+	/*private File exportSmv(Class umlSelectedComponent,boolean showPopups, String smvFilePath, IProgressMonitor monitor)
 			throws Exception {
 		if (umlSelectedComponent == null) {
 			throw new NoComponentException();
@@ -58,10 +58,10 @@ public class SmvExportService {
 		exportSmv(umlSelectedComponent, smvOutput, args, showPopups,monitor);
 
 		return new File(smvOutput + "/" + getSmvFileName(umlSelectedComponent)+".smv");
-	}
+	}*/
 	
 
-	private List<String> returnParams(Class umlSelectedComponent) {
+	/*private List<String> returnParams(Class umlSelectedComponent) {
 		String systemQN = umlSelectedComponent.getQualifiedName();
 		final List<String> args = new ArrayList<String>();
 		args.add(systemQN);
@@ -97,5 +97,5 @@ if(showPopups){
 		dialogUtil.showMessage_ExportBehaviourDone(targetDir.getAbsolutePath());
 }
 		monitor.done();
-	}
+	}*/
 }
diff --git a/plugins/org.polarsys.chess.constraints.constraintEditor/META-INF/MANIFEST.MF b/plugins/org.polarsys.chess.constraints.constraintEditor/META-INF/MANIFEST.MF
index 0ee06c50c470dc85c83bd49f86d527203bcc62cd..4583690fb92272b05e3c23b4cffbd0b09f8e664e 100644
--- a/plugins/org.polarsys.chess.constraints.constraintEditor/META-INF/MANIFEST.MF
+++ b/plugins/org.polarsys.chess.constraints.constraintEditor/META-INF/MANIFEST.MF
@@ -10,7 +10,9 @@ Require-Bundle: org.eclipse.ui.views.properties.tabbed,
  org.eclipse.papyrus.infra.emf,
  org.polarsys.chess.chessmlprofile;bundle-version="0.9.0",
  org.polarsys.chess.contracts.profile,
- org.polarsys.chess.core
+ org.polarsys.chess.core,
+ eu.fbk.eclipse.standardtools.utils,
+ org.polarsys.chess.service
 Import-Package: eu.fbk.eclipse.standardtools.constraintEditor.constraintTab,
  org.eclipse.emf.edit.ui.action,
  org.eclipse.gef,
diff --git a/plugins/org.polarsys.chess.constraints.constraintEditor/src/org/polarsys/chess/constraints/constraintEditor/CustomConstraintEditorTab.java b/plugins/org.polarsys.chess.constraints.constraintEditor/src/org/polarsys/chess/constraints/constraintEditor/CustomConstraintEditorTab.java
index 6251e2d1cf41d4d5fcd72722a99d9d69d0ac0893..4db5b95b69a56a55e88bcc0d41dff4cde3cf3f49 100644
--- a/plugins/org.polarsys.chess.constraints.constraintEditor/src/org/polarsys/chess/constraints/constraintEditor/CustomConstraintEditorTab.java
+++ b/plugins/org.polarsys.chess.constraints.constraintEditor/src/org/polarsys/chess/constraints/constraintEditor/CustomConstraintEditorTab.java
@@ -10,21 +10,15 @@
  ******************************************************************************/
 package org.polarsys.chess.constraints.constraintEditor;
 
-import java.util.Set;
-
-import org.eclipse.emf.common.util.BasicEList;
-import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.papyrus.sysml.portandflows.FlowDirection;
-import org.eclipse.uml2.uml.Class;
 import org.eclipse.uml2.uml.Constraint;
-import org.eclipse.uml2.uml.Element;
-import org.eclipse.uml2.uml.Property;
 import org.polarsys.chess.contracts.profile.chesscontract.util.EntityUtil;
+import org.polarsys.chess.service.internal.model.ChessSystemModel;
 import org.polarsys.chess.service.utils.SelectionUtil;
 
 import eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.ConstraintEditorTab;
+import eu.fbk.eclipse.standardtools.model.AbstractSystemModel;
 
 /**
  * This is the constraint editor designed for the CHESS platform. It extends the
@@ -38,6 +32,8 @@ public class CustomConstraintEditorTab extends ConstraintEditorTab {
 	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
 	private EntityUtil entityUtil = EntityUtil.getInstance();
 
+	
+	
 	@Override
 	public Resource getResourceFromConstraint(Object constraint) {
 
@@ -50,14 +46,14 @@ public class CustomConstraintEditorTab extends ConstraintEditorTab {
 	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
 	 * ConstraintEditorTab#getSubComponentsName(java.lang.Object)
 	 */
-	@Override
+/*	@Override
 	public String[] getSubComponentsName(Object constraint) {
 		Element umlElement = ((Constraint) constraint).getOwner();
 		Set<String> subCompArr = entityUtil.getSubComponentsNames((Class) umlElement);
 		String[] subComStrArr = new String[subCompArr.size()];
 		return subCompArr.toArray(subComStrArr);
 
-	}
+	}*/
 
 	/*
 	 * (non-Javadoc)
@@ -65,7 +61,7 @@ public class CustomConstraintEditorTab extends ConstraintEditorTab {
 	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
 	 * ConstraintEditorTab#getSubComponent(java.lang.Object, java.lang.String)
 	 */
-	@Override
+	/*@Override
 	public Object getSubComponent(Object constraint, String componentName) {
 		Element element = ((Constraint) constraint).getOwner();
 
@@ -76,86 +72,86 @@ public class CustomConstraintEditorTab extends ConstraintEditorTab {
 		}
 
 		return null;
-	}
+	}*/
 
 	/*
 	 * (non-Javadoc)
 	 * 
 	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
 	 * ConstraintEditorTab#getInputOutputPorts(java.lang.Object)
-	 */
+	 
 	@Override
-	public String[] getInputOutputPorts(Object component) {
+	public String[] getInputOutputPortsNames(Object component) {
 		return entityUtil.getPortsNames((Element) component, FlowDirection.INOUT_VALUE);
 	}
 
-	/*
+	
 	 * (non-Javadoc)
 	 * 
 	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
 	 * ConstraintEditorTab#getInputPorts(java.lang.Object)
-	 */
+	 
 	@Override
-	public String[] getInputPorts(Object component) {
+	public String[] getInputPortsNames(Object component) {
 		return entityUtil.getPortsNames((Element) component, FlowDirection.IN_VALUE);
 	}
 
-	/*
+	
 	 * (non-Javadoc)
 	 * 
 	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
 	 * ConstraintEditorTab#getOutputPorts(java.lang.Object)
-	 */
+	 
 	@Override
-	public String[] getOutputPorts(Object component) {
+	public String[] getOutputPortsNames(Object component) {
 		return entityUtil.getPortsNames((Element) component, FlowDirection.OUT_VALUE);
 	}
 
-	/*
+	
 	 * (non-Javadoc)
 	 * 
 	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
 	 * ConstraintEditorTab#getConstraintOwnerInputPorts(java.lang.Object)
-	 */
+	 
 	@Override
-	public String[] getConstraintOwnerInputPorts(Object constraint) {
+	public String[] getConstraintOwnerInputPortsNames(Object constraint) {
 		Element element = ((Constraint) constraint).getOwner();
-		return getInputPorts(element);
+		return getInputPortsNames(element);
 	}
 
-	/*
+	
 	 * (non-Javadoc)
 	 * 
 	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
 	 * ConstraintEditorTab#getConstraintOwnerOutputPorts(java.lang.Object)
-	 */
+	 
 	@Override
-	public String[] getConstraintOwnerOutputPorts(Object constraint) {
+	public String[] getConstraintOwnerOutputPortsNames(Object constraint) {
 		Element element = ((Constraint) constraint).getOwner();
-		return getOutputPorts(element);
+		return getOutputPortsNames(element);
 
 	}
 
-	/*
+	
 	 * (non-Javadoc)
 	 * 
 	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
 	 * ConstraintEditorTab#getConstraintOwnerInputOutputPorts(java.lang.Object)
-	 */
+	 
 	@Override
 	public String[] getConstraintOwnerInputOutputPorts(Object constraint) {
 		Element element = ((Constraint) constraint).getOwner();
-		return getInputOutputPorts(element);
+		return getInputOutputPortsNames(element);
 	}
 
-	/*
+	
 	 * (non-Javadoc)
 	 * 
 	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
 	 * ConstraintEditorTab#getConstraintOwnerProperties(java.lang.Object)
-	 */
+	 
 	@Override
-	public String[] getConstraintOwnerProperties(Object constraint) {
+	public String[] getConstraintOwnerPropertiesNames(Object constraint) {
 		Class element = (Class) ((Constraint) constraint).getOwner();
 		EList<String> attrArr = new BasicEList<String>();
 		attrArr.addAll(entityUtil.getBooleanAttributesNamesExceptsPorts(element));
@@ -163,7 +159,7 @@ public class CustomConstraintEditorTab extends ConstraintEditorTab {
 		String[] attributesStrArr = new String[attrArr.size()];
 		return attrArr.toArray(attributesStrArr);
 	}
-
+*/
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -228,12 +224,102 @@ public class CustomConstraintEditorTab extends ConstraintEditorTab {
 	public String getStrFromConstraint(Object constraint) {
 		return ((Constraint) constraint).getSpecification().stringValue();
 	}
-
+/*
 	@Override
 	public String[] getEnumValuesFromConstraintOwnerPorts(Object constraint) {
 		Class element = (Class) ((Constraint) constraint).getOwner();
 		return entityUtil.getEnumValuesFromComponentPorts(element);		
 	}
+
+	
+	
+	@Override
+	public Set<?> getConstraintOwnerPorts(Object formalProperty) {
+		return entityUtil.getUmlPorts(entityUtil.getOwner((Element)formalProperty));		
+	}
+
+	@Override
+	public Set<?> getConstraintOwnerAttributes(Object formalProperty) {
+		return entityUtil.getAttributes(entityUtil.getOwner((Element)formalProperty));
+	}
+
+	@Override
+	public String getPortName(Object port) {
+		return entityUtil.getPortName((Port)port);
+	}
+
+	@Override
+	public String getAttributeName(Object attribute) {
+		return entityUtil.getAttributeName((Property)attribute);
+	}
+
+	
+	
+	@Override
+	public boolean isNumberAttribute(Object attribute) {
+		return false;
+	}
+
+	@Override
+	public boolean isIntAttribute(Object attribute) {
+		return entityUtil.isIntegerAttribute((Property)attribute);
+	}
+
+	@Override
+	public boolean isEventAttribute(Object attribute) {
+		return entityUtil.isEventPortAttribute((Property)attribute);
+	}
+
+	@Override
+	public boolean isEnumAttribute(Object attribute) {
+		return entityUtil.isEnumerationAttribute((Property)attribute);
+	}
+
+	@Override
+	public boolean isBoolAttribute(Object attribute) {
+		return entityUtil.isBooleanAttribute((Property)attribute);
+	}
+
+	@Override
+	public boolean isContinuousAttribute(Object attribute) {
+		return entityUtil.isContinuousAttribute((Property)attribute);
+	}
+
+	@Override
+	public boolean isWordAttribute(Object attribute) {
+		return false;
+	}
+
+	@Override
+	public boolean isRealAttribute(Object attribute) {
+		return entityUtil.isRealAttribute((Property)attribute);
+	}
+
+	@Override
+	public boolean isInOutPort(Object port) {
+		return entityUtil.isInOutPort((Port)port);
+	}
+
+	@Override
+	public boolean isOutputPort(Object port) {
+		return entityUtil.isOutputPort((Port)port);
+	}
+
+	@Override
+	public boolean isInputPort(Object port) {
+		return entityUtil.isInputPort((Port)port);
+	}
+*/
+	/*@Override
+	public Set<?> getComponentPorts(Object component) {
+		return entityUtil.getUmlPorts((Element)component);
+	}*/
+
+	@Override
+	public AbstractSystemModel getSystemModel() {
+		return ChessSystemModel.getInstance();
+	}
+
 	
 	
 
diff --git a/plugins/org.polarsys.chess.diagram.ui/META-INF/MANIFEST.MF b/plugins/org.polarsys.chess.diagram.ui/META-INF/MANIFEST.MF
index 3c88c15044c7c2491f7528978b2ec216dc37922e..d95ffcf723e18b60fc646f4a78dee25d88668d64 100644
--- a/plugins/org.polarsys.chess.diagram.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.polarsys.chess.diagram.ui/META-INF/MANIFEST.MF
@@ -32,5 +32,6 @@ Require-Bundle: org.eclipse.core.commands,
  org.eclipse.papyrus.sysml.diagram.internalblock;bundle-version="2.0.0",
  org.eclipse.papyrus.sysml.diagram.blockdefinition;bundle-version="2.0.0",
  org.eclipse.papyrus.uml.diagram.profile;bundle-version="2.0.0",
- org.eclipse.papyrus.uml.diagram.common
+ org.eclipse.papyrus.uml.diagram.common,
+ org.polarsys.chess.service
 Export-Package: org.polarsys.chess.diagram.ui.utils
diff --git a/plugins/org.polarsys.chess.diagram.ui/src/org/polarsys/chess/diagram/ui/commands/GenerateDocumentCommand.java b/plugins/org.polarsys.chess.diagram.ui/src/org/polarsys/chess/diagram/ui/commands/GenerateDocumentCommand.java
index 4a9cb36f36bbbd530f78c05a53b9597a0cf404b3..01285024651870bd5c5041415427d424d206e551 100644
--- a/plugins/org.polarsys.chess.diagram.ui/src/org/polarsys/chess/diagram/ui/commands/GenerateDocumentCommand.java
+++ b/plugins/org.polarsys.chess.diagram.ui/src/org/polarsys/chess/diagram/ui/commands/GenerateDocumentCommand.java
@@ -25,8 +25,8 @@ import org.polarsys.chess.diagram.ui.docGenerators.CHESSBlockDefinitionDiagramMo
 import org.polarsys.chess.diagram.ui.docGenerators.CHESSInternalBlockDiagramModel;
 import org.polarsys.chess.diagram.ui.services.CHESSDiagramsGeneratorService;
 import org.polarsys.chess.diagram.ui.utils.ExportDialogUtils;
+import org.polarsys.chess.service.internal.model.ChessSystemModel;
 import org.polarsys.chess.service.utils.SelectionUtil;
-import org.polarsys.chess.verificationService.model.ChessSystemModel;
 
 import eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.services.OCRATranslatorService;
 import eu.fbk.eclipse.standardtools.commands.AbstractJobCommand;
diff --git a/plugins/org.polarsys.chess.properties.propertyEditor/META-INF/MANIFEST.MF b/plugins/org.polarsys.chess.properties.propertyEditor/META-INF/MANIFEST.MF
index 7c3b9d8090fc00a2164defc6afff8c6cde33c2e0..f8b98624bc56847fc881afd0149c177f72e9eab3 100644
--- a/plugins/org.polarsys.chess.properties.propertyEditor/META-INF/MANIFEST.MF
+++ b/plugins/org.polarsys.chess.properties.propertyEditor/META-INF/MANIFEST.MF
@@ -10,7 +10,8 @@ Require-Bundle: org.eclipse.papyrus.infra.core,
  org.polarsys.chess.chessmlprofile;bundle-version="0.9.0",
  org.polarsys.chess.contracts.profile,
  org.polarsys.chess.service,
- org.polarsys.chess.core
+ org.polarsys.chess.core,
+ eu.fbk.eclipse.standardtools.utils
 Import-Package: org.eclipse.gef,
  org.eclipse.gmf.runtime.diagram.ui.editparts,
  org.eclipse.papyrus.infra.emf.utils,
diff --git a/plugins/org.polarsys.chess.properties.propertyEditor/src/org/polarsys/chess/properties/propertyEditor/CustomPropertyEditorTab.java b/plugins/org.polarsys.chess.properties.propertyEditor/src/org/polarsys/chess/properties/propertyEditor/CustomPropertyEditorTab.java
index 5a031ac258d19b5ad1a89e3c042382e077d92981..b3080a2dc0c6cc2702e4ea00e6e4823c7553c1d9 100644
--- a/plugins/org.polarsys.chess.properties.propertyEditor/src/org/polarsys/chess/properties/propertyEditor/CustomPropertyEditorTab.java
+++ b/plugins/org.polarsys.chess.properties.propertyEditor/src/org/polarsys/chess/properties/propertyEditor/CustomPropertyEditorTab.java
@@ -10,50 +10,47 @@
  ******************************************************************************/
 package org.polarsys.chess.properties.propertyEditor;
 
-import org.eclipse.emf.common.util.BasicEList;
-import org.eclipse.emf.common.util.EList;
+
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.papyrus.sysml.portandflows.FlowDirection;
-import org.eclipse.uml2.uml.Class;
 import org.eclipse.uml2.uml.Constraint;
-import org.eclipse.uml2.uml.Element;
 import org.polarsys.chess.contracts.profile.chesscontract.FormalProperty;
 import org.polarsys.chess.contracts.profile.chesscontract.util.ContractEntityUtil;
-import org.polarsys.chess.contracts.profile.chesscontract.util.EntityUtil;
+import org.polarsys.chess.service.internal.model.ChessSystemModel;
 import org.polarsys.chess.service.utils.SelectionUtil;
 
+import eu.fbk.eclipse.standardtools.model.AbstractSystemModel;
 import eu.fbk.eclipse.standardtools.propertyEditor.propertyTab.PropertyEditorTab;
 
 public class CustomPropertyEditorTab extends PropertyEditorTab {
 
 	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
 	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
-	private EntityUtil entityUtil = EntityUtil.getInstance();
+	//private EntityUtil entityUtil = EntityUtil.getInstance();
 
-	@Override
-	public String[] getPropertyOwnerInputPorts(Object formalProperty) {
+	/*@Override
+	public String[] getOwnerInputPortsNames(Object formalProperty) {
 		Element umlOwner = entityUtil.getOwner((Constraint) formalProperty);
 		int direction = FlowDirection.IN_VALUE;
 		return entityUtil.getPortsNames(umlOwner, direction);
 	}
 
 	@Override
-	public String[] getPropertyOwnerOutputPorts(Object formalProperty) {
+	public String[] getOwnerOutputPortsNames(Object formalProperty) {
 		Element umlOwner = entityUtil.getOwner((Constraint) formalProperty);
 		int direction = FlowDirection.OUT_VALUE;
 		return entityUtil.getPortsNames(umlOwner, direction);
 	}
 
 	@Override
-	public String[] getPropertyOwnerInputOutputPorts(Object formalProperty) {
+	public String[] getOwnerInputOutputPortsNames(Object formalProperty) {
 		Element umlOwner = entityUtil.getOwner((Constraint) formalProperty);
 		int direction = FlowDirection.INOUT_VALUE;
 		return entityUtil.getPortsNames(umlOwner, direction);
 	}
 
 	@Override
-	public String[] getPropertyOwnerAttributes(Object property) {
+	public String[] getOwnerAttributesNames(Object property) {
 		Element umlOwner = ((Constraint) property).getOwner();
 		EList<String> attrArr = new BasicEList<String>();
 
@@ -62,7 +59,7 @@ public class CustomPropertyEditorTab extends PropertyEditorTab {
 		String[] attributesStrArr = new String[attrArr.size()];
 		return attrArr.toArray(attributesStrArr);
 
-	}
+	}*/
 
 	@Override
 	public Object returnProperty(ISelection selection) {
@@ -91,22 +88,103 @@ public class CustomPropertyEditorTab extends PropertyEditorTab {
 		contractEntityUtil.saveFormalProperty(contractEntityUtil.getFormalProperty((Constraint) property), textChanged);
 	}
 
-	public String getPropertyName(Object property) {
+	/*public String getPropertyName(Object property) {
 		if (property != null) {
 			return ((Constraint) property).getQualifiedName();
 		}
 		return null;
-	}
+	}*/
 
 	public String getStrFromProperty(Object property) {
 		FormalProperty formalProperty = contractEntityUtil.getFormalProperty((Constraint) property);
 		return contractEntityUtil.getPropertyStr(formalProperty);
 	}
 
+	
+
+	/*@Override
+	public Set<?> getOwnerPorts(Object formalProperty) {
+		return entityUtil.getUmlPorts(entityUtil.getOwner((Element)formalProperty));		
+	}
+
+	@Override
+	public Set<?> getOwnerVariables(Object formalProperty) {
+		return entityUtil.getAttributes(entityUtil.getOwner((Element)formalProperty));
+	}
+*/
+	/*@Override
+	public String getPortName(Object port) {
+		return entityUtil.getPortName((Port)port);
+	}
+*/
+/*	@Override
+	public String getAttributeName(Object attribute) {
+		return entityUtil.getAttributeName((Property)attribute);
+	}*/
+
+	
+	/*
 	@Override
-	public String[] getEnumValuesFromPropertyOwnerPorts(Object formalProperty) {
-		Class element = (Class) ((Constraint) formalProperty).getOwner();
-		return entityUtil.getEnumValuesFromComponentPorts(element);	
+	public boolean isNumberAttribute(Object attribute) {
+		// TODO Auto-generated method stub
+		return false;
+	}*/
+
+	/*@Override
+	public boolean isIntAttribute(Object attribute) {
+		return entityUtil.isIntegerAttribute((Property)attribute);
 	}
 
+	@Override
+	public boolean isEventAttribute(Object attribute) {
+		return entityUtil.isEventPortAttribute((Property)attribute);
+	}
+
+	@Override
+	public boolean isEnumAttribute(Object attribute) {
+		return entityUtil.isEnumerationAttribute((Property)attribute);
+	}
+
+	@Override
+	public boolean isBoolAttribute(Object attribute) {
+		return entityUtil.isBooleanAttribute((Property)attribute);
+	}*/
+
+	/*@Override
+	public boolean isContinuousAttribute(Object attribute) {
+		return entityUtil.isContinuousAttribute((Property)attribute);
+	}*/
+
+	/*@Override
+	public boolean isWordAttribute(Object attribute) {
+		// TODO Auto-generated method stub
+		return entityUtil.isStringAttribute((Property)attribute);
+	}*/
+
+	/*@Override
+	public boolean isRealAttribute(Object attribute) {
+		return entityUtil.isRealAttribute((Property)attribute);
+	}*/
+
+	/*@Override
+	public boolean isInOutPort(Object port) {
+		return entityUtil.isInOutPort((Port)port);
+	}*/
+
+	/*@Override
+	public boolean isOutputPort(Object port) {
+		return entityUtil.isOutputPort((Port)port);
+	}*/
+
+	/*@Override
+	public boolean isInputPort(Object port) {
+		return entityUtil.isInputPort((Port)port);
+	}*/
+
+	@Override
+	public AbstractSystemModel getSystemModel() {
+		return ChessSystemModel.getInstance();
+	}
+
+	
 }
diff --git a/plugins/org.polarsys.chess.service/META-INF/MANIFEST.MF b/plugins/org.polarsys.chess.service/META-INF/MANIFEST.MF
index 9a257cc64d0e8bcc5de29dc9fd4abc5fc1ac9fdb..77062b5e20794c74d727f58a46e867a00d12aaa6 100644
--- a/plugins/org.polarsys.chess.service/META-INF/MANIFEST.MF
+++ b/plugins/org.polarsys.chess.service/META-INF/MANIFEST.MF
@@ -15,10 +15,13 @@ Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.papyrus.infra.ui,
  org.eclipse.emf.cdo;bundle-version="4.5.0",
  org.eclipse.papyrus.cdo.core;bundle-version="1.2.0",
- org.eclipse.papyrus.uml.tools
+ org.eclipse.papyrus.uml.tools,
+ eu.fbk.eclipse.standardtools.utils,
+ org.polarsys.chess.contracts.profile
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
 Export-Package: org.polarsys.chess.service.exceptions,
  org.polarsys.chess.service.internal.commands.switchers,
+ org.polarsys.chess.service.internal.model,
  org.polarsys.chess.service.utils;
   uses:="org.eclipse.ui,
    org.eclipse.papyrus.infra.core.services,
diff --git a/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/model/ChessSystemModel.java b/plugins/org.polarsys.chess.service/src/org/polarsys/chess/service/internal/model/ChessSystemModel.java
similarity index 81%
rename from plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/model/ChessSystemModel.java
rename to plugins/org.polarsys.chess.service/src/org/polarsys/chess/service/internal/model/ChessSystemModel.java
index d5ca7f4bd4ae153e38bda1e47d1116f6e2c0af68..c89a2540358ef261083c4e2532f76a4a6c4e25a7 100644
--- a/plugins/contracts/org.polarsys.chess.contracts.verificationService/src/org/polarsys/chess/verificationService/model/ChessSystemModel.java
+++ b/plugins/org.polarsys.chess.service/src/org/polarsys/chess/service/internal/model/ChessSystemModel.java
@@ -8,10 +8,11 @@
  * Contributors:
  *     Alberto Debiasi - initial API and implementation
  ******************************************************************************/
-package org.polarsys.chess.verificationService.model;
+package org.polarsys.chess.service.internal.model;
 
 
 import java.util.List;
+import java.util.Set;
 
 import org.apache.log4j.Logger;
 import org.eclipse.emf.common.util.BasicEList;
@@ -22,6 +23,7 @@ import org.eclipse.uml2.uml.Connector;
 import org.eclipse.uml2.uml.ConnectorEnd;
 import org.eclipse.uml2.uml.Constraint;
 import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.Port;
 import org.eclipse.uml2.uml.Property;
 import org.eclipse.uml2.uml.Type;
@@ -30,7 +32,7 @@ import org.polarsys.chess.contracts.profile.chesscontract.ContractRefinement;
 import org.polarsys.chess.contracts.profile.chesscontract.util.ContractEntityUtil;
 import org.polarsys.chess.contracts.profile.chesscontract.util.EntityUtil;
 
-import eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.model.AbstractSystemModel;
+import eu.fbk.eclipse.standardtools.model.AbstractSystemModel;
 
 public class ChessSystemModel implements AbstractSystemModel {
 
@@ -132,7 +134,7 @@ if (entityUtil.isBlock((Element) component)) {
 	@Override
 	public String getPortName(Object port) {
 		// return ((Port)port).getQualifiedName().replaceAll("::", "_");
-		return ((Port) port).getName();
+		return entityUtil.getPortName((Port)port);
 	}
 
 	/*
@@ -212,6 +214,11 @@ if (entityUtil.isBlock((Element) component)) {
 		return new BasicEList<Port>(entityUtil.getUmlPorts((Element) component, FlowDirection.IN_VALUE));
 	}
 
+	@Override
+	public Set<?> getPorts(Object component) {
+		return entityUtil.getUmlPorts((Element)component);
+	}
+	
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -221,7 +228,8 @@ if (entityUtil.isBlock((Element) component)) {
 	 */
 	@Override
 	public String getParameterName(Object parameter) {
-		return ((Property) parameter).getName();
+		return entityUtil.getAttributeName((Property)parameter);
+		//return ((Property) parameter).getName();
 	}
 
 	/*
@@ -464,6 +472,13 @@ if (entityUtil.isBlock((Element) component)) {
 		return entityUtil.getComponentName(component);
 	}
 
+	
+	
+	@Override
+	public String getContractQualifiedName(Object contract) {
+		return contractEntityUtil.getContractQualifiedName((Class)contract);
+	}
+	
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -640,5 +655,123 @@ if (entityUtil.isBlock((Element) component)) {
 		return (((Property)port_or_parameter).getType() == null);
 	}
 
-	
+
+
+	@Override
+	public boolean isInputPort(Object port) {
+		return entityUtil.isInputPort((Port)port);
+	}
+
+
+
+	@Override
+	public boolean isOutputPort(Object port) {
+		return entityUtil.isOutputPort((Port)port);
+	}
+
+
+
+	@Override
+	public boolean isInOutPort(Object port) {
+		return entityUtil.isInputPort((Port)port);
+	}
+
+
+
+	@Override
+	public boolean isPortOrParameterWithNumberType(Object attribute) {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+
+
+	@Override
+	public boolean isPortOrParameterWithWordType(Object attribute) {
+		return entityUtil.isStringAttribute((Property)attribute);
+		
+	}
+
+
+
+	@Override
+	public String getVariableName(Object attribute) {
+		return entityUtil.getAttributeName((Property)attribute);
+}
+
+
+
+	@Override
+	public String getFormalPropertyName(Object formalProperty) {
+		return contractEntityUtil.getFormalPropertyName(formalProperty);
+	}
+
+	@Override
+	public Set<?> getOwnerPorts(Object formalProperty) {
+		Class owner = (Class)entityUtil.getOwner((Element)formalProperty);
+		//block added to manage formal properties with contract as owner
+		if(contractEntityUtil.isContract(owner)){
+			owner = (Class)entityUtil.getOwner(owner);
+		}
+		return entityUtil.getUmlPorts(owner);		
+	}
+
+	@Override
+	public Set<?> getOwnerVariables(Object formalProperty) {
+		Class owner = (Class)entityUtil.getOwner((Element)formalProperty);
+		//block added to manage formal properties with contract as owner
+		if(contractEntityUtil.isContract(owner)){
+			owner = (Class)entityUtil.getOwner(owner);
+		}
+		return entityUtil.getAttributes(owner);
+	}
+
+	@Override
+	public String[] getEnumValuesFromOwnerAttributes(Object formalProperty) {
+		Class owner = (Class)entityUtil.getOwner((Element)formalProperty);
+		//block added to manage formal properties with contract as owner
+		if(contractEntityUtil.isContract(owner)){
+			owner = (Class)entityUtil.getOwner(owner);
+		}
+		//return entityUtil.getEnumValuesFromComponentPorts(element);	
+		return entityUtil.getEnumValuesFromComponentAttributes(owner);
+	}
+
+
+
+	@Override
+	public String[] getSubComponentsName(Object constraint) {
+		return entityUtil.getSubComponentsName(constraint);
+	}
+
+
+
+	@Override
+	public Object getSubComponent(Object constraint, String subCompName) {
+		return entityUtil.getSubComponent(constraint, subCompName);
+	}
+
+
+	@Override
+	public String getConstraintQualifiedName(Object constraint) {
+		return entityUtil.getQualifiedName((NamedElement)constraint);
+	}
+
+
+
+	@Override
+	public String getComponentQualifiedName(Object component) {
+		return entityUtil.getQualifiedName((NamedElement)component);
+	}
+
+
+
+	@Override
+	public String[] getEnumValuesFromOwnerPorts(Object port_or_parameter) {
+		Class owner = (Class)entityUtil.getOwner((Element)port_or_parameter);
+		if(contractEntityUtil.isContract(owner)){
+			owner = (Class)entityUtil.getOwner(owner);
+		}
+		return entityUtil.getEnumValuesFromComponentPorts(owner);	
+	}
 }
diff --git a/plugins/org.polarsys.chess.service/src/org/polarsys/chess/service/internal/service/CHESSServiceFactory.java b/plugins/org.polarsys.chess.service/src/org/polarsys/chess/service/internal/service/CHESSServiceFactory.java
index 7df66f635e642f3d6ff0fb2f4fced5ad83704b27..76e3445ffd8a79131e5194f091afe0e9a3bb69b7 100644
--- a/plugins/org.polarsys.chess.service/src/org/polarsys/chess/service/internal/service/CHESSServiceFactory.java
+++ b/plugins/org.polarsys.chess.service/src/org/polarsys/chess/service/internal/service/CHESSServiceFactory.java
@@ -17,13 +17,11 @@
 package org.polarsys.chess.service.internal.service;
 
 import org.eclipse.papyrus.editor.PapyrusMultiDiagramEditor;
-import org.eclipse.papyrus.infra.core.resource.ModelSet;
 import org.eclipse.papyrus.infra.core.sasheditor.editor.ISashWindowsContainer;
 import org.eclipse.papyrus.infra.core.services.IServiceFactory;
 import org.eclipse.papyrus.infra.core.services.ServiceException;
 import org.eclipse.papyrus.infra.core.services.ServicesRegistry;
 import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.IWindowListener;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PlatformUI;