diff --git a/cdo/bundles/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/importer/ModelImporter.java b/cdo/bundles/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/importer/ModelImporter.java
index 9b1749d..3837351 100755
--- a/cdo/bundles/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/importer/ModelImporter.java
+++ b/cdo/bundles/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/importer/ModelImporter.java
@@ -26,7 +26,6 @@
 import org.eclipse.core.runtime.SubMonitor;
 import org.eclipse.emf.cdo.explorer.checkouts.CDOCheckout;
 import org.eclipse.emf.cdo.transaction.CDOTransaction;
-import org.eclipse.emf.cdo.util.CommitException;
 import org.eclipse.emf.common.util.BasicDiagnostic;
 import org.eclipse.emf.common.util.Diagnostic;
 import org.eclipse.emf.common.util.DiagnosticChain;
@@ -132,23 +131,21 @@
 				result.add(new BasicDiagnostic(IStatus.ERROR, Activator.PLUGIN_ID, 0, Messages.ModelImporter_5, new Object[] { e }));
 			}
 
-			// can't create CDO-style proxies until the resources have been committed, because only then
-			// will the objects be persisted and have OIDs to reference
-			boolean hasSubUnits = false;
-			for (IModelTransferNode model : configuration.getModelsToTransfer()) {
-				if (createSubUnitProxies(model, mapping.getMapping(model), transaction, sub.newChild(1))) {
-					hasSubUnits = true;
-				}
-			}
-			if (hasSubUnits) {
-				try {
-					transaction.commit(sub.newChild(1));
-				} catch (CommitException e) {
-					result.add(new BasicDiagnostic(IStatus.ERROR, Activator.PLUGIN_ID, 0, Messages.ModelImporter_5, new Object[] { e }));
-				}
-			} else {
-				sub.worked(1); // nothing to commit but still count progress
-			}
+			// // can't create CDO-style proxies until the resources have been committed, because only then
+			// // will the objects be persisted and have OIDs to reference
+			// boolean hasSubUnits = false;
+			// for (IModelTransferNode model : configuration.getModelsToTransfer()) {
+			// if (createSubUnitProxies(model, mapping.getMapping(model), transaction, sub.newChild(1))) {
+			// hasSubUnits = true;
+			// }
+			// }
+			// if (hasSubUnits) {
+			// try {
+			// transaction.commit(sub.newChild(1));
+			// } catch (CommitException e) {
+			// result.add(new BasicDiagnostic(IStatus.ERROR, Activator.PLUGIN_ID, 0, Messages.ModelImporter_5, new Object[] { e }));
+			// }
+			// }
 
 			try {
 				saveNonimportedModels(mapping, transaction, sub.newChild(1));
