diff --git a/bundles/org.eclipse.e4.tools.emf.editor3x/src/org/eclipse/e4/tools/emf/editor3x/RedoAction.java b/bundles/org.eclipse.e4.tools.emf.editor3x/src/org/eclipse/e4/tools/emf/editor3x/RedoAction.java
index 4a1a5f5..09ccb0b 100644
--- a/bundles/org.eclipse.e4.tools.emf.editor3x/src/org/eclipse/e4/tools/emf/editor3x/RedoAction.java
+++ b/bundles/org.eclipse.e4.tools.emf.editor3x/src/org/eclipse/e4/tools/emf/editor3x/RedoAction.java
@@ -11,6 +11,7 @@
 package org.eclipse.e4.tools.emf.editor3x;
 
 import org.eclipse.e4.tools.emf.ui.common.IModelResource;
+import org.eclipse.emf.common.command.Command;
 import org.eclipse.jface.action.Action;
 
 public class RedoAction extends Action {
@@ -45,9 +46,12 @@
 
 	private void update() {
 		if (resource.getEditingDomain().getCommandStack().canRedo()) {
+
+			Command redoCommand = resource.getEditingDomain().getCommandStack().getRedoCommand();
+			String label = UndoAction.getCommandLabel(redoCommand);
+
 			setText(Messages.RedoAction_Redo + " " //$NON-NLS-1$
-				+ resource.getEditingDomain().getCommandStack()
-					.getRedoCommand().getLabel());
+					+ label);
 			setEnabled(true);
 		} else {
 			setText(Messages.RedoAction_Redo);
diff --git a/bundles/org.eclipse.e4.tools.emf.editor3x/src/org/eclipse/e4/tools/emf/editor3x/UndoAction.java b/bundles/org.eclipse.e4.tools.emf.editor3x/src/org/eclipse/e4/tools/emf/editor3x/UndoAction.java
index 28eebf0..26313dd 100644
--- a/bundles/org.eclipse.e4.tools.emf.editor3x/src/org/eclipse/e4/tools/emf/editor3x/UndoAction.java
+++ b/bundles/org.eclipse.e4.tools.emf.editor3x/src/org/eclipse/e4/tools/emf/editor3x/UndoAction.java
@@ -10,7 +10,15 @@
  ******************************************************************************/
 package org.eclipse.e4.tools.emf.editor3x;
 
+import java.util.Collection;
+
 import org.eclipse.e4.tools.emf.ui.common.IModelResource;
+import org.eclipse.e4.ui.model.application.ui.MUILabel;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.edit.command.AddCommand;
+import org.eclipse.emf.edit.command.DeleteCommand;
+import org.eclipse.emf.edit.command.SetCommand;
 import org.eclipse.jface.action.Action;
 
 public class UndoAction extends Action {
@@ -41,11 +49,15 @@
 		}
 	}
 
+	private static int cpt = 0;
+
 	private void update() {
 		if (resource.getEditingDomain().getCommandStack().canUndo()) {
+			Command undoCommand = resource.getEditingDomain().getCommandStack()
+					.getUndoCommand();
+			String label = getCommandLabel(undoCommand);
 			setText(Messages.UndoAction_Undo + " " //$NON-NLS-1$
-				+ resource.getEditingDomain().getCommandStack()
-					.getUndoCommand().getLabel());
+					+ label);
 			setEnabled(true);
 		} else {
 			setText(Messages.UndoAction_Undo);
@@ -54,6 +66,47 @@
 	}
 
 	/**
+	 * Compute a command label depending on the command for undo/redo label.
+	 *
+	 * For instance : Add Trimmedwindow or Delete 5 objects
+	 *
+	 * @param cmd
+	 * @return a description string for the command
+	 */
+	public static String getCommandLabel(Command cmd) {
+
+		if (cmd instanceof SetCommand) {
+			SetCommand sc = (SetCommand) cmd;
+			return sc.getLabel() + " " + sc.getFeature().getName() + " on " + sc.getOwner().eClass().getName(); //$NON-NLS-1$ //$NON-NLS-2$
+		} else if (cmd instanceof AddCommand) {
+			AddCommand ac = (AddCommand) cmd;
+			return ac.getLabel() + " " + getFirstClassName(ac.getCollection()); //$NON-NLS-1$
+		} else if (cmd instanceof DeleteCommand) {
+			DeleteCommand dc = (DeleteCommand) cmd;
+			Collection<?> deleted = dc.getCollection();
+			if (deleted.size() == 1) {
+				return dc.getLabel() + " " + getFirstClassName(deleted); //$NON-NLS-1$
+			}
+			return dc.getLabel() + " " + dc.getCollection().size() + " Objects"; //$NON-NLS-1$ //$NON-NLS-2$
+		}
+		return cmd.getLabel();
+	}
+
+	/**
+	 * Get the eClassname or empty string of the first element in the collection
+	 *
+	 * @param c
+	 * @return name of classname if object is an EObject else an empty string
+	 */
+	private static String getFirstClassName(Collection<?> c)
+	{
+		Object o = c.iterator().next();
+		String clname = (o instanceof EObject) ? ((EObject) o).eClass().getName() : ""; //$NON-NLS-1$
+		String dname = (o instanceof MUILabel) ? ((MUILabel) o).getLabel() : ""; //$NON-NLS-1$
+		return clname + " " + (dname == null ? "" : dname); //$NON-NLS-1$ //$NON-NLS-2$
+	}
+
+	/**
 	 * Clean up
 	 */
 	public void dispose() {
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.java
index 8346eb0..86893c8 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.java
@@ -110,6 +110,7 @@
 	public String ModelTooling_Common_TabDefault;
 	public String ModelTooling_Common_TabSupplementary;
 	public String ModelEditor_AddChild;
+	public String ModelEditor_Move;
 	public String ModelTooling_Common_RuntimeContributionInstance;
 	public String ModelTooling_Common_RuntimeWidgetTree;
 
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.properties b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.properties
index c45792d..fde97d5 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.properties
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.properties
@@ -44,6 +44,7 @@
 ModelTooling_Common_TabDefault=Default
 ModelTooling_Common_TabSupplementary=Supplementary
 ModelEditor_AddChild=Add child
+ModelEditor_Move=Move
 ModelTooling_Common_RuntimeContributionInstance=Contrib. Instance
 ModelTooling_Common_RuntimeWidgetTree=Widget Tree
 
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java
index 92d1433..ac05f04 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010, 2017 BestSolution.at and others.
+ * Copyright (c) 2010, 2018 BestSolution.at and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -13,7 +13,8 @@
  * Steven Spungin <steven@spungin.tv> - Bug 396902, 431755, 431735, 424730, 424730, 391089, 437236, 437552, Ongoing
  * Maintenance
  * Simon Scholz <simon.scholz@vogella.com> - Bug 475365
- * Olivier Prouvost <olivier.prouvost@opcoach.com> - Bug 472706
+ * Olivier Prouvost <olivier.prouvost@opcoach.com> - Bug 472706, 429684
+ * Dmitry Spiridenok <d.spiridenok@gmail.com> - Bug 429684
  ******************************************************************************/
 package org.eclipse.e4.tools.emf.ui.internal.common;
 
@@ -157,6 +158,7 @@
 import org.eclipse.e4.ui.model.application.ui.MContext;
 import org.eclipse.e4.ui.model.application.ui.MElementContainer;
 import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.MUILabel;
 import org.eclipse.e4.ui.model.application.ui.advanced.impl.AdvancedPackageImpl;
 import org.eclipse.e4.ui.model.application.ui.basic.MPart;
 import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl;
@@ -1835,7 +1837,7 @@
 				}
 
 				if (feature != null && parent != null) {
-					final Command cmd = AddCommand.create(domain, parent, feature, data);
+					final Command cmd = createRemoveAddCommand(data, feature, parent, CommandParameter.NO_INDEX);
 					if (cmd.canExecute()) {
 						domain.getCommandStack().execute(cmd);
 						if (isLiveModel()) {
@@ -1877,7 +1879,7 @@
 				if (feature == FragmentPackageImpl.Literals.MODEL_FRAGMENTS__IMPORTS && parent != null) {
 					final MApplicationElement el = (MApplicationElement) EcoreUtil.create(((EObject) data).eClass());
 					el.setElementId(((MApplicationElement) data).getElementId());
-					final Command cmd = AddCommand.create(domain, parent, feature, el);
+					final Command cmd = createRemoveAddCommand(data, feature, parent, CommandParameter.NO_INDEX);
 					if (cmd.canExecute()) {
 						domain.getCommandStack().execute(cmd);
 					}
@@ -1908,7 +1910,7 @@
 							data = EcoreUtil.copy((EObject) data);
 						}
 
-						final Command cmd = AddCommand.create(domain, parent, feature, data, index);
+						final Command cmd = createRemoveAddCommand(data, feature, parent, index);
 						if (cmd.canExecute()) {
 							domain.getCommandStack().execute(cmd);
 							if (isLiveModel()) {
@@ -1926,6 +1928,58 @@
 			return false;
 		}
 
+		/**
+		 * Create an internal Compound command containing a Remove and a Add so as to
+		 * allow the Undo
+		 *
+		 * @param data
+		 *            the object to be dragged and dropped
+		 * @param destFeature
+		 *            the target feature in the model where data must be dropped
+		 * @param parent
+		 *            the destination parent
+		 * @param index
+		 *            the index in the parent list
+		 * @see bug #429684
+		 * @return the compound command
+		 */
+		private Command createRemoveAddCommand(Object data, EStructuralFeature destFeature, EObject parent, int index) {
+
+			// Remark : this code could be replaced by a MoveCommand, but unfortunately I
+			// could not make it working (its canExecute() method always returns false
+			// because it is not prepared (see canExecute())...)...
+
+			List<Command> listOfCommands = new ArrayList<>();
+			EStructuralFeature sourceFeature = null;
+			if (data instanceof EObject) {
+				sourceFeature = ((EObject) data).eContainmentFeature();
+			}
+			Command removeCommand = RemoveCommand.create(domain, ((EObject) data).eContainer(), sourceFeature, data);
+			if (removeCommand.canExecute()) {
+				listOfCommands.add(removeCommand);
+			}
+
+			Command addCommand = AddCommand.create(domain, parent, destFeature, data, index);
+			listOfCommands.add(addCommand);
+			CompoundCommand compoundCommand = new CompoundCommand(listOfCommands);
+			compoundCommand.setLabel(messages.ModelEditor_Move + " " + getObjectNameForCommand(data)); //$NON-NLS-1$
+			return compoundCommand;
+
+		}
+
+		/**
+		 * compute a valid name for the undo/redo/paste of move commands
+		 *
+		 * @param data
+		 *            the object concerned by the command
+		 * @return a representative string for the object or 'Object' if nothing found
+		 */
+		private String getObjectNameForCommand(Object data) {
+			String clname = (data instanceof EObject) ? ((EObject) data).eClass().getName() : "Object"; //$NON-NLS-1$
+			String dname = (data instanceof MUILabel) ? ((MUILabel) data).getLabel() : ""; //$NON-NLS-1$
+			return clname + " " + dname; //$NON-NLS-1$
+		}
+
 		@Override
 		public boolean validateDrop(Object target, int operation, TransferData transferType) {
 			boolean rv = true;
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/AddonsEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/AddonsEditor.java
index 6390890..dd39f04 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/AddonsEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/AddonsEditor.java
@@ -116,7 +116,6 @@
 		}
 
 		getMaster().setValue(object);
-		context.updateModels();
 		return composite;
 	}
 
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/DynamicMenuContributionEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/DynamicMenuContributionEditor.java
index be0e4f9..e96b68e 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/DynamicMenuContributionEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/DynamicMenuContributionEditor.java
@@ -109,7 +109,6 @@
 		}
 
 		getMaster().setValue(object);
-		context.updateModels();
 
 		return composite;
 	}
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/HandlerEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/HandlerEditor.java
index c75e11f..43470ee 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/HandlerEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/HandlerEditor.java
@@ -119,7 +119,6 @@
 		}
 
 		getMaster().setValue(object);
-		context.updateModels();
 		return composite;
 	}
 
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ImperativeExpressionEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ImperativeExpressionEditor.java
index 18d5f6a..58d8a1f 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ImperativeExpressionEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ImperativeExpressionEditor.java
@@ -78,7 +78,6 @@
 			createForm(composite, context, getMaster());
 		}
 		getMaster().setValue(object);
-		context.updateModels();
 
 		return composite;
 	}
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/MenuItemEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/MenuItemEditor.java
index 9aede68..1c12475 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/MenuItemEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/MenuItemEditor.java
@@ -147,7 +147,6 @@
 		getMaster().setValue(object);
 		enableIdGenerator(UiPackageImpl.Literals.UI_LABEL__LABEL,
 				ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID, null);
-		context.updateModels();
 
 		return composite;
 	}
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartDescriptorEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartDescriptorEditor.java
index d3bbd10..7c302e1 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartDescriptorEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartDescriptorEditor.java
@@ -141,7 +141,6 @@
 		getMaster().setValue(object);
 		enableIdGenerator(UiPackageImpl.Literals.UI_LABEL__LABEL,
 				ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID, null);
-		context.updateModels();
 		return composite;
 	}
 
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartEditor.java
index c42d026..e568cee 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartEditor.java
@@ -143,7 +143,6 @@
 		getMaster().setValue(object);
 		enableIdGenerator(UiPackageImpl.Literals.UI_LABEL__LABEL,
 				ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID, null);
-		context.updateModels();
 
 		return composite;
 	}
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ToolItemEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ToolItemEditor.java
index e37ecb6..4831fb7 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ToolItemEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ToolItemEditor.java
@@ -129,7 +129,6 @@
 
 		getMaster().setValue(object);
 		enableIdGenerator(UiPackageImpl.Literals.UI_LABEL__LABEL, ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID, null);
-		context.updateModels();
 
 		return composite;
 	}
