diff --git a/bundles/org.eclipse.emf.ecp.view.table.ui.rcp/src/org/eclipse/emf/ecp/view/spi/table/ui/rcp/TableControlDetailDialogRCPRenderer.java b/bundles/org.eclipse.emf.ecp.view.table.ui.rcp/src/org/eclipse/emf/ecp/view/spi/table/ui/rcp/TableControlDetailDialogRCPRenderer.java
index c49c85a..12a4141 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.ui.rcp/src/org/eclipse/emf/ecp/view/spi/table/ui/rcp/TableControlDetailDialogRCPRenderer.java
+++ b/bundles/org.eclipse.emf.ecp.view.table.ui.rcp/src/org/eclipse/emf/ecp/view/spi/table/ui/rcp/TableControlDetailDialogRCPRenderer.java
@@ -42,6 +42,9 @@
  *
  */
 public class TableControlDetailDialogRCPRenderer extends TableControlDetailDialogSWTRenderer {
+
+	private CutCopyPasteListener cutCopyPasteListener;
+
 	/**
 	 * Default constructor.
 	 *
@@ -89,7 +92,7 @@
 				final EditingDomain editingDomain = getEditingDomain(getViewModelContext().getDomainModel());
 				final Setting setting = getEMFFormsDatabinding().getSetting(getDMRToMultiReference(),
 					getViewModelContext().getDomainModel());
-				TableControlRCPRenderer.enableCutCopyPaste(tableViewer, editingDomain, setting);
+				cutCopyPasteListener = TableControlRCPRenderer.enableCutCopyPaste(tableViewer, editingDomain, setting);
 			} catch (final DatabindingFailedException ex) {
 				getReportService().report(new AbstractReport(ex, "Enabling Cut Copy Paste failed")); //$NON-NLS-1$
 			}
@@ -97,4 +100,12 @@
 		return control;
 	}
 
+	@Override
+	protected void rootDomainModelChanged() throws DatabindingFailedException {
+		super.rootDomainModelChanged();
+		final Setting setting = getEMFFormsDatabinding().getSetting(getDMRToMultiReference(),
+			getViewModelContext().getDomainModel());
+		cutCopyPasteListener.rootDomainModelChanged(setting);
+	}
+
 }
diff --git a/bundles/org.eclipse.emf.ecp.view.table.ui.rcp/src/org/eclipse/emf/ecp/view/spi/table/ui/rcp/TableControlDetailPanelRCPRenderer.java b/bundles/org.eclipse.emf.ecp.view.table.ui.rcp/src/org/eclipse/emf/ecp/view/spi/table/ui/rcp/TableControlDetailPanelRCPRenderer.java
index 4e4870d..9d8016d 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.ui.rcp/src/org/eclipse/emf/ecp/view/spi/table/ui/rcp/TableControlDetailPanelRCPRenderer.java
+++ b/bundles/org.eclipse.emf.ecp.view.table.ui.rcp/src/org/eclipse/emf/ecp/view/spi/table/ui/rcp/TableControlDetailPanelRCPRenderer.java
@@ -42,6 +42,9 @@
  *
  */
 public class TableControlDetailPanelRCPRenderer extends TableControlDetailPanelRenderer {
+
+	private CutCopyPasteListener cutCopyPasteListener;
+
 	/**
 	 * Default constructor.
 	 *
@@ -89,11 +92,19 @@
 				final EditingDomain editingDomain = getEditingDomain(getViewModelContext().getDomainModel());
 				final Setting setting = getEMFFormsDatabinding().getSetting(getDMRToMultiReference(),
 					getViewModelContext().getDomainModel());
-				TableControlRCPRenderer.enableCutCopyPaste(tableViewer, editingDomain, setting);
+				cutCopyPasteListener = TableControlRCPRenderer.enableCutCopyPaste(tableViewer, editingDomain, setting);
 			} catch (final DatabindingFailedException ex) {
 				getReportService().report(new AbstractReport(ex, "Enabling Cut Copy Paste failed")); //$NON-NLS-1$
 			}
 		}
 		return control;
 	}
+
+	@Override
+	protected void rootDomainModelChanged() throws DatabindingFailedException {
+		super.rootDomainModelChanged();
+		final Setting setting = getEMFFormsDatabinding().getSetting(getDMRToMultiReference(),
+			getViewModelContext().getDomainModel());
+		cutCopyPasteListener.rootDomainModelChanged(setting);
+	}
 }
diff --git a/bundles/org.eclipse.emf.ecp.view.table.ui.rcp/src/org/eclipse/emf/ecp/view/spi/table/ui/rcp/TableControlRCPRenderer.java b/bundles/org.eclipse.emf.ecp.view.table.ui.rcp/src/org/eclipse/emf/ecp/view/spi/table/ui/rcp/TableControlRCPRenderer.java
index 5163608..9b82a45 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.ui.rcp/src/org/eclipse/emf/ecp/view/spi/table/ui/rcp/TableControlRCPRenderer.java
+++ b/bundles/org.eclipse.emf.ecp.view.table.ui.rcp/src/org/eclipse/emf/ecp/view/spi/table/ui/rcp/TableControlRCPRenderer.java
@@ -44,7 +44,7 @@
  */
 public class TableControlRCPRenderer extends TableControlSWTRenderer {
 
-	private static CutCopyPasteListener cutCopyPasteListener;
+	private CutCopyPasteListener cutCopyPasteListener;
 
 	/**
 	 * Default constructor.
@@ -93,7 +93,7 @@
 				final EditingDomain editingDomain = getEditingDomain(getViewModelContext().getDomainModel());
 				final Setting setting = getEMFFormsDatabinding().getSetting(getDMRToMultiReference(),
 					getViewModelContext().getDomainModel());
-				enableCutCopyPaste(tableViewer, editingDomain, setting);
+				cutCopyPasteListener = enableCutCopyPaste(tableViewer, editingDomain, setting);
 			} catch (final DatabindingFailedException ex) {
 				getReportService().report(new AbstractReport(ex, "Enabling Cut Copy Paste failed")); //$NON-NLS-1$
 			}
@@ -107,13 +107,14 @@
 	 * @param tableViewer the {@link TableViewer}
 	 * @param editingDomain the {@link EditingDomain}
 	 * @param setting the {@link Setting} displayed in the table
+	 * @return the {@link CutCopyPasteListener} or <code>null</code>
 	 */
-	static void enableCutCopyPaste(AbstractTableViewer tableViewer, EditingDomain editingDomain,
+	static CutCopyPasteListener enableCutCopyPaste(AbstractTableViewer tableViewer, EditingDomain editingDomain,
 		Setting setting) {
 		if (!TableViewer.class.isInstance(tableViewer)) {
-			return;
+			return null;
 		}
-		cutCopyPasteListener = new CutCopyPasteListener((TableViewer) tableViewer, editingDomain, setting);
+		return new CutCopyPasteListener((TableViewer) tableViewer, editingDomain, setting);
 	}
 
 	@Override
@@ -122,7 +123,6 @@
 		final Setting setting = getEMFFormsDatabinding().getSetting(getDMRToMultiReference(),
 			getViewModelContext().getDomainModel());
 		cutCopyPasteListener.rootDomainModelChanged(setting);
-
 	}
 
 }
