diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/extension/base/.ratings b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/extension/base/.ratings
index c2f9ce79b1deaba83b9e0dd6010653e9e2c5b969..7ee2b677baab6a66417b5ab25d7d1ead666dbe01 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/extension/base/.ratings
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/extension/base/.ratings
@@ -4,6 +4,7 @@ ConstraintViolationBase.java a5b1fdbdd5ce915789144077ec66b3569142f80c GREEN
 ElementCompositorBase.java 8667281b2e5988b11390cf77deab5d118f297ab1 GREEN
 MultiViolationConstraintCheckerBase.java e2f17f02fae75a17e955d48734ed043323f26f04 GREEN
 PrototypeProviderBase.java 62de3ea391ecb515883490517aa2e94ab812d91b GREEN
+RemoveDeprecatedArtifactsMigrationProviderBase.java 91b4433756711d73d0325930a5d57d58f1155837 YELLOW
 RemoveUnknownFeatureMigrationProviderBase.java 0ffeb1f02a3f7476abcb467ebe07d3c5d5561b86 GREEN
 TransformationContextChainBase.java b5195a9bde6d50268dda80fed993477d7a4447ee GREEN
 TransformationProviderBase.java 0c3d114c6a3d854f74630417c05dd889ed02acdf GREEN
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/extension/base/RemoveDeprecatedArtifactsMigrationProviderBase.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/extension/base/RemoveDeprecatedArtifactsMigrationProviderBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..99634b1f78a8d6297d9d739fa41ece514dbe2a7b
--- /dev/null
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/extension/base/RemoveDeprecatedArtifactsMigrationProviderBase.java
@@ -0,0 +1,96 @@
+/*-------------------------------------------------------------------------+
+| Copyright 2018 fortiss GmbH                                              |
+|                                                                          |
+| Licensed under the Apache License, Version 2.0 (the "License");          |
+| you may not use this file except in compliance with the License.         |
+| You may obtain a copy of the License at                                  |
+|                                                                          |
+|    http://www.apache.org/licenses/LICENSE-2.0                            |
+|                                                                          |
+| Unless required by applicable law or agreed to in writing, software      |
+| distributed under the License is distributed on an "AS IS" BASIS,        |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+| See the License for the specific language governing permissions and      |
+| limitations under the License.                                           |
++--------------------------------------------------------------------------*/
+package org.fortiss.tooling.kernel.extension.base;
+
+import static org.conqat.lib.commons.reflect.ReflectionUtils.isInstanceOfAny;
+import static org.eclipse.emf.ecore.util.EcoreUtil.delete;
+import static org.fortiss.tooling.common.util.LambdaUtils.asStream;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Stream;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.xml.type.AnyType;
+import org.fortiss.tooling.kernel.extension.IMigrationProvider;
+import org.fortiss.tooling.kernel.extension.data.ITopLevelElement;
+import org.fortiss.tooling.kernel.model.INamedCommentedElement;
+
+/**
+ * Remove artificats related to deprecated use case model.
+ * 
+ * @author barner
+ */
+public abstract class RemoveDeprecatedArtifactsMigrationProviderBase implements IMigrationProvider { // NO_UCD
+	// Migrators are retired after a release, but this base class should be available when needed.
+	// See https://af3-developer.fortiss.org/projects/autofocus3/wiki/Model_Migration
+
+	/** Returns the {@link Collection} of deprecated artifact types to be removed from the model. */
+	protected abstract Collection<Class<? extends EObject>> getDeprecatedArtifacts();
+
+	/**
+	 * Returns the {@link Collection} of deprecated root artifact types (possibly empty subset of
+	 * {@link #getDeprecatedArtifacts()}) for which a comment is added to the migrated model that
+	 * deprecated artifacts have been removed.
+	 */
+	protected abstract Collection<Class<? extends EObject>> getDeprecatedRootArtifacts();
+
+	/** Returns the {@link Stream} of deprecated model elements to be removed. */
+	@SuppressWarnings("unchecked")
+	private Stream<EObject> getDeprecatedModelElements(ITopLevelElement modelElement) {
+		Stream<EObject> root = asStream(modelElement.getRootModelElement().eAllContents());
+		return root.filter(e -> isInstanceOfAny(e, (Class<EObject>[])getDeprecatedArtifacts()
+				.toArray()));
+	}
+
+	/** {@inheritDoc} */
+
+	@Override
+	public boolean needMigration(ITopLevelElement modelElement,
+			Map<EObject, AnyType> unknownFeatures) {
+
+		return getDeprecatedModelElements(modelElement).findAny().isPresent();
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void migrate(ITopLevelElement modelElement, Map<EObject, AnyType> unknownFeatures) {
+		EObject object;
+		do {
+			object = null;
+			Stream<EObject> deprecatedModelElements = getDeprecatedModelElements(modelElement);
+			Optional<EObject> anyObject = deprecatedModelElements.findAny();
+			if(anyObject.isPresent()) {
+				object = anyObject.get();
+				if(object.eContainer() instanceof INamedCommentedElement) {
+					INamedCommentedElement parent = (INamedCommentedElement)object.eContainer();
+					if(parent.getComment() == null || parent.getComment().isEmpty()) {
+						for(Class<? extends EObject> rootType : getDeprecatedRootArtifacts()) {
+							if(rootType.isAssignableFrom(object.getClass())) {
+								parent.setComment(rootType.getSimpleName() +
+										" models are no longer supported. This sub-model has been removed automatically!");
+								break;
+							}
+						}
+					}
+				}
+				delete(object);
+			}
+		} while(object != null);
+	}
+
+}