diff --git a/plugins/contracts/org.polarsys.chess.contracts.profile/src/org/polarsys/chess/contracts/profile/chesscontract/util/ContractEntityUtil.java b/plugins/contracts/org.polarsys.chess.contracts.profile/src/org/polarsys/chess/contracts/profile/chesscontract/util/ContractEntityUtil.java
index 96987186c5c3bac51c83e9fae1c2ced0de93563a..41196c667ef4ae09ce643f8dd5c94fc247a4351c 100644
--- a/plugins/contracts/org.polarsys.chess.contracts.profile/src/org/polarsys/chess/contracts/profile/chesscontract/util/ContractEntityUtil.java
+++ b/plugins/contracts/org.polarsys.chess.contracts.profile/src/org/polarsys/chess/contracts/profile/chesscontract/util/ContractEntityUtil.java
@@ -87,7 +87,14 @@ public class ContractEntityUtil {
 		Stereotype contractStereotype = UMLUtil.getAppliedStereotype(umlContract, Constants.CONTRACT, false);
 		return (Contract) umlContract.getStereotypeApplication(contractStereotype);
 	}
-
+	
+	public String getContractQualifiedName(Class contract) {
+		if (contract != null) {
+			return ( contract).getQualifiedName();
+		}
+		return null;
+	}
+	
 	public String getAssumeStrFromUmlContract(Class umlContract) {
 		FormalProperty assumeFormalProperty = getAssumeFromUmlContract(umlContract);
 		return getPropertyStr(assumeFormalProperty);
@@ -229,6 +236,13 @@ public class ContractEntityUtil {
 		contract.setGuarantee(guaranteeFormalProperty);
 	}
 
+	public String getFormalPropertyName(Object formalProperty) {
+		if (formalProperty != null) {
+			return ((Constraint) formalProperty).getQualifiedName();
+		}
+		return null;
+	}
+	
 	public FormalProperty getFormalProperty(Constraint umlConstraint) {
 		Stereotype formalPropertyStereotype = UMLUtil.getAppliedStereotype(umlConstraint, Constants.FORMAL_PROP, false);
 		return (FormalProperty) umlConstraint.getStereotypeApplication(formalPropertyStereotype);
@@ -330,7 +344,7 @@ public class ContractEntityUtil {
 		if (entityUtil.isBlock(umlElement) || entityUtil.isCompType(umlElement)
 				|| entityUtil.isComponentImplementation(umlElement)) {
 			for (Constraint umlConstraint : ((Class) umlElement).getOwnedRules()) {
-				if (isDelegationConstriants(umlConstraint)) {
+				if (isDelegationConstraints(umlConstraint)) {
 					constraints.add((Constraint) umlConstraint);
 				}
 			}
@@ -347,7 +361,7 @@ public class ContractEntityUtil {
 		return UMLUtil.getAppliedStereotype(umlProperty, Constants.CONTRACT_PROP, false) != null;
 	}
 
-	public boolean isDelegationConstriants(Element umlProperty) {
+	public boolean isDelegationConstraints(Element umlProperty) {
 		return UMLUtil.getAppliedStereotype(umlProperty, Constants.DELEGATION_CONST, false) != 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 4d3312567591fe08b75c0ce94e28cfc789fd911a..a08a5e19963a4205feac1ed163991e080135a95c 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
@@ -17,12 +17,13 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Set;
 
-import org.apache.log4j.Logger;
+
 import org.eclipse.emf.common.util.BasicEList;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.common.util.TreeIterator;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.util.EcoreUtil;
+import  org.eclipse.uml2.uml.NamedElement;
 //import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.transaction.RecordingCommand;
 import org.eclipse.emf.transaction.TransactionalEditingDomain;
@@ -62,7 +63,7 @@ import org.eclipse.uml2.uml.Vertex;
  */
 public class EntityUtil {
 
-	private static final Logger logger = Logger.getLogger(EntityUtil.class);
+	//private static final Logger logger = Logger.getLogger(EntityUtil.class);
 	
 	private static final String BLOCK = "SysML::Blocks::Block";
 	private static final String SYSTEM = "CHESSContract::System";
@@ -73,6 +74,7 @@ public class EntityUtil {
 	private static final String COMP_IMPL = "CHESS::ComponentModel::ComponentImplementation";
 
 	private static final String INTEGER_TYPE = "PrimitiveTypes::Integer";
+	private static final String STRING_TYPE = "PrimitiveTypes::String";
 	private static final String REAL_TYPE = "PrimitiveTypes::Real";	
 	private static final String BOOLEAN_TYPE = "PrimitiveTypes::Boolean";
 	
@@ -82,7 +84,7 @@ public class EntityUtil {
 	private static final String MARTE_REAL_TYPE = "MARTE_Library::MARTE_PrimitivesTypes::Real";
 	private static final String MARTE_INTEGER_TYPE = "MARTE_Library::MARTE_PrimitivesTypes::Integer";
 	
-	private static final String FAULTY_STATE_MACHINE = "CHESS::Dependability::ThreatsPropagation";
+	private static final String FAULTY_STATE_MACHINE = "CHESS::Dependability::ThreatsPropagation::ErrorModel";
 	
 	//not yet used
 	//private static final String STRING_TYPE = "PrimitiveTypes::String";
@@ -99,6 +101,27 @@ public class EntityUtil {
 		return entityUtil;
 	}
 
+	public Object getSubComponent(Object constraint, String componentName) {
+		Element element = ((Constraint) constraint).getOwner();
+
+		for (Property umlProperty : getSubComponentsInstances((Class) element)) {
+			if (umlProperty.getName().compareTo(componentName) == 0) {
+				return getUmlType(umlProperty);
+			}
+		}
+
+		return null;
+	}
+
+	
+	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);
+
+	}
+	
 	public String getComponentID(Object umlComponent) {
 
 		if (
@@ -114,6 +137,10 @@ public class EntityUtil {
 		return null;
 	}
 
+	public String getQualifiedName(NamedElement element) {
+		return ((NamedElement) element).getQualifiedName();
+	}
+	
 	public String getComponentName(Object umlComponent) {
 
 		if (
@@ -167,6 +194,23 @@ public class EntityUtil {
 		return subComponentsNames;
 	}
 
+	public Set<Port> getUmlPorts(Element umlElement) {
+		Set<Port> portsArr = new HashSet<Port>();
+		if (isBlock(umlElement)) {
+			portsArr.addAll(getUmlPortsFromClass((Class) umlElement));
+		}
+
+		if (isCompType(umlElement) || (isComponentImplementation(umlElement))) {
+			portsArr.addAll(getUmlPortsFromComponent((Component) umlElement));
+		}
+
+		if (isComponentInstance(umlElement)) {
+			portsArr.addAll(getUmlPorts(getUmlType((Property) umlElement)));
+		}
+		return portsArr;
+
+	}
+	
 	public Set<Port> getUmlPorts(Element umlElement, int portDirection) {
 		Set<Port> portsArr = new HashSet<Port>();
 		if (isBlock(umlElement)) {
@@ -211,6 +255,14 @@ public class EntityUtil {
 		}
 	}
 
+	public boolean isInOutPort(Element umlPort) {
+		if (getPortDirection(umlPort) == FlowDirection.INOUT_VALUE) {
+			return true;
+		} else {
+			return false;
+		}
+	}
+	
 	public boolean isOutputPort(Element umlPort) {
 		if (getPortDirection(umlPort) == FlowDirection.OUT_VALUE) {
 			return true;
@@ -241,6 +293,15 @@ public class EntityUtil {
 		}
 		return ports;
 	}
+	
+	private Set<Port> getUmlPortsFromComponent(Component umlComponent) {
+		Set<Port> ports = new HashSet<Port>();
+
+		for (Port umlPort : umlComponent.getOwnedPorts()) {
+			ports.add(umlPort);
+		}
+		return ports;
+	}
 
 	public org.eclipse.uml2.uml.Package getToPackage(org.eclipse.uml2.uml.Element umlElememt) {
 
@@ -299,7 +360,6 @@ public class EntityUtil {
 	}
 
 	public boolean isBooleanAttribute(Property umlProperty) {
-		logger.debug("isBooleanAttribute");
 		return isBooleanType(umlProperty.getType());
 	}
 
@@ -353,6 +413,12 @@ public class EntityUtil {
 		return false;
 	}
 
+	public boolean isStringAttribute(Property umlProperty) {
+		return isStringType(umlProperty.getType());
+	}
+	
+	
+
 	public boolean isRealAttribute(Property umlProperty) {
 		return isRealType(umlProperty.getType());
 	}
@@ -502,6 +568,14 @@ public class EntityUtil {
 		}
 		return booleanAttributesNames;
 	}
+	
+	public Set<String> getAttributesNamesExceptsPorts(Element umlElement) {
+		Set<String> booleanAttributesNames = new HashSet<String>();
+		for (Property umlProperty : getAttributesExceptPorts(umlElement)) {
+			booleanAttributesNames.add(umlProperty.getName());
+		}
+		return booleanAttributesNames;
+	}
 
 	public Set<Property> getBooleanAttributes(Element umlElement) {
 		Set<Property> booleanAttributes = new HashSet<Property>();
@@ -723,6 +797,24 @@ public class EntityUtil {
 		
 		return stateMachines;
 	}
+	
+public Set<StateMachine> getNominalStateMachines(Class umlSelectedComponent){
+		
+		Set<StateMachine> stateMachines = new HashSet<StateMachine>();
+		
+		if (umlSelectedComponent != null) {
+			EList<Behavior> behaviours = umlSelectedComponent.getOwnedBehaviors();
+			if (behaviours != null) {				
+				for (Class c : behaviours) {
+					if (isNominalStateMachine(c)) {
+						stateMachines.add((StateMachine)c);
+					}
+				}
+			}
+		}
+		
+		return stateMachines;
+	}
 
 	private <T> Collection<T> iterator2Collection(final Iterator<T> iter) {
 		ArrayList<T> list = new ArrayList<T>();
@@ -745,16 +837,11 @@ Region region = stateMachine.getRegions().get(0);
 	
 	public boolean isInitialState(Vertex state){
 		
-		boolean isInitialState = false;
-		boolean isPseudoState = (state instanceof Pseudostate);
-		if(isPseudoState){
-			
-			System.out.println("kind: "+((Pseudostate)state).getKind());
-		isInitialState = ((Pseudostate)state).getKind().equals(PseudostateKind.INITIAL_LITERAL);
-		}
-		System.out.println("state name: "+state.getName());
-		System.out.println("isPseudoState: "+isPseudoState);
-		System.out.println("isInitialState: "+isInitialState);
+		//boolean isInitialState = false;
+		//boolean isPseudoState = (state instanceof Pseudostate);
+		//if(isPseudoState){			
+		//isInitialState = ((Pseudostate)state).getKind().equals(PseudostateKind.INITIAL_LITERAL);
+		//}
 		
 		return (state instanceof Pseudostate)&&((Pseudostate)state).getKind().equals(PseudostateKind.INITIAL_LITERAL);
 	}
@@ -781,11 +868,15 @@ Region region = stateMachine.getRegions().get(0);
 				return names;
 			}
 	
-	public EList<String> getTransitionNameList(EList<Transition> transitions){
+	public EList<String> getTransitionNameList(EList<Transition> transitions) throws Exception{
 	EList<String> transNames = new BasicEList<String>();
 	for(Transition trans : transitions){
+		if(trans.getName()==null){
+			throw new Exception("In "+trans.containingStateMachine().getQualifiedName()+", one transition has name == null.");
+		}
 		transNames.add(trans.getName());
 	}
+	
 	return transNames;
 	}
 	
@@ -908,10 +999,14 @@ Region region = stateMachine.getRegions().get(0);
 		return null;
 	}
 
-	public String getPortName(Port event) {		
-		return event.getName();
+	public String getPortName(Port port) {		
+		return port.getName();
 	}
 
+	public String getAttributeName(Property attribute) {		
+		return attribute.getName();
+	}
+	
 	public boolean isTransitionWithNoEvent(Transition transition) {
 		return !((transition.getTriggers()!=null)&&(transition.getTriggers().size()!=0)&&(transition.getTriggers().get(0).getPorts()!=null)&&transition.getTriggers().get(0).getPorts().size()!=0);
 		
@@ -931,6 +1026,13 @@ Region region = stateMachine.getRegions().get(0);
 		return false;
 	}
 
+	private boolean isStringType(Type type) {
+		if (type != null) {
+			return (type.getQualifiedName().compareTo(STRING_TYPE) == 0);
+		}
+		return false;
+	}
+	
 	public Collection<? extends Port> getUmlPortsExceptEvents(Element umlElement, int portDirection) {
 		
 		if (isComponentInstance(umlElement)) {
@@ -974,11 +1076,11 @@ Region region = stateMachine.getRegions().get(0);
 	}
 
 	public String getConditionExpression(Constraint condition) {	
-		System.out.println("getConditionExpression: "+condition);
-		System.out.println("condition.getSpecification(): "+condition.getSpecification());
 		if((condition.getSpecification() instanceof OpaqueExpression)&&(condition.getSpecification() !=null)&&((OpaqueExpression)condition.getSpecification()).getBodies()!=null){
 		return ((OpaqueExpression)condition.getSpecification()).getBodies().get(0);
 		}
 		return null;
 	}
+
+	
 }