diff --git a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/extension/.ratings b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/extension/.ratings
index fcb76b1356220c49d17dc12cb2a3ae7d5c58639c..aaaabe0a705cc5fcd0e0cd40cc1fe3e9533b594e 100644
--- a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/extension/.ratings
+++ b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/extension/.ratings
@@ -6,7 +6,7 @@ IEclipseResourceStorageLocationProvider.java 0ab7f304d52a9d86f01f66e308e9a7ca420
 IElementCompositor.java 5b0ab1732f71b3f8467e0276c844f0dd549e191f GREEN
 ILibraryElementHandler.java 00ef5b25c63b8570006e6f6748aed0da1f33a5f1 GREEN
 ILogMessageHandler.java 9ab53e836a095ef00fd84ecc0375167edf593b46 GREEN
-IMigrationProvider.java cbf0d03c7b89ecdba79a67ae60a547fe058dd5d8 YELLOW
+IMigrationProvider.java c194c8aaaecc84c6e476231362f7c815592026fc YELLOW
 IPrototypeProvider.java d5e3dbae19b5654caf28b81da6b1609d3c12be12 GREEN
 IStorageProvider.java d9b14cdd254d0c956dc5715c1c4d4d955a705dd5 GREEN
 ITransformationProvider.java a4ee2ea08720bb2fce29806062eb01499bb5071e GREEN
diff --git a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/extension/IMigrationProvider.java b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/extension/IMigrationProvider.java
index cbf0d03c7b89ecdba79a67ae60a547fe058dd5d8..c194c8aaaecc84c6e476231362f7c815592026fc 100644
--- a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/extension/IMigrationProvider.java
+++ b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/extension/IMigrationProvider.java
@@ -49,7 +49,7 @@ public interface IMigrationProvider extends IObjectAware<ITopLevelElement> {
 	 * in the model. This can be useful to detect features coming from old models and can be then
 	 * translated to the new model by a migrator.
 	 * 
-	 * @return all features which could not be migrated.
+	 * @return all features which were migrated.
 	 */
 	Map<EObject, AnyType> migrate(ITopLevelElement modelElement,
 			Map<EObject, AnyType> unknownFeatures);
diff --git a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/internal/.ratings b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/internal/.ratings
index cb265f46503a4e6f4c3c2143aef3ec6bc1bdb0e6..cc7456cfe2f37bb8a014bc9e46e9dc4fcbf45dff 100644
--- a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/internal/.ratings
+++ b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/internal/.ratings
@@ -7,7 +7,7 @@ ElementCompositorService.java 98c5d27e09881e60aa4f87c1ac0c7787cdec9f7c GREEN
 LibraryPrototypeProvider.java b77eddbdca78f561ffb1233e98817be361c690ae GREEN
 LibraryService.java d22671ba820466062852c15873698adf28960d94 GREEN
 LoggingService.java da784259f7b456b54bf75c41ec268f64919ce78d GREEN
-MigrationService.java f968fcb7de02f78e7d43c0654e958611296539d0 YELLOW
+MigrationService.java b0f05859e33a85bc285a05056d5c16448a4cb4f0 YELLOW
 PersistencyService.java 103eef642c038ef63fa49b743d803aaa3fea2724 GREEN
 PrototypeService.java 18c3db05ab11f189a9711bf241c3c7f35c954a9e GREEN
 ToolingKernelInternal.java d624a5f6b237ce993e150e2b8d1b4390e3fc8f7a GREEN
diff --git a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/internal/MigrationService.java b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/internal/MigrationService.java
index f968fcb7de02f78e7d43c0654e958611296539d0..b0f05859e33a85bc285a05056d5c16448a4cb4f0 100644
--- a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/internal/MigrationService.java
+++ b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/internal/MigrationService.java
@@ -119,26 +119,27 @@ public class MigrationService extends ObjectAwareServiceBase<IMigrationProvider>
 
 			@Override
 			public void run() {
-				Map<EObject, AnyType> featuresNotMigrated = new HashMap<EObject, AnyType>();
+				Map<EObject, AnyType> migratedFeatures = new HashMap<EObject, AnyType>();
 				for(IMigrationProvider provider : getProviders(input)) {
 					if(provider.needMigration(input, unknownFeatures)) {
-						featuresNotMigrated.putAll(provider.migrate(input, unknownFeatures));
+						migratedFeatures.putAll(provider.migrate(input, unknownFeatures));
 					}
 				}
 				for(IMigrationProvider provider : getProviders(input)) {
-					if(provider.needMigration(input, featuresNotMigrated)) {
+					if(provider.needMigration(input, migratedFeatures)) {
 						error(ToolingKernelActivator.getDefault(),
 								"Migrating " + input.getSaveableName() + " failed: A need for " +
 										"migration is indicated although the migration was " +
 										"already performed. Please fix the migrator (or model).");
 					}
 				}
-				if(!featuresNotMigrated.isEmpty()) {
+				unknownFeatures.entrySet().removeAll(migratedFeatures.entrySet());
+				if(!unknownFeatures.isEmpty()) {
 					error(ToolingKernelActivator.getDefault(), input.getSaveableName() +
 							" contains one or more unknown feature(s) which will be deleted: " +
 							featuresToStrings(unknownFeatures));
 
-					for(Entry<EObject, AnyType> e : featuresNotMigrated.entrySet()) {
+					for(Entry<EObject, AnyType> e : unknownFeatures.entrySet()) {
 						EcoreUtil.delete(e.getKey(), true);
 					}
 				}