diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/ConstraintsUIUtils.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/ConstraintsUIUtils.java
index b862a0af36f66988a04577b7b3dc5db48bcf823b..8c392a9e3f9547df3f9dddc89c097862c5da1b52 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/ConstraintsUIUtils.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/ConstraintsUIUtils.java
@@ -23,6 +23,10 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.function.Function;
 
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.jface.viewers.ColumnLabelProvider;
 import org.eclipse.swt.SWT;
@@ -38,6 +42,7 @@ import org.fortiss.tooling.kernel.model.constraints.IConstraint;
 import org.fortiss.tooling.kernel.model.constraints.IConstraintVerificationStatus;
 import org.fortiss.tooling.kernel.model.constraints.OutdatedVerificationStatus;
 import org.fortiss.tooling.kernel.model.constraints.SuccessVerificationStatus;
+import org.fortiss.tooling.kernel.service.IConstraintVerificationService;
 import org.fortiss.tooling.kernel.ui.service.IConstraintVerificationUIService;
 import org.fortiss.tooling.kernel.utils.EcoreUtils;
 
@@ -47,7 +52,7 @@ import org.fortiss.tooling.kernel.utils.EcoreUtils;
  * @author aravantinos
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 78F01666E8A80F35348F431EC6DA2895
+ * @ConQAT.Rating YELLOW Hash: BC06655274768325481A442F27DF78E6
  */
 public class ConstraintsUIUtils {
 
@@ -153,9 +158,15 @@ public class ConstraintsUIUtils {
 	 *            trigger a refresh of the marker decorations.
 	 */
 	public static void triggerMarkersRefresh(IConstraint c) {
+		List<IConstrained> constraineds = new ArrayList<IConstrained>();
+		// We first collect separately the constrained objects because - unfortunately for some
+		// unknown reason - the following notification seems to trigger a change of the list of
+		// constrained objects.
 		for(ConstrainedWithChecksum cwc : c.getConstrainedsWithChecksum()) {
-			EcoreUtils.postRefreshNotification(cwc.getConstrained());
+			constraineds.add(cwc.getConstrained());
 		}
+		constraineds.stream().forEach(
+				constrained -> EcoreUtils.postRefreshNotification(constrained));
 	}
 
 	/**
@@ -254,4 +265,30 @@ public class ConstraintsUIUtils {
 			return ConstraintsUIUtils.getColor(cstr);
 		}
 	}
+
+	/**
+	 * @param c
+	 * @param value
+	 *            Sets the <code>autoCheck</code> field of <code>c</code> to <code>value</code>
+	 *            <b>and triggers the verification of <code>c</code> if <code>value</code> is
+	 *            <code>true</code>.</b>
+	 *            Use this instead of directly setting <code>autocheck</code>.
+	 */
+	public static void setAutoCheck(IConstraint c, boolean value) {
+		c.setAutoCheck(value);
+		if(value) {
+			Display display = Display.getDefault();
+			Job job = new Job("Constraint verification job") {
+				@Override
+				protected IStatus run(IProgressMonitor monitor) {
+					synchronized(c) {
+						IConstraintVerificationService.INSTANCE.verify(c);
+					}
+					display.asyncExec(() -> ConstraintsUIUtils.triggerMarkersRefresh(c));
+					return Status.OK_STATUS;
+				}
+			};
+			job.schedule();
+		}
+	}
 }
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/utils/ConstraintsUtils.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/utils/ConstraintsUtils.java
index 53128546cc0989ed8591c555124229b28f0570f9..6221d2251a7b379af4f493e1053ee1c9cf823968 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/utils/ConstraintsUtils.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/utils/ConstraintsUtils.java
@@ -25,7 +25,6 @@ import org.fortiss.tooling.kernel.model.constraints.IConstraint;
 import org.fortiss.tooling.kernel.model.constraints.IConstraintVerificationStatus;
 import org.fortiss.tooling.kernel.model.constraints.OutdatedVerificationStatus;
 import org.fortiss.tooling.kernel.model.constraints.SuccessVerificationStatus;
-import org.fortiss.tooling.kernel.service.IConstraintVerificationService;
 
 /**
  * Utility methods for dealing with constraints.
@@ -33,7 +32,7 @@ import org.fortiss.tooling.kernel.service.IConstraintVerificationService;
  * @author aravantinos
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 27D40FEDD5231775D755E9781D21C0C9
+ * @ConQAT.Rating YELLOW Hash: BE54EACBF815B71F4C67D93ACFB3DA97
  */
 public class ConstraintsUtils {
 	/**
@@ -125,19 +124,4 @@ public class ConstraintsUtils {
 		setVerificationStatus(c, status);
 		return status;
 	}
-
-	/**
-	 * @param c
-	 * @param value
-	 *            Sets the <code>autoCheck</code> field of <code>c</code> to <code>value</code>
-	 *            <b>and triggers the verification of <code>c</code> if <code>value</code> is
-	 *            <code>true</code>.</b>
-	 *            Use this instead of directly setting <code>autocheck</code>.
-	 */
-	public static void setAutoCheck(IConstraint c, boolean value) {
-		c.setAutoCheck(value);
-		if(value) {
-			IConstraintVerificationService.INSTANCE.verify(c);
-		}
-	}
 }