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 61a41591b36004f9f1e18f8429f7c483bfd5e3c9..3b85090064955648cc39c4765322920f53dd66a6 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
@@ -170,7 +170,13 @@ public class CustomContractEditorTab extends ContractEditorTab {
 	 */
 	@Override
 	public void createAssumption(Object contract) {
+		TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(contract);
+		domain.getCommandStack().execute(new RecordingCommand(domain) {
+
+			@Override
+			protected void doExecute() {
 		contractEntityUtil.createAssumptionToUmlContract((Class) contract);
+			}});
 	}
 
 	/*
@@ -207,7 +213,13 @@ public class CustomContractEditorTab extends ContractEditorTab {
 	 */
 	@Override
 	public void createGuarantee(Object contract) {
+		TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(contract);
+		domain.getCommandStack().execute(new RecordingCommand(domain) {
+
+			@Override
+			protected void doExecute() {
 		contractEntityUtil.createGuaranteeToUmlContract((Class) contract);
+			}});
 	}
 
 	/*
@@ -243,8 +255,15 @@ public class CustomContractEditorTab extends ContractEditorTab {
 	 */
 	@Override
 	public void guaranteeEditorchanged(Object contract, String textChanged) {
+		TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(contract);
+		domain.getCommandStack().execute(new RecordingCommand(domain) {
+
+			@Override
+			protected void doExecute() {
 		contractEntityUtil.setTextToGuaranteeOrCreateGuarantee(textChanged, (Class) contract);
-	}
+			}
+		});
+			}
 
 	/*
 	 * (non-Javadoc)
@@ -255,7 +274,14 @@ public class CustomContractEditorTab extends ContractEditorTab {
 	 */
 	@Override
 	public void assumptionEditorchanged(Object contract, String textChanged) {
+		TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(contract);
+		domain.getCommandStack().execute(new RecordingCommand(domain) {
+
+			@Override
+			protected void doExecute() {
 		contractEntityUtil.setTextToAssumeOrCreateAssume(textChanged, (Class) contract);
+			}
+		});
 	}
 
 	/*
@@ -343,7 +369,13 @@ public class CustomContractEditorTab extends ContractEditorTab {
 	 */
 	@Override
 	public void createContractProperty(Object component, String propertyName) {
+		TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(component);
+		domain.getCommandStack().execute(new RecordingCommand(domain) {
+
+			@Override
+			protected void doExecute() {
 		contractEntityUtil.createContractPropertyToUmlComponent((Class) component, propertyName);
+			}});
 	}
 
 	/**
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 ed40c81110e7de588f5c09e570c1d5cbd85a4970..4d8d8e5be21edfd37db3fbebd8fd05c3eb0e6fbe 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
@@ -141,7 +141,13 @@ public class CustomContractEditorView extends ContractEditorView {
 
 	@Override
 	public void createAssumption(Object contract) {
+		TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(contract);
+		domain.getCommandStack().execute(new RecordingCommand(domain) {
+
+			@Override
+			protected void doExecute() {
 		contractEntityUtil.createAssumptionToUmlContract((Class) contract);
+			}});
 	}
 
 	@Override
@@ -163,7 +169,13 @@ public class CustomContractEditorView extends ContractEditorView {
 
 	@Override
 	public void createGuarantee(Object contract) {
+		TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(contract);
+		domain.getCommandStack().execute(new RecordingCommand(domain) {
+
+			@Override
+			protected void doExecute() {
 		contractEntityUtil.createGuaranteeToUmlContract((Class) contract);
+			}});
 	}
 
 	@Override
@@ -185,12 +197,26 @@ public class CustomContractEditorView extends ContractEditorView {
 
 	@Override
 	public void guaranteeEditorchanged(Object contract, String textChanged) {
+		TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(contract);
+		domain.getCommandStack().execute(new RecordingCommand(domain) {
+
+			@Override
+			protected void doExecute() {
 		contractEntityUtil.setTextToGuaranteeOrCreateGuarantee(textChanged, (Class) contract);
+			}
+		});
 	}
 
 	@Override
 	public void assumptionEditorchanged(Object contract, String textChanged) {
+		TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(contract);
+		domain.getCommandStack().execute(new RecordingCommand(domain) {
+
+			@Override
+			protected void doExecute() {
 		contractEntityUtil.setTextToAssumeOrCreateAssume(textChanged, (Class) contract);
+			}
+		});
 	}
 
 	private Constraint selectProperty(Object contract) {
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 e71a0b9e3b1e750590dbfe81e068dd828140b9c9..ea37049ecc44ed3036d046e412b5b19d661651f0 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
@@ -11,6 +11,9 @@
 package org.polarsys.chess.constraints.constraintEditor;
 
 import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.emf.transaction.util.TransactionUtil;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.uml2.uml.Constraint;
 import org.polarsys.chess.contracts.profile.chesscontract.util.EntityUtil;
@@ -66,7 +69,12 @@ public class CustomConstraintEditorTab extends ConstraintEditorTab {
 	 */
 	@Override
 	public void constraintEditorchanged(Object constraint, String textChanged) {
+		TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(constraint);
+		domain.getCommandStack().execute(new RecordingCommand(domain) {
+		@Override
+		protected void doExecute() {
 		entityUtil.setTextInUMLConstraint((Constraint) constraint, textChanged, "OCRA");
+		}});
 	}
 
 	/*
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 592295a22c0b19a3823063c63e7b78d3c206a296..d395109dabdc5e30f96c5afe6a223e0227804892 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
@@ -11,6 +11,9 @@
 package org.polarsys.chess.properties.propertyEditor;
 
 import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.emf.transaction.util.TransactionUtil;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.uml2.uml.Constraint;
 import org.polarsys.chess.contracts.profile.chesscontract.util.EntityUtil;
@@ -51,8 +54,12 @@ public class CustomPropertyEditorTab extends PropertyEditorTab {
 
 	@Override
 	public void propertyEditorchanged(Object property, String textChanged) {
-		
+		TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(property);
+		domain.getCommandStack().execute(new RecordingCommand(domain) {
+		@Override
+		protected void doExecute() {
 		entityUtil.setTextInUMLConstraint((Constraint) property, textChanged, "OCRA");
+		}});
 	}
 
 	public String getStrFromProperty(Object property) {