diff --git a/plugins/org.eclipse.emf.edapt.migration.test/src/org/eclipse/emf/edapt/migration/test/MigrationTestSuite.java b/plugins/org.eclipse.emf.edapt.migration.test/src/org/eclipse/emf/edapt/migration/test/MigrationTestSuite.java
index 27d1995..283dc08 100644
--- a/plugins/org.eclipse.emf.edapt.migration.test/src/org/eclipse/emf/edapt/migration/test/MigrationTestSuite.java
+++ b/plugins/org.eclipse.emf.edapt.migration.test/src/org/eclipse/emf/edapt/migration/test/MigrationTestSuite.java
@@ -72,7 +72,7 @@
 
 	/**
 	 * Creates a {@link Test} which will be passed to {@link #addTest(Test)}.
-	 * 
+	 *
 	 * @param caseDefinition the {@link TestCaseDefinition}
 	 * @return the test to add
 	 */
@@ -112,7 +112,7 @@
 	}
 
 	/** Load the migrator from the history model. */
-	private Migrator loadMigrator() throws IOException {
+	protected Migrator loadMigrator() throws IOException {
 		final History history = loadHistory();
 		final Migrator migrator = new Migrator(history, loader);
 		return migrator;
diff --git a/plugins/org.eclipse.emf.edapt.migration.ui/src/org/eclipse/emf/edapt/migration/ui/MigrationLaunchConfigurationDelegate.java b/plugins/org.eclipse.emf.edapt.migration.ui/src/org/eclipse/emf/edapt/migration/ui/MigrationLaunchConfigurationDelegate.java
index 92131bd..159c6af 100644
--- a/plugins/org.eclipse.emf.edapt.migration.ui/src/org/eclipse/emf/edapt/migration/ui/MigrationLaunchConfigurationDelegate.java
+++ b/plugins/org.eclipse.emf.edapt.migration.ui/src/org/eclipse/emf/edapt/migration/ui/MigrationLaunchConfigurationDelegate.java
@@ -93,12 +93,11 @@
 	}
 
 	/** Get the model files from the launch configuration. */
-	@SuppressWarnings("unchecked")
 	private List<IFile> getModelFiles(ILaunchConfiguration configuration)
 		throws CoreException {
 		final List<IFile> files = new ArrayList<IFile>();
 		final List<String> modelURIs = configuration.getAttribute(MODELS.id(),
-			Collections.emptyList());
+			Collections.<String> emptyList());
 		for (final String modelURI : modelURIs) {
 			final IFile file = FileUtils.getFile(modelURI);
 			files.add(file);
@@ -110,7 +109,7 @@
 	@Override
 	public void launch(final ILaunchConfiguration configuration, String mode,
 		final ILaunch launch, final IProgressMonitor monitor)
-		throws CoreException {
+			throws CoreException {
 		final ILaunchManager launchManager = DebugPlugin.getDefault()
 			.getLaunchManager();
 		launchManager.addLaunchListener(new LaunchTerminationListener(
diff --git a/tests/org.eclipse.emf.edapt.tests/data/uuid/My.uuidbug b/tests/org.eclipse.emf.edapt.tests/data/uuid/My.uuidbug
new file mode 100644
index 0000000..b13e6e7
--- /dev/null
+++ b/tests/org.eclipse.emf.edapt.tests/data/uuid/My.uuidbug
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uuidBug:X xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:uuidBug="http://uuidBug.org/1.0" xmi:id="_PpP9sA6KEeWf8PYBnrK7MA">
+  <a xmi:id="_PpQkwA6KEeWf8PYBnrK7MA" name="a1"/>
+  <b xmi:id="_PpQkwQ6KEeWf8PYBnrK7MA" name="b1">
+    <a xmi:id="_PpQkwg6KEeWf8PYBnrK7MA" name="a2"/>
+  </b>
+</uuidBug:X>
diff --git a/tests/org.eclipse.emf.edapt.tests/data/uuid/_My.uuidbug b/tests/org.eclipse.emf.edapt.tests/data/uuid/_My.uuidbug
new file mode 100644
index 0000000..bc1126d
--- /dev/null
+++ b/tests/org.eclipse.emf.edapt.tests/data/uuid/_My.uuidbug
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uuidBug:X xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:uuidBug="http://uuidBug.org/2.0" xmi:id="_PpP9sA6KEeWf8PYBnrK7MA">
+  <a xmi:id="_PpQkwA6KEeWf8PYBnrK7MA" name="a1"/>
+  <b xmi:id="_PpQkwQ6KEeWf8PYBnrK7MA" name="b1">
+    <a xmi:id="_PpQkwg6KEeWf8PYBnrK7MA" name="a2"/>
+  </b>
+</uuidBug:X>
diff --git a/tests/org.eclipse.emf.edapt.tests/data/uuid/uuidBug.ecore b/tests/org.eclipse.emf.edapt.tests/data/uuid/uuidBug.ecore
new file mode 100644
index 0000000..8843bd1
--- /dev/null
+++ b/tests/org.eclipse.emf.edapt.tests/data/uuid/uuidBug.ecore
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="uuidBug" nsURI="http://uuidBug.org/2.0" nsPrefix="uuidBug">
+  <eClassifiers xsi:type="ecore:EClass" name="X">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="a" eType="#//A" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="b" eType="#//B" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="A">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="B">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="a" eType="#//A" containment="true"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/tests/org.eclipse.emf.edapt.tests/data/uuid/uuidBug.history b/tests/org.eclipse.emf.edapt.tests/data/uuid/uuidBug.history
new file mode 100644
index 0000000..be0ce24
--- /dev/null
+++ b/tests/org.eclipse.emf.edapt.tests/data/uuid/uuidBug.history
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<history:History xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:history="http://www.eclipse.org/emf/edapt/history/0.3">
+  <releases date="2015-06-09T11:32:42.587+0200">
+    <changes xsi:type="history:CompositeChange">
+      <changes xsi:type="history:Create" element="uuidBug.ecore#/">
+        <changes xsi:type="history:Set" element="uuidBug.ecore#/" featureName="name"
+            dataValue="uuidBug"/>
+        <changes xsi:type="history:Set" element="uuidBug.ecore#/" featureName="nsURI"
+            dataValue="http://uuidBug.org/1.0"/>
+        <changes xsi:type="history:Set" element="uuidBug.ecore#/" featureName="nsPrefix"
+            dataValue="uuidBug"/>
+      </changes>
+      <changes xsi:type="history:Create" target="uuidBug.ecore#/" referenceName="eClassifiers"
+          element="uuidBug.ecore#//X">
+        <changes xsi:type="history:Set" element="uuidBug.ecore#//X" featureName="name"
+            dataValue="X"/>
+      </changes>
+      <changes xsi:type="history:Create" target="uuidBug.ecore#/" referenceName="eClassifiers"
+          element="uuidBug.ecore#//A">
+        <changes xsi:type="history:Set" element="uuidBug.ecore#//A" featureName="name"
+            dataValue="A"/>
+      </changes>
+      <changes xsi:type="history:Create" target="uuidBug.ecore#//X" referenceName="eStructuralFeatures"
+          element="uuidBug.ecore#//X/a">
+        <changes xsi:type="history:Set" element="uuidBug.ecore#//X/a" featureName="name"
+            dataValue="a"/>
+        <changes xsi:type="history:Set" element="uuidBug.ecore#//X/a" featureName="containment"
+            dataValue="true" oldDataValue="false"/>
+        <changes xsi:type="history:Set" element="uuidBug.ecore#//X/a" featureName="eType"
+            referenceValue="uuidBug.ecore#//A"/>
+      </changes>
+      <changes xsi:type="history:Create" target="uuidBug.ecore#//A" referenceName="eStructuralFeatures"
+          element="uuidBug.ecore#//A/name">
+        <changes xsi:type="history:Set" element="uuidBug.ecore#//A/name" featureName="name"
+            dataValue="name"/>
+        <changes xsi:type="history:Set" element="uuidBug.ecore#//A/name" featureName="eType"
+            referenceValue="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </changes>
+      <changes xsi:type="history:Create" target="uuidBug.ecore#/" referenceName="eClassifiers"
+          element="uuidBug.ecore#//B">
+        <changes xsi:type="history:Set" element="uuidBug.ecore#//B" featureName="name"
+            dataValue="B"/>
+      </changes>
+      <changes xsi:type="history:Create" target="uuidBug.ecore#//X" referenceName="eStructuralFeatures"
+          element="uuidBug.ecore#//X/b">
+        <changes xsi:type="history:Set" element="uuidBug.ecore#//X/b" featureName="name"
+            dataValue="b"/>
+        <changes xsi:type="history:Set" element="uuidBug.ecore#//X/b" featureName="containment"
+            dataValue="true" oldDataValue="false"/>
+        <changes xsi:type="history:Set" element="uuidBug.ecore#//X/b" featureName="eType"
+            referenceValue="uuidBug.ecore#//B"/>
+      </changes>
+      <changes xsi:type="history:Create" target="uuidBug.ecore#//B" referenceName="eStructuralFeatures"
+          element="uuidBug.ecore#//B/name">
+        <changes xsi:type="history:Set" element="uuidBug.ecore#//B/name" featureName="name"
+            dataValue="name"/>
+        <changes xsi:type="history:Set" element="uuidBug.ecore#//B/name" featureName="eType"
+            referenceValue="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </changes>
+      <changes xsi:type="history:Create" target="uuidBug.ecore#//B" referenceName="eStructuralFeatures"
+          element="uuidBug.ecore#//B/a">
+        <changes xsi:type="history:Set" element="uuidBug.ecore#//B/a" featureName="name"
+            dataValue="a"/>
+        <changes xsi:type="history:Set" element="uuidBug.ecore#//B/a" featureName="containment"
+            dataValue="true" oldDataValue="false"/>
+        <changes xsi:type="history:Set" element="uuidBug.ecore#//B/a" featureName="eType"
+            referenceValue="uuidBug.ecore#//A"/>
+      </changes>
+    </changes>
+  </releases>
+  <releases date="2015-06-09T11:32:48.575+0200" label="2.0">
+    <changes xsi:type="history:Set" element="uuidBug.ecore#/" featureName="nsURI"
+        dataValue="http://uuidBug.org/2.0" oldDataValue="http://uuidBug.org/1.0"/>
+  </releases>
+  <releases/>
+</history:History>
diff --git a/tests/org.eclipse.emf.edapt.tests/data/uuid/uuidBug.test b/tests/org.eclipse.emf.edapt.tests/data/uuid/uuidBug.test
new file mode 100644
index 0000000..13fbe90
--- /dev/null
+++ b/tests/org.eclipse.emf.edapt.tests/data/uuid/uuidBug.test
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<test:TestSuiteDefinition
+    xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI"
+    xmlns:test="http://www.eclipse.org/emf/edapt/migration/test/0.3"
+    name="UUID Migration"
+    history="uuidBug.history">
+  <cases name="Test UUIDs are same after migration"
+      model="My.uuidbug"
+      expectedModel="_My.uuidbug"/>
+</test:TestSuiteDefinition>
diff --git a/tests/org.eclipse.emf.edapt.tests/src/org/eclipse/emf/edapt/tests/migration/MigrationTest.java b/tests/org.eclipse.emf.edapt.tests/src/org/eclipse/emf/edapt/tests/migration/MigrationTest.java
index 77c2754..f9fd063 100644
--- a/tests/org.eclipse.emf.edapt.tests/src/org/eclipse/emf/edapt/tests/migration/MigrationTest.java
+++ b/tests/org.eclipse.emf.edapt.tests/src/org/eclipse/emf/edapt/tests/migration/MigrationTest.java
@@ -14,15 +14,23 @@
 import java.io.File;
 import java.io.IOException;
 
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
 import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl;
+import org.eclipse.emf.edapt.common.IResourceSetFactory;
 import org.eclipse.emf.edapt.internal.common.FileUtils;
 import org.eclipse.emf.edapt.internal.common.URIUtils;
+import org.eclipse.emf.edapt.internal.migration.execution.IClassLoader;
 import org.eclipse.emf.edapt.internal.migration.execution.internal.ClassLoaderFacade;
+import org.eclipse.emf.edapt.migration.execution.Migrator;
 import org.eclipse.emf.edapt.migration.test.MigrationTestSuite;
 
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
 /**
  * Test of model migrations defined by test models.
  *
@@ -53,9 +61,9 @@
 				if (extension != null && "test".equals(extension)) { //$NON-NLS-1$
 					final URI uri = URIUtils.getURI(file);
 					try {
-						suite.addTest(new MigrationTestSuite(uri,
-							new ClassLoaderFacade(MigrationTest.class
-								.getClassLoader())));
+						final MigrationTestSuite migrationTestSuite = new UUIDMigrationTestSuite(
+							uri, new ClassLoaderFacade(MigrationTest.class.getClassLoader()));
+						suite.addTest(migrationTestSuite);
 					} catch (final IOException e) {
 						e.printStackTrace();
 					}
@@ -63,4 +71,39 @@
 			}
 		}
 	}
+
+	private static final class UUIDMigrationTestSuite extends MigrationTestSuite {
+		private UUIDMigrationTestSuite(URI definitionURI, IClassLoader loader) throws IOException {
+			super(definitionURI, loader);
+		}
+
+		@Override
+		protected org.eclipse.emf.edapt.migration.execution.Migrator loadMigrator()
+			throws IOException {
+			final Migrator loadedMigrator = super.loadMigrator();
+			loadedMigrator.setResourceSetFactory(new IResourceSetFactory() {
+				@Override
+				public ResourceSet createResourceSet() {
+					final ResourceSetImpl resourceSet = new ResourceSetImpl();
+					resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(
+						Resource.Factory.Registry.DEFAULT_EXTENSION, new UuidResourceFactory());
+					return resourceSet;
+				}
+			});
+			return loadedMigrator;
+		}
+
+		private static class UuidResourceFactory extends XMIResourceFactoryImpl {
+			@Override
+			public Resource createResource(URI uri) {
+				return new XMIResourceImpl(uri) {
+					@Override
+					protected boolean useUUIDs() {
+						return true;
+					}
+				};
+			}
+		}
+	}
+
 }
