diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/IConstraintVerifierUI.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/IConstraintVerifierUI.java
index 644763c818c0f8472840ed99c57785ee3c80537a..51a2486de8b3783d210a8002a54b39565d8047ba 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/IConstraintVerifierUI.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/IConstraintVerifierUI.java
@@ -17,8 +17,8 @@ $Id$
 +--------------------------------------------------------------------------*/
 package org.fortiss.tooling.kernel.ui.extension;
 
-import org.eclipse.emf.ecore.EObject;
 import org.fortiss.tooling.kernel.model.constraints.IConstraint;
+import org.fortiss.tooling.kernel.model.constraints.IConstraintContainer;
 import org.fortiss.tooling.kernel.model.constraints.IConstraintVerificationStatus;
 import org.fortiss.tooling.kernel.service.base.IEObjectAware;
 
@@ -28,29 +28,28 @@ import org.fortiss.tooling.kernel.service.base.IEObjectAware;
  * @author aravantinos
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 55841F342D5CE5159A902AB923946C35
+ * @ConQAT.Rating YELLOW Hash: FF8F3F170CD5768D578035D3803F7470
  */
 public interface IConstraintVerifierUI<T extends IConstraint> extends IEObjectAware<T> {
 
 	/**
-	 * Action to take when trying to open the given status. <code>canOpen</code> should be called
-	 * before to know if the status can be opened.
+	 * Action to take when trying to open the given constraint. <code>canOpen</code> should be
+	 * called before to know if the status can be opened.
 	 * 
-	 * @return true if the status could indeed be open, false if it needs further handling.
+	 * @param constraint
+	 * @param status
+	 * @return true if the constraint could indeed be open, false if it needs further handling.
 	 */
-	public boolean openStatus(IConstraintVerificationStatus status);
+	public boolean openStatus(T constraint, IConstraintVerificationStatus status);
 
-	/** True if the given status can be open. */
-	public boolean canOpen(IConstraintVerificationStatus status);
+	/** True if the constraint can be open. */
+	boolean canOpen(T constraint, IConstraintVerificationStatus status);
 
 	/** Method to execute when a constraint gets outdated. */
 	public void onOutdate(T constraint);
 
-	/**
-	 * @param status
-	 * @return a short user-friendly description explaining the status.
-	 */
-	public String getMessage(IConstraintVerificationStatus status);
+	/** Returns a short user-friendly description explaining the constraint. */
+	public String getMessage(T constraint, IConstraintVerificationStatus status);
 
 	/**
 	 * The following features deal with the usage of constraints to drive the process.
@@ -58,15 +57,15 @@ public interface IConstraintVerifierUI<T extends IConstraint> extends IEObjectAw
 	 * EXPERIMENTAL.
 	 */
 
-	/** Activates the constraint type. */
-	public void activate(EObject context);
-
-	/** Deactivates the constraint type. */
-	public void deactivate(EObject context);
-
 	/**
-	 * ID of the constraint. Must be unique among all constraints which are usable for development
-	 * process. *Must match* the ID of the corresponding constraint non-UI verifier.
+	 * Hook to run when the constraint is activated. Can be used to add constraints that would be
+	 * missing.
 	 */
-	public String getID();
+	public void onActivate(IConstraintContainer context);
+
+	/** Gets a general description for the constraint type. */
+	String getDescription();
+
+	/** True if this constraint shall be displayed as a development process constraint. */
+	boolean isUsableForDevelopmentProcess();
 }
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ConstraintVerifierUIBases.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ConstraintVerifierUIBases.java
index 7d9c3b05b6c626af2387da61ee5b20c3d77999c7..5de0be7474c1078f1e347bc6afd4902bb532b38c 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ConstraintVerifierUIBases.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ConstraintVerifierUIBases.java
@@ -23,7 +23,6 @@ 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.dialogs.MessageDialog;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
@@ -39,12 +38,13 @@ import org.eclipse.swt.widgets.Shell;
 import org.fortiss.tooling.kernel.model.constraints.ErrorVerificationStatus;
 import org.fortiss.tooling.kernel.model.constraints.FailVerificationStatus;
 import org.fortiss.tooling.kernel.model.constraints.IConstraint;
+import org.fortiss.tooling.kernel.model.constraints.IConstraintContainer;
 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.service.IConstraintVerificationService.IFix;
 import org.fortiss.tooling.kernel.ui.extension.IConstraintVerifierUI;
+import org.fortiss.tooling.kernel.ui.service.IConstraintVerificationUIService;
 import org.fortiss.tooling.kernel.ui.service.IModelElementHandlerService;
 import org.fortiss.tooling.kernel.ui.util.ConstraintsUIUtils;
 import org.fortiss.tooling.kernel.utils.ConstraintsUtils;
@@ -55,7 +55,7 @@ import org.fortiss.tooling.kernel.utils.ConstraintsUtils;
  * @author vincent
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 84B5C13C5626B34EB7DD1D8D692368B7
+ * @ConQAT.Rating YELLOW Hash: 0D74DFF10E167E1EB9754CFB52A8CCC4
  */
 public class ConstraintVerifierUIBases {
 
@@ -65,24 +65,30 @@ public class ConstraintVerifierUIBases {
 
 		/** {@inheritDoc} */
 		@Override
-		public boolean openStatus(IConstraintVerificationStatus status) {
-			if(!canOpen(status)) {
+		public boolean canOpen(T constraint, IConstraintVerificationStatus status) {
+			return status instanceof OutdatedVerificationStatus;
+		}
+
+		/** {@inheritDoc} */
+		@Override
+		public boolean openStatus(T c, IConstraintVerificationStatus status) {
+			if(!canOpen(c, status)) {
 				return false;
 			}
 			if(status instanceof OutdatedVerificationStatus) {
-				IConstraint constraint = status.getConstraint();
-				IConstraintVerificationService.getInstance().verify(constraint);
-				IConstraintVerificationStatus currentStatus = constraint.getVerificationStatus();
-				if(currentStatus instanceof ErrorVerificationStatus & canOpen(currentStatus)) {
-					openStatus(currentStatus);
+				IConstraintVerificationService.getInstance().verify(c);
+				IConstraintVerificationStatus currentStatus =
+						IConstraintVerificationUIService.getInstance().getStatus(c);
+				if(currentStatus instanceof ErrorVerificationStatus & canOpen(c, status)) {
+					openStatus(c, status);
 				}
 				return true;
 			}
 			if(status instanceof FailVerificationStatus ||
 					status instanceof ErrorVerificationStatus) {
-				List<IFix> fixes = IConstraintVerificationService.getInstance().fixes(status);
+				List<IFix> fixes = IConstraintVerificationService.getInstance().fixes(c);
 				Shell shell = Display.getCurrent().getActiveShell();
-				int result = new FixDialog(shell, status, getMessage(status), fixes).open();
+				int result = new FixDialog(shell, status, getMessage(c, status), fixes).open();
 				if(fixes.size() == 1 && result == 0) {
 					// get(0) because the size is equal to 1 by the previous test
 					fixes.get(0).runFix(status);
@@ -94,12 +100,6 @@ public class ConstraintVerifierUIBases {
 			return false;
 		}
 
-		/** {@inheritDoc} */
-		@Override
-		public boolean canOpen(IConstraintVerificationStatus status) {
-			return(!(status instanceof SuccessVerificationStatus));
-		}
-
 		/** Dialog presenting the error/failure and the possible fix(es). */
 		private static class FixDialog extends MessageDialog {
 
@@ -177,7 +177,9 @@ public class ConstraintVerifierUIBases {
 
 		/** {@inheritDoc} */
 		@Override
-		public String getMessage(IConstraintVerificationStatus s) {
+		public String getMessage(T c, IConstraintVerificationStatus status) {
+			IConstraintVerificationStatus s =
+					IConstraintVerificationUIService.getInstance().getStatus(c);
 			// Default message. Inheriting classes SHOULD specialize.
 			String name = IModelElementHandlerService.getInstance().getName(s.getConstraint());
 			String pre =
@@ -195,14 +197,14 @@ public class ConstraintVerifierUIBases {
 
 		/** {@inheritDoc} */
 		@Override
-		public void activate(EObject context) {
-			// TODO Auto-generated method stub
+		public void onActivate(IConstraintContainer context) {
+			// Nothing to do in general
 		}
 
 		/** {@inheritDoc} */
 		@Override
-		public void deactivate(EObject context) {
-			// TODO Auto-generated method stub
+		public boolean isUsableForDevelopmentProcess() {
+			return true;
 		}
 	}
 
@@ -227,5 +229,11 @@ public class ConstraintVerifierUIBases {
 				}
 			}).schedule();
 		}
+
+		/** {@inheritDoc} */
+		@Override
+		public boolean canOpen(T constraint, IConstraintVerificationStatus status) {
+			return false;
+		}
 	}
 }