diff --git a/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/AbstractInterRelationshipConstraintPattern.java b/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/AbstractInterRelationshipConstraintPattern.java
index 4b7bc607e2cd82116ebc00688ba5fc4acc03712f..98aadb1582b4c850fcac0f3c98f7e5cd6f340672 100644
--- a/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/AbstractInterRelationshipConstraintPattern.java
+++ b/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/AbstractInterRelationshipConstraintPattern.java
@@ -159,7 +159,7 @@ public abstract class AbstractInterRelationshipConstraintPattern extends FRaMEDC
 	    org.framed.iorm.model.ModelElement targetConnection = UIUtil.getModelElementForAnchor(targetAnchor);
 	    if(sourceConnection != null && targetConnection != null) {
 	    	if(sourceConnection.getContainer() == targetConnection.getContainer()) {
-				return EditPolicyService.getHandler(this.getDiagram()).canCreate(createContext, this.modelType);
+				return EditPolicyService.getHandler(this.getDiagram()).canCreate(createContext, this.getModelType());
 	    	}	
 	    }
 	    return false;
@@ -179,7 +179,7 @@ public abstract class AbstractInterRelationshipConstraintPattern extends FRaMEDC
 		org.framed.iorm.model.ModelElement sourceConnection = UIUtil.getModelElementForAnchor(sourceAnchor);
 		if(sourceConnection != null){	
 			if(sourceConnection.getType() == Type.RELATIONSHIP)
-				return EditPolicyService.getHandler(this.getDiagram()).canStart(createContext, sourceConnection.getType() );
+				return EditPolicyService.getHandler(this.getDiagram()).canStart(createContext, this.getModelType() );
 		}	
 		return false;
 	}
diff --git a/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/InterRelationship.ecl b/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/InterRelationship.ecl
index 6d084323a0c2d0cd48351c92be4e1e413339cf3a..241aab42a578fe18cf1ad95cede21eba21735811 100644
--- a/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/InterRelationship.ecl
+++ b/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/InterRelationship.ecl
@@ -1,10 +1,10 @@
 //InterRelationship  
-Start RelationshipExclusion (Inter_Relationship_Constraints) when true;
-Add RelationshipExclusion (Inter_Relationship_Constraints) when true; 
-Reconnect RelationshipExclusion (Inter_Relationship_Constraints) when true;
-Create RelationshipExclusion (Inter_Relationship_Constraints) when true;
+Start RelationshipExclusion (Inter_Relationship_Constraints) when IsSourceType(Relationship);
+Add RelationshipExclusion (Inter_Relationship_Constraints) when IsSourceType(Relationship) and SourceEqualsTargetType() and !SourceEqualsTarget(); 
+Reconnect RelationshipExclusion (Inter_Relationship_Constraints) when IsSourceType(Relationship) and SourceEqualsTargetType() and !SourceEqualsTarget();
+Create RelationshipExclusion (Inter_Relationship_Constraints) when IsSourceType(Relationship) and SourceEqualsTargetType() and !SourceEqualsTarget();
 
-Start RelationshipImplication (Inter_Relationship_Constraints) when true;
-Add RelationshipImplication (Inter_Relationship_Constraints) when true;
-Reconnect RelationshipImplication (Inter_Relationship_Constraints) when true;
-Create RelationshipImplication (Inter_Relationship_Constraints) when true;
+Start RelationshipImplication (Inter_Relationship_Constraints) when IsSourceType(Relationship);
+Add RelationshipImplication (Inter_Relationship_Constraints) when IsSourceType(Relationship) and SourceEqualsTargetType() and !SourceEqualsTarget();
+Reconnect RelationshipImplication (Inter_Relationship_Constraints) when IsSourceType(Relationship) and SourceEqualsTargetType() and !SourceEqualsTarget();
+Create RelationshipImplication (Inter_Relationship_Constraints) when IsSourceType(Relationship) and SourceEqualsTargetType() and !SourceEqualsTarget();
diff --git a/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/InterRelationship.editpolicy b/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/InterRelationship.editpolicy
index 2a11004ba01824cb8cab755fd7ecb5aea47490f7..e185a8e1af0b63e98ce0291662c353e8a8de7730 100644
--- a/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/InterRelationship.editpolicy
+++ b/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/InterRelationship.editpolicy
@@ -2,34 +2,82 @@
 <editpolicymodel:Model xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:editpolicymodel="http://framed/editpolicymodel">
   <policies action="Start" actionType="RelationshipExclusion">
     <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Inter_Relationship_Constraints"/>
-    <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/>
+    <constraintRule xsi:type="editpolicymodel:IsSourceType" type="Relationship"/>
   </policies>
   <policies action="Add" actionType="RelationshipExclusion">
     <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Inter_Relationship_Constraints"/>
-    <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/>
+    <constraintRule xsi:type="editpolicymodel:AndConstraintRule">
+      <rules xsi:type="editpolicymodel:AndConstraintRule">
+        <rules xsi:type="editpolicymodel:IsSourceType" type="Relationship"/>
+        <rules xsi:type="editpolicymodel:SourceEqualsTargetType"/>
+      </rules>
+      <rules xsi:type="editpolicymodel:NotConstraintRule">
+        <rule xsi:type="editpolicymodel:SourceEqualsTarget"/>
+      </rules>
+    </constraintRule>
   </policies>
   <policies action="Reconnect" actionType="RelationshipExclusion">
     <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Inter_Relationship_Constraints"/>
-    <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/>
+    <constraintRule xsi:type="editpolicymodel:AndConstraintRule">
+      <rules xsi:type="editpolicymodel:AndConstraintRule">
+        <rules xsi:type="editpolicymodel:IsSourceType" type="Relationship"/>
+        <rules xsi:type="editpolicymodel:SourceEqualsTargetType"/>
+      </rules>
+      <rules xsi:type="editpolicymodel:NotConstraintRule">
+        <rule xsi:type="editpolicymodel:SourceEqualsTarget"/>
+      </rules>
+    </constraintRule>
   </policies>
   <policies actionType="RelationshipExclusion">
     <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Inter_Relationship_Constraints"/>
-    <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/>
+    <constraintRule xsi:type="editpolicymodel:AndConstraintRule">
+      <rules xsi:type="editpolicymodel:AndConstraintRule">
+        <rules xsi:type="editpolicymodel:IsSourceType" type="Relationship"/>
+        <rules xsi:type="editpolicymodel:SourceEqualsTargetType"/>
+      </rules>
+      <rules xsi:type="editpolicymodel:NotConstraintRule">
+        <rule xsi:type="editpolicymodel:SourceEqualsTarget"/>
+      </rules>
+    </constraintRule>
   </policies>
   <policies action="Start" actionType="RelationshipImplication">
     <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Inter_Relationship_Constraints"/>
-    <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/>
+    <constraintRule xsi:type="editpolicymodel:IsSourceType" type="Relationship"/>
   </policies>
   <policies action="Add" actionType="RelationshipImplication">
     <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Inter_Relationship_Constraints"/>
-    <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/>
+    <constraintRule xsi:type="editpolicymodel:AndConstraintRule">
+      <rules xsi:type="editpolicymodel:AndConstraintRule">
+        <rules xsi:type="editpolicymodel:IsSourceType" type="Relationship"/>
+        <rules xsi:type="editpolicymodel:SourceEqualsTargetType"/>
+      </rules>
+      <rules xsi:type="editpolicymodel:NotConstraintRule">
+        <rule xsi:type="editpolicymodel:SourceEqualsTarget"/>
+      </rules>
+    </constraintRule>
   </policies>
   <policies action="Reconnect" actionType="RelationshipImplication">
     <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Inter_Relationship_Constraints"/>
-    <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/>
+    <constraintRule xsi:type="editpolicymodel:AndConstraintRule">
+      <rules xsi:type="editpolicymodel:AndConstraintRule">
+        <rules xsi:type="editpolicymodel:IsSourceType" type="Relationship"/>
+        <rules xsi:type="editpolicymodel:SourceEqualsTargetType"/>
+      </rules>
+      <rules xsi:type="editpolicymodel:NotConstraintRule">
+        <rule xsi:type="editpolicymodel:SourceEqualsTarget"/>
+      </rules>
+    </constraintRule>
   </policies>
   <policies actionType="RelationshipImplication">
     <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Inter_Relationship_Constraints"/>
-    <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/>
+    <constraintRule xsi:type="editpolicymodel:AndConstraintRule">
+      <rules xsi:type="editpolicymodel:AndConstraintRule">
+        <rules xsi:type="editpolicymodel:IsSourceType" type="Relationship"/>
+        <rules xsi:type="editpolicymodel:SourceEqualsTargetType"/>
+      </rules>
+      <rules xsi:type="editpolicymodel:NotConstraintRule">
+        <rule xsi:type="editpolicymodel:SourceEqualsTarget"/>
+      </rules>
+    </constraintRule>
   </policies>
 </editpolicymodel:Model>