diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/utils/.ratings b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/utils/.ratings
index 1ff30f5807d3d589f3fdf6363ed6a90013a5bbed..b8a101a5b4ac7e05798218d6e86a75bbce016d43 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/utils/.ratings
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/utils/.ratings
@@ -12,4 +12,4 @@ MigrationUtils.java e54370b19148ff656d7563e8188baccd947c24d5 GREEN
 PrototypesUtils.java 538b5edbab06e95bc32e81309482e36a4bc64d1e GREEN
 ResourceUtils.java 8ab06ad3b72fdb2b1925e2ccbedcfea35e36cf24 GREEN
 TransformationUtils.java f159b17ac1ce2ce0d94c1a873d74e052ac2dc74b GREEN
-UniqueIDUtils.java 9586f7f13b69b89d2b443312373e7f15aac92bd8 GREEN
+UniqueIDUtils.java f8b053bf64835d8a441192f7681fda0655a98469 YELLOW
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/utils/UniqueIDUtils.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/utils/UniqueIDUtils.java
index a0ba898c4d6b2128afd5ccca52b990592365a184..e96bd49aadcb11b92999d7ba053c1fb809d86581 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/utils/UniqueIDUtils.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/utils/UniqueIDUtils.java
@@ -261,11 +261,32 @@ public class UniqueIDUtils {
 	public static void fixMissingIDs(final ITopLevelElement modelElement) {
 		final int maxID = getLargestID(modelElement.getRootModelElement());
 		if(maxID > 0) {
-			modelElement.runAsCommand(new Runnable() {
-				@Override
-				public void run() {
-					generateMissingIDs(modelElement.getRootModelElement(), maxID);
-				}
+			modelElement.runAsCommand(() -> {
+				generateMissingIDs(modelElement.getRootModelElement(), maxID);
+			});
+		}
+	}
+
+	/**
+	 * Generates all missing IDs of the given sub-model.
+	 * 
+	 * @param object
+	 *            The sub-model element for which missing IDs should be prepared
+	 * @param existingModel
+	 *            the existing model to be considered for used IDs if object
+	 *            already contains IDs > 0
+	 */
+	public static void fixMissingIDs(EObject object, EObject existingModel) {
+		EObject root = existingModel;
+		while(root.eContainer() != null) {
+			root = root.eContainer();
+		}
+		ITopLevelElement topLevelElement =
+				IPersistencyService.getInstance().getTopLevelElementFor(existingModel);
+		final int maxID = getLargestID(root);
+		if(maxID > 0) {
+			topLevelElement.runAsCommand(() -> {
+				generateMissingIDs(object, maxID);
 			});
 		}
 	}