From 0d2a93c1774804d6ba1817f0900f1b6c623f8ea9 Mon Sep 17 00:00:00 2001
From: Kevin Kassin <kevinkassin@gmx.de>
Date: Wed, 20 Sep 2017 00:57:31 +0200
Subject: [PATCH] Commit 20.9 1:00

migrated all non generated transformation testcases
---
 .../relationshipExclusion_test_1.xmi          | 100 +++++
 .../relationshipImplication_test_1.xmi        | 100 +++++
 .../RelationshipConstraintTestGenerator.py    | 315 ++++++++++++++
 .../relationshipConstraint_test_1.xmi         | 233 ++++++++++
 .../relationshipConstraint_test_2.xmi         | 127 ++++++
 .../Relationship/relationship_test_10.xmi     | 108 +++++
 .../Relationship/relationship_test_11.xmi     | 121 ++++++
 .../Relationship/relationship_test_9.xmi      | 123 ++++++
 .../relationshipcardinality_test_1.xmi        |  94 ++++
 .../relationshipcardinality_test_2.xmi        |  94 ++++
 .../relationshipcardinality_test_3.xmi        |  94 ++++
 .../roleEquivalence_test_1.xmi                |  94 ++++
 .../roleImplication_test_1.xmi                |  94 ++++
 .../roleProhibition_test_1.xmi                |  94 ++++
 .../integration/bank_example_test.xmi         | 407 ++++++++++++++++++
 .../relationshipImplication_test_1.xmi        | 132 +++---
 .../integration/bank_example_test.xmi         |  64 +--
 17 files changed, 2285 insertions(+), 109 deletions(-)
 create mode 100644 org.framed.orm.transformation.test/testcases/InterRelationshipExclusion/relationshipExclusion_test_1.xmi
 create mode 100644 org.framed.orm.transformation.test/testcases/InterRelationshipExclusion/relationshipImplication_test_1.xmi
 create mode 100644 org.framed.orm.transformation.test/testcases/IntraRelationshipConstraint/RelationshipConstraintTestGenerator.py
 create mode 100644 org.framed.orm.transformation.test/testcases/IntraRelationshipConstraint/relationshipConstraint_test_1.xmi
 create mode 100644 org.framed.orm.transformation.test/testcases/IntraRelationshipConstraint/relationshipConstraint_test_2.xmi
 create mode 100644 org.framed.orm.transformation.test/testcases/Relationship/relationship_test_10.xmi
 create mode 100644 org.framed.orm.transformation.test/testcases/Relationship/relationship_test_11.xmi
 create mode 100644 org.framed.orm.transformation.test/testcases/Relationship/relationship_test_9.xmi
 create mode 100644 org.framed.orm.transformation.test/testcases/RelationshipCardinality/relationshipcardinality_test_1.xmi
 create mode 100644 org.framed.orm.transformation.test/testcases/RelationshipCardinality/relationshipcardinality_test_2.xmi
 create mode 100644 org.framed.orm.transformation.test/testcases/RelationshipCardinality/relationshipcardinality_test_3.xmi
 create mode 100644 org.framed.orm.transformation.test/testcases/RoleConstraints/roleEquivalence_test_1.xmi
 create mode 100644 org.framed.orm.transformation.test/testcases/RoleConstraints/roleImplication_test_1.xmi
 create mode 100644 org.framed.orm.transformation.test/testcases/RoleConstraints/roleProhibition_test_1.xmi
 create mode 100644 org.framed.orm.transformation.test/testcases/integration/bank_example_test.xmi

diff --git a/org.framed.orm.transformation.test/testcases/InterRelationshipExclusion/relationshipExclusion_test_1.xmi b/org.framed.orm.transformation.test/testcases/InterRelationshipExclusion/relationshipExclusion_test_1.xmi
new file mode 100644
index 00000000..c780a166
--- /dev/null
+++ b/org.framed.orm.transformation.test/testcases/InterRelationshipExclusion/relationshipExclusion_test_1.xmi
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="ASCII"?>
+<ts:TestCase xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/"
+	xmlns:org.framed.iorm.model="http://iorm/1.0" xmlns:ts="http://org.framed/testmodel"
+	title="Simple TestCase for RelationshipImplications" description="Simple TestCase for RelationshipImplications">
+	<framedModel>
+		<elements xsi:type="org.framed.iorm.model:Shape" name="NT" outgoingRelations="//@framedModel/@elements.2" type="NaturalType">
+			<firstSegment/>
+			<secondSegment/>
+	 	</elements>
+		<elements xsi:type="org.framed.iorm.model:Shape" name="CT" incomingRelations="//@framedModel/@elements.2">
+	  		<firstSegment/>
+	   		<secondSegment/>
+		  	<model>
+		    	<elements xsi:type="org.framed.iorm.model:Shape" name="roleType" incomingRelations="//@framedModel/@elements.1/@model/@elements.3" outgoingRelations="//@framedModel/@elements.1/@model/@elements.2" type="RoleType">
+		          <firstSegment/>
+		          <secondSegment/>
+		          <description name="*"/>
+		        </elements>
+		        <elements xsi:type="org.framed.iorm.model:Shape" name="roleType1" incomingRelations="//@framedModel/@elements.1/@model/@elements.2" outgoingRelations="//@framedModel/@elements.1/@model/@elements.3" type="RoleType">
+		          <firstSegment/>
+		          <secondSegment/>
+		          <description name="*"/>
+		        </elements>
+		        <elements xsi:type="org.framed.iorm.model:Relation" name="rst" incomingRelations="//@framedModel/@elements.1/@model/@elements.4" type="Relationship" target="//@framedModel/@elements.1/@model/@elements.1" source="//@framedModel/@elements.1/@model/@elements.0">
+		          <sourceLabel name="1"/>
+		          <targetLabel name="1..*"/>
+		        </elements>
+		        <elements xsi:type="org.framed.iorm.model:Relation" name="subrst" outgoingRelations="//@framedModel/@elements.1/@model/@elements.4" type="Relationship" target="//@framedModel/@elements.1/@model/@elements.0" source="//@framedModel/@elements.1/@model/@elements.1">
+		          <sourceLabel name="*"/>
+		          <targetLabel name="0..1"/>
+		        </elements>
+		        <elements xsi:type="org.framed.iorm.model:Relation" type="RelationshipExclusion" target="//@framedModel/@elements.1/@model/@elements.2" source="//@framedModel/@elements.1/@model/@elements.3"/>
+		   	</model>
+		</elements>
+		<elements xsi:type="org.framed.iorm.model:Relation" type="Fulfillment" target="//@framedModel/@elements.1" source="//@framedModel/@elements.0" referencedRoles="//@framedModel/@elements.1/@model/@elements.0 //@framedModel/@elements.1/@model/@elements.1"/>
+		<framedConfiguration>
+    		<features/>
+   			<features name="Role_Types"/>
+    		<features name="Role_Structure"/>
+    		<features name="Role_Properties" manuallySelected="true"/>
+			<features name="Role_Behavior"/>
+			<features name="Role_Inheritance" manuallySelected="true"/>
+		    <features name="Playable"/>
+			<features name="Players"/>
+			<features name="Naturals"/>
+			<features name="Roles"/>
+			<features name="Compartments" manuallySelected="true"/>
+			<features name="Dates" manuallySelected="true"/>
+		    <features name="Dependent"/>
+		    <features name="On_Compartments"/>
+		    <features name="On_Relationships"/>
+		    <features name="Role_Constraints"/>
+		    <features name="Role_Implication" manuallySelected="true"/>
+		    <features name="Role_Prohibition" manuallySelected="true"/>
+		    <features name="Role_Equivalence"/>
+		    <features name="Group_Constraints" manuallySelected="true"/>
+		    <features name="Occurrence_Constraints" manuallySelected="true"/>
+		    <features name="Relationships"/>
+		    <features name="Relationship_Constraints"/>
+		    <features name="Relationship_Cardinality" manuallySelected="true"/>
+		    <features name="Intra_Relationship_Constraints"/>
+		    <features name="Parthood_Constraints" manuallySelected="true"/>
+		    <features name="Inter_Relationship_Constraints" manuallySelected="true"/>
+		    <features name="Compartment_Types"/>
+		    <features name="Compartment_Structure"/>
+		    <features name="Compartment_Properties" manuallySelected="true"/>
+		    <features name="Compartment_Behavior"/>
+		    <features name="Compartment_Inheritance" manuallySelected="true"/>
+		    <features name="Participants"/>
+		    <features name="Contains_Compartments" manuallySelected="true"/>
+		    <features name="Playable_by_Defining_Compartment" manuallySelected="true"/>
+		    <features name="Data_Types"/>
+		    <features name="Data_Type_Inheritance" manuallySelected="true"/>
+  		</framedConfiguration> 	
+	</framedModel>
+	<cromModel>
+		<elements xsi:type="crom_l1_composed:NaturalType" name="NT"/>
+  		<elements xsi:type="crom_l1_composed:CompartmentType" name="CT">
+   			<parts>
+      			<role xsi:type="crom_l1_composed:RoleType" name="roleType" incoming="//@cromModel/@elements.1/@relationships.1" outgoing="//@cromModel/@elements.1/@relationships.0"/>
+    		</parts>
+    		<parts>
+      			<role xsi:type="crom_l1_composed:RoleType" name="roleType1" incoming="//@cromModel/@elements.1/@relationships.0" outgoing="//@cromModel/@elements.1/@relationships.1"/>
+    		</parts>
+    		<relationships name="rst">
+      			<first lower="1" upper="1" holder="//@cromModel/@elements.1/@parts.0/@role"/>
+      			<second lower="1" holder="//@cromModel/@elements.1/@parts.1/@role"/>
+    		</relationships>
+    		<relationships name="subrst">
+      			<first holder="//@cromModel/@elements.1/@parts.1/@role"/>
+     		 	<second upper="1" holder="//@cromModel/@elements.1/@parts.0/@role"/>
+    		</relationships>
+    		<constraints xsi:type="crom_l1_composed:RelationshipExclusion" first="//@cromModel/@elements.1/@relationships.1" second="//@cromModel/@elements.1/@relationships.0"/>
+  		</elements>
+  		<relations xsi:type="crom_l1_composed:Fulfillment" filled="//@cromModel/@elements.1/@parts.0/@role" filler="//@cromModel/@elements.0"/>
+  		<relations xsi:type="crom_l1_composed:Fulfillment" filled="//@cromModel/@elements.1/@parts.1/@role" filler="//@cromModel/@elements.0"/>
+	</cromModel>
+</ts:TestCase>
diff --git a/org.framed.orm.transformation.test/testcases/InterRelationshipExclusion/relationshipImplication_test_1.xmi b/org.framed.orm.transformation.test/testcases/InterRelationshipExclusion/relationshipImplication_test_1.xmi
new file mode 100644
index 00000000..6a44f04c
--- /dev/null
+++ b/org.framed.orm.transformation.test/testcases/InterRelationshipExclusion/relationshipImplication_test_1.xmi
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="ASCII"?>
+<ts:TestCase xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/"
+	xmlns:org.framed.iorm.model="http://iorm/1.0" xmlns:ts="http://org.framed/testmodel"
+	title="Simple TestCase for RelationshipImplications" description="Simple TestCase for RelationshipImplications">
+	<framedModel>
+		<elements xsi:type="org.framed.iorm.model:Shape" name="NT" outgoingRelations="//@framedModel/@elements.2" type="NaturalType">
+			<firstSegment/>
+			<secondSegment/>
+	 	</elements>
+		<elements xsi:type="org.framed.iorm.model:Shape" name="CT" incomingRelations="//@framedModel/@elements.2">
+	  		<firstSegment/>
+	   		<secondSegment/>
+		  	<model>
+		    	<elements xsi:type="org.framed.iorm.model:Shape" name="roleType" incomingRelations="//@framedModel/@elements.1/@model/@elements.3" outgoingRelations="//@framedModel/@elements.1/@model/@elements.2" type="RoleType">
+		          <firstSegment/>
+		          <secondSegment/>
+		          <description name="*"/>
+		        </elements>
+		        <elements xsi:type="org.framed.iorm.model:Shape" name="roleType1" incomingRelations="//@framedModel/@elements.1/@model/@elements.2" outgoingRelations="//@framedModel/@elements.1/@model/@elements.3" type="RoleType">
+		          <firstSegment/>
+		          <secondSegment/>
+		          <description name="*"/>
+		        </elements>
+		        <elements xsi:type="org.framed.iorm.model:Relation" name="rst" incomingRelations="//@framedModel/@elements.1/@model/@elements.4" type="Relationship" target="//@framedModel/@elements.1/@model/@elements.1" source="//@framedModel/@elements.1/@model/@elements.0">
+		          <sourceLabel name="1"/>
+		          <targetLabel name="1..*"/>
+		        </elements>
+		        <elements xsi:type="org.framed.iorm.model:Relation" name="subrst" outgoingRelations="//@framedModel/@elements.1/@model/@elements.4" type="Relationship" target="//@framedModel/@elements.1/@model/@elements.0" source="//@framedModel/@elements.1/@model/@elements.1">
+		          <sourceLabel name="*"/>
+		          <targetLabel name="0..1"/>
+		        </elements>
+		        <elements xsi:type="org.framed.iorm.model:Relation" type="RelationshipImplication" target="//@framedModel/@elements.1/@model/@elements.2" source="//@framedModel/@elements.1/@model/@elements.3"/>
+		   	</model>
+		</elements>
+		<elements xsi:type="org.framed.iorm.model:Relation" type="Fulfillment" target="//@framedModel/@elements.1" source="//@framedModel/@elements.0" referencedRoles="//@framedModel/@elements.1/@model/@elements.0 //@framedModel/@elements.1/@model/@elements.1"/>
+		<framedConfiguration>
+    		<features/>
+   			<features name="Role_Types"/>
+    		<features name="Role_Structure"/>
+    		<features name="Role_Properties" manuallySelected="true"/>
+			<features name="Role_Behavior"/>
+			<features name="Role_Inheritance" manuallySelected="true"/>
+		    <features name="Playable"/>
+			<features name="Players"/>
+			<features name="Naturals"/>
+			<features name="Roles"/>
+			<features name="Compartments" manuallySelected="true"/>
+			<features name="Dates" manuallySelected="true"/>
+		    <features name="Dependent"/>
+		    <features name="On_Compartments"/>
+		    <features name="On_Relationships"/>
+		    <features name="Role_Constraints"/>
+		    <features name="Role_Implication" manuallySelected="true"/>
+		    <features name="Role_Prohibition" manuallySelected="true"/>
+		    <features name="Role_Equivalence"/>
+		    <features name="Group_Constraints" manuallySelected="true"/>
+		    <features name="Occurrence_Constraints" manuallySelected="true"/>
+		    <features name="Relationships"/>
+		    <features name="Relationship_Constraints"/>
+		    <features name="Relationship_Cardinality" manuallySelected="true"/>
+		    <features name="Intra_Relationship_Constraints"/>
+		    <features name="Parthood_Constraints" manuallySelected="true"/>
+		    <features name="Inter_Relationship_Constraints" manuallySelected="true"/>
+		    <features name="Compartment_Types"/>
+		    <features name="Compartment_Structure"/>
+		    <features name="Compartment_Properties" manuallySelected="true"/>
+		    <features name="Compartment_Behavior"/>
+		    <features name="Compartment_Inheritance" manuallySelected="true"/>
+		    <features name="Participants"/>
+		    <features name="Contains_Compartments" manuallySelected="true"/>
+		    <features name="Playable_by_Defining_Compartment" manuallySelected="true"/>
+		    <features name="Data_Types"/>
+		    <features name="Data_Type_Inheritance" manuallySelected="true"/>
+  		</framedConfiguration> 	
+	</framedModel>
+	<cromModel>
+		<elements xsi:type="crom_l1_composed:NaturalType" name="NT"/>
+  		<elements xsi:type="crom_l1_composed:CompartmentType" name="CT">
+   			<parts>
+      			<role xsi:type="crom_l1_composed:RoleType" name="roleType" incoming="//@cromModel/@elements.1/@relationships.1" outgoing="//@cromModel/@elements.1/@relationships.0"/>
+    		</parts>
+    		<parts>
+      			<role xsi:type="crom_l1_composed:RoleType" name="roleType1" incoming="//@cromModel/@elements.1/@relationships.0" outgoing="//@cromModel/@elements.1/@relationships.1"/>
+    		</parts>
+    		<relationships name="rst">
+      			<first lower="1" upper="1" holder="//@cromModel/@elements.1/@parts.0/@role"/>
+      			<second lower="1" holder="//@cromModel/@elements.1/@parts.1/@role"/>
+    		</relationships>
+    		<relationships name="subrst">
+      			<first holder="//@cromModel/@elements.1/@parts.1/@role"/>
+     		 	<second upper="1" holder="//@cromModel/@elements.1/@parts.0/@role"/>
+    		</relationships>
+    		<constraints xsi:type="crom_l1_composed:RelationshipImplication" first="//@cromModel/@elements.1/@relationships.1" second="//@cromModel/@elements.1/@relationships.0"/>
+  		</elements>
+  		<relations xsi:type="crom_l1_composed:Fulfillment" filled="//@cromModel/@elements.1/@parts.0/@role" filler="//@cromModel/@elements.0"/>
+  		<relations xsi:type="crom_l1_composed:Fulfillment" filled="//@cromModel/@elements.1/@parts.1/@role" filler="//@cromModel/@elements.0"/>
+	</cromModel>
+</ts:TestCase>
diff --git a/org.framed.orm.transformation.test/testcases/IntraRelationshipConstraint/RelationshipConstraintTestGenerator.py b/org.framed.orm.transformation.test/testcases/IntraRelationshipConstraint/RelationshipConstraintTestGenerator.py
new file mode 100644
index 00000000..8bc1c778
--- /dev/null
+++ b/org.framed.orm.transformation.test/testcases/IntraRelationshipConstraint/RelationshipConstraintTestGenerator.py
@@ -0,0 +1,315 @@
+#!/usr/bin/env python
+
+#FRaMED testcase generator for (n)-relationships and relationship constraints.
+#
+#This generator creates testcases for (n)-relationships or testcases for (n)-relationships with all possible combinations of constraints (unregarded impossible constraint combination, e.g. cyclic - acyclic). The generator will create a new folder (Relationship or RelationshipConstraint) in which all testcases (relationship_test_n/relationshipconstraint_test_n) are created. It is called by cmd/terminal with:
+#   "python TestGenerator.py n" (Create testcases for n-relationships)
+#   "python TestGenerator.py n true" (Create testcases for n-relationships with all possible constraint combinations)
+
+import sys, os, itertools
+
+__author__ = "Duc Dung Dam"
+__date__ = "24/04/16"
+__version__ = "1.0"
+__maintainer__ = "Duc Dung Dam"
+__email__ = "dung.dam_duc@tu-dresden.de"
+__status__ = "Prototype"
+
+
+types = ['RoleType']
+constraints = ['Irreflexive', 'Reflexive', 'Cyclic', 'Acyclic', 'Total']
+
+def write(filename, content, mode):
+	#0 = create relationship tests
+	#1 = create relationshipconstraint tests
+	if mode == 0:
+		path = os.path.dirname(os.path.realpath(__file__))+"/Relationship";
+		if not os.path.exists(path):
+			os.mkdir(path)
+		dirPath = "Relationship/"
+	if mode == 1:
+		path = os.path.dirname(os.path.realpath(__file__))+"/RelationshipConstraint";
+		if not os.path.exists(path):
+			os.mkdir(path)
+		dirPath = "RelationshipConstraint/"
+	filename += '.xmi'
+	try:
+		file = open(dirPath+filename, "w")
+		file.write(content)
+		file.close()
+	except:
+		sys.exit(0)
+
+def createRelationshipTestcases(n):
+	print "createRelationshipTestcases"
+
+	for x in types:
+		for y in range(1, n+1):
+			content = framedModel = cromModel = ''
+
+			#Header
+			filename = 'relationship_test_'+str(y)
+			description = "TestCase for "+ str(y) +" relationship(s) between two " + x + "(s)"
+			title = "TestCase for "+ str(y) +" relationship(s)"
+			header = ('<?xml version="1.0" encoding="ASCII"?>\n'
+			'<ts:TestCase\n'
+			'\txmi:version=\"2.0"\n'
+			'\txmlns:xmi="http://www.omg.org/XMI"\n'
+			'\txmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n'
+			'\txmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/"\n'
+			'\txmlns:org.framed.orm.model="http://orm/1.0"\n'
+			'\txmlns:ts="http://org.framed/testmodel"\n'
+			'\ttitle="'+title+'"\n'
+			'\tdescription="'+description+'">\n')
+			content += header
+			print filename
+
+			#FramedModel
+			framedModel += ('\t<framedModel>\n'
+			'\t\t<elements\n'
+			'\t\t\txsi:type="org.framed.orm.model:Shape"\n'
+			'\t\t\tname="Test">\n'
+			'\t\t\t<model>\n')
+
+			#FramedModel - Elements
+			#FramedModel - Elements - Loop for outgoingRelations/incomingRelations
+			framedRelations = ''
+			for z in range (0, y):
+				framedRelations += '//@framedModel/@elements.0/@model/@elements.'+str(z+2)+' '
+			framedRelations = framedRelations[:-1]
+			framedModel += ('\t\t\t\t<elements\n'
+			'\t\t\t\t\txsi:type="org.framed.orm.model:Shape"\n'
+			'\t\t\t\t\tname="RoleType1"\n'
+			'\t\t\t\t\toutgoingRelations="')
+			framedModel += framedRelations
+			framedModel += '"\n\t\t\t\t\ttype="'+ x +'"/>\n'
+			framedModel += ('\t\t\t\t<elements\n'
+			'\t\t\t\t\txsi:type="org.framed.orm.model:Shape"\n'
+			'\t\t\t\t\tname="RoleType2"\n'
+			'\t\t\t\t\tincomingRelations="')
+			framedModel += framedRelations
+			framedModel += '\"\n\t\t\t\t\ttype=\"'+ x +'\"/>\n'
+
+			#FramedModel - Relations
+			for z in range (0, y):
+				framedModel += ('\t\t\t\t<elements\n'
+				'\t\t\t\t\txsi:type="org.framed.orm.model:Relation"\n'
+				'\t\t\t\t\tname="testRelation_'+str(z)+'"\n'
+				'\t\t\t\t\ttype="Relationship"\n'
+				'\t\t\t\t\ttarget="//@framedModel/@elements.0/@model/@elements.1"\n'
+				'\t\t\t\t\tsource="//@framedModel/@elements.0/@model/@elements.0"/>\n')
+
+			framedModel += ('\t\t\t</model>\n'
+			'\t\t</elements>\n'
+			'\t</framedModel>\n')
+			content += framedModel
+
+			#CromModel
+			cromModel += ('\t<cromModel>\n'
+			'\t\t<elements\n'
+			'\t\t\txsi:type="crom_l1_composed:CompartmentType"\n'
+			'\t\t\tname="Test">\n')
+
+			#CromModel - Elements
+			#CromModel - Elements - Loop for outgoingRelations/incomingRelations
+			cromRelations = ''
+			for z in range (0, y):
+				cromRelations += '//@cromModel/@elements.0/@relationships.'+str(z)+' '
+			cromRelations = cromRelations[:-1]
+			cromModel += ('\t\t\t<parts>\n'
+			'\t\t\t\t<role\n'
+			'\t\t\t\txsi:type="crom_l1_composed:'+ x +'"\n'
+			'\t\t\t\tname="RoleType1"\n'
+			'\t\t\t\toutgoing=\"')
+			cromModel += cromRelations
+			cromModel += ('"/>\n'
+			'\t\t\t</parts>\n')
+
+			cromModel += ('\t\t\t<parts>\n'
+			'\t\t\t\t<role\n'
+			'\t\t\t\t\txsi:type="crom_l1_composed:'+ x +'"\n'
+			'\t\t\t\t\tname="RoleType2"\n'
+			'\t\t\t\t\tincoming="')
+			cromModel += cromRelations
+			cromModel += ('"/>\n'
+			'\t\t\t</parts>\n')
+
+			#CromModel - Relations
+			for z in xrange(0, y):
+				cromModel += '\t\t\t<relationships name=\"testRelation_'+ str(z) +'\"/>\n'
+
+			cromModel += ('\t\t</elements>\n'
+			'\t</cromModel>\n')
+			content += cromModel
+
+			#Footer
+			footer = "</ts:TestCase>"
+			content += footer
+
+			write(filename, content, 0)
+
+def createRelationshipConstraintsTestcases(n):
+	print "createRelationshipConstraintsTestcases"
+
+	#Generate all possible combinations of constraints for n relationships
+	cons = []
+	for y in range(1,len(constraints)+1):
+			cons.extend(itertools.combinations(constraints, y))
+	cons_combinations = []
+	for n_relationship in range(1, n+1):		
+		cons_combinations.extend(itertools.product(cons, repeat = n_relationship))
+	
+	#Start generate testcase
+	counter = 1
+	for tupel_constraint in cons_combinations:
+		#print "testcase with " + str(len(tupel_constraint)) + " relationship(s) and " + str(tupel_constraint) + " constraint(s)"
+	
+	#Init
+		content = framedModel = cromModel = ''
+
+		#Create all elements for FramedModel and CromModel
+		
+		framedRelations = framedRelationships = framedConstraints = ''
+		cromRelations = cromRelationships = cromConstraints = ''
+		
+
+		framedElementsCounter = 2 #2 because elements.0 and elements.1 are Roletypes
+		relationshipCounter = 0
+		framedElementsConstraintCounter = framedElementsCounter+len(tupel_constraint) 
+		
+		for constraint in tupel_constraint:
+			#outgoing/incoming relations
+				#framedModel
+			framedRelations += '//@framedModel/@elements.0/@model/@elements.'+str(framedElementsCounter)+" "
+				#cromModel
+			cromRelations += '//@cromModel/@elements.0/@relationships.'+str(relationshipCounter)+" "
+			#constraint elements
+			referencedRelation = 'referencedRelation="'
+			for element_constraint in constraint:
+				#framedModel
+				framedConstraints += ('\t\t\t\t<elements\n'
+				'\t\t\t\t\txsi:type="org.framed.orm.model:Relation"\n'
+				'\t\t\t\t\tname="'+element_constraint+'" type="'+element_constraint+'"\n'
+				'\t\t\t\t\ttarget="//@framedModel/@elements.0/@model/@elements.1"\n'
+				'\t\t\t\t\tsource="//@framedModel/@elements.0/@model/@elements.0"\n'
+				'\t\t\t\t\treferencedRelation="//@framedModel/@elements.0/@model/@elements.'+str(framedElementsCounter)+'"/>\n')
+				referencedRelation += '//@framedModel/@elements.0/@model/@elements.'+str(framedElementsConstraintCounter)+' '
+				framedElementsConstraintCounter += 1
+				#cromModel
+				cromConstraints += ('\t\t\t\t<constraints\n'
+					'\t\t\t\t\txsi:type="crom_l1_composed:'+element_constraint+'"\n'
+					'\t\t\t\t\trelation="//@cromModel/@elements.0/@relationships.'+str(relationshipCounter)+'"/>\n')
+			referencedRelation = referencedRelation[:-1]+'"'
+						
+			#relationship elements
+			#framedModel
+			framedRelationships += ('\t\t\t\t<elements\n'
+				'\t\t\t\t\txsi:type="org.framed.orm.model:Relation"\n'
+				'\t\t\t\t\tname="testRelation_' +str(relationshipCounter)+ '"\n'
+				'\t\t\t\t\ttype="Relationship"\n'
+				'\t\t\t\t\ttarget="//@framedModel/@elements.0/@model/@elements.1"\n'
+				'\t\t\t\t\tsource="//@framedModel/@elements.0/@model/@elements.0"\n'
+				'\t\t\t\t\t'+referencedRelation+'/>\n')
+
+			#cromModel
+			cromRelationships += ('\t\t\t\t<relationships name="testRelation_'+str(relationshipCounter)+'"/>\n')
+
+			framedElementsCounter += 1
+			relationshipCounter += 1
+		
+	#Header
+		filename = 'relationshipconstraint_test_'+str(counter)
+		description = "TestCase for "+ str(len(tupel_constraint)) +" relationship(s) with constraints "+ str(tupel_constraint) +" between two " + types[0]
+		title = "TestCase for "+ str(len(tupel_constraint)) +" relationship(s) with constraints "+ str(tupel_constraint)
+		header = ("<?xml version=\"1.0\" encoding=\"ASCII\"?>\n"
+			"<ts:TestCase\n"
+			"\txmi:version=\"2.0\"\n"
+			"\txmlns:xmi=\"http://www.omg.org/XMI\"\n"
+			"\txmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+			"\txmlns:crom_l1_composed=\"platform:/resource/org.rosi.crom.metamodel/\"\n"
+			"\txmlns:org.framed.orm.model=\"http://orm/1.0\"\n"
+			"\txmlns:ts=\"http://org.framed/testmodel\"\n"
+			"\ttitle=\""+title+"\"\n"
+			"\tdescription=\""+description+"\">\n")
+		content += header
+	#FramedModel
+		#Header	
+		framedModel += '\t<framedModel>\n'
+		#Content
+		framedModel += ('\t\t<elements\n'
+			'\t\t\txsi:type="org.framed.orm.model:Shape"\n'
+			'\t\t\tname="Test">\n'
+			'\t\t\t<model>\n'
+			#Roletype1
+			'\t\t\t\t<elements\n'
+			'\t\t\t\t\t\txsi:type="org.framed.orm.model:Shape"\n'
+			'\t\t\t\t\t\tname="'+types[0]+'1"\n'
+			'\t\t\t\t\t\toutgoingRelations="'+framedRelations+'"\n'
+			'\t\t\t\t\t\ttype="RoleType"/>\n'
+			#Roletype2
+			'\t\t\t\t<elements\n'
+			'\t\t\t\t\t\txsi:type="org.framed.orm.model:Shape"\n'
+			'\t\t\t\t\t\tname="'+types[0]+'2"\n'
+			'\t\t\t\t\t\tincomingRelations="'+framedRelations+'"\n'
+			'\t\t\t\t\t\ttype="RoleType"/>\n')
+		#Relationships
+		framedModel += framedRelationships
+		#Constraints
+		framedModel += framedConstraints
+		#Footer
+		framedModel += ('\t\t\t</model>\n'
+			'\t\t</elements>\n'
+			'\t</framedModel>\n')
+		content += framedModel
+
+	#CromModel
+		#Header
+		cromModel += '\t<cromModel>\n'
+		#Content
+		cromModel += ('\t\t<elements\n'
+			'\t\t\txsi:type="crom_l1_composed:CompartmentType"\n'
+			'\t\t\tname="Test">\n'
+			#Roletype1
+			'\t\t\t<parts>\n'
+			'\t\t\t\t<role\n'
+			'\t\t\t\t\txsi:type="crom_l1_composed:RoleType"\n'
+			'\t\t\t\t\tname="RoleType1"\n'
+			'\t\t\t\t\toutgoing="'+cromRelations+'"/>\n'
+			'\t\t\t</parts>\n'
+			#Roletype2
+			'\t\t\t<parts>\n'
+			'\t\t\t\t<role\n'
+			'\t\t\t\t\txsi:type="crom_l1_composed:RoleType"\n'
+			'\t\t\t\t\tname="RoleType2"\n'
+			'\t\t\t\t\tincoming="'+cromRelations+'"/>\n'
+			'\t\t\t</parts>\n')
+		#Relationships
+		cromModel += cromRelationships
+		#Constraints
+		cromModel += cromConstraints
+		#Footer
+		cromModel += ('\t\t</elements>\n'
+			'\t</cromModel>\n')
+		content += cromModel
+
+	#Footer
+		footer = "</ts:TestCase>"
+		content += footer
+
+		write(filename, content, 1)
+		counter += 1
+
+def init():
+	print "Generating Testcases:"
+	if sys.argv is not None:
+		#python TestGenerator (int)n (creates testcases from 1 to n relationships)
+		if len(sys.argv) == 2:
+			createRelationshipTestcases(int(sys.argv[1]))
+
+        #python TestGenerator (int)n (bool)true (creates testcases from 1 to n relationships with all possible constraint combinations)
+		if len(sys.argv) == 3 and bool(sys.argv[2]) is True:
+			createRelationshipConstraintsTestcases(int(sys.argv[1]))
+	else:
+		createRelationshipTestcases(1)
+
+init()
diff --git a/org.framed.orm.transformation.test/testcases/IntraRelationshipConstraint/relationshipConstraint_test_1.xmi b/org.framed.orm.transformation.test/testcases/IntraRelationshipConstraint/relationshipConstraint_test_1.xmi
new file mode 100644
index 00000000..a13b04be
--- /dev/null
+++ b/org.framed.orm.transformation.test/testcases/IntraRelationshipConstraint/relationshipConstraint_test_1.xmi
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="ASCII"?>
+<ts:TestCase xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/"
+	xmlns:org.framed.iorm.model="http://iorm/1.0" xmlns:ts="http://org.framed/testmodel"
+	title="TestCase for 3 relationship(s) with constraints (('Irreflexive', 'Reflexive', 'Cyclic', 'Acyclic', 'Total'), ('Irreflexive', 'Reflexive', 'Cyclic', 'Acyclic', 'Total'), ('Irreflexive', 'Reflexive', 'Cyclic', 'Acyclic', 'Total'))"
+	description="TestCase for 3 relationship(s) with constraints (('Irreflexive', 'Reflexive', 'Cyclic', 'Acyclic', 'Total'), ('Irreflexive', 'Reflexive', 'Cyclic', 'Acyclic', 'Total'), ('Irreflexive', 'Reflexive', 'Cyclic', 'Acyclic', 'Total')) between two RoleType">
+	<framedModel>
+		<elements xsi:type="org.framed.iorm.model:Shape" name="NT"
+			outgoingRelations="//@framedModel/@elements.2" type="NaturalType">
+			<firstSegment />
+			<secondSegment />
+		</elements>
+		<elements xsi:type="org.framed.iorm.model:Shape" name="CT"
+			incomingRelations="//@framedModel/@elements.2">
+			<firstSegment />
+			<secondSegment />
+			<model>
+				<elements xsi:type="org.framed.iorm.model:Shape" name="RT1"
+					incomingRelations="//@framedModel/@elements.1/@model/@elements.2 //@framedModel/@elements.1/@model/@elements.3 //@framedModel/@elements.1/@model/@elements.4 //@framedModel/@elements.1/@model/@elements.5 //@framedModel/@elements.1/@model/@elements.6 //@framedModel/@elements.1/@model/@elements.7 //@framedModel/@elements.1/@model/@elements.8 //@framedModel/@elements.1/@model/@elements.9 //@framedModel/@elements.1/@model/@elements.10 //@framedModel/@elements.1/@model/@elements.11 //@framedModel/@elements.1/@model/@elements.12 //@framedModel/@elements.1/@model/@elements.13 //@framedModel/@elements.1/@model/@elements.14 //@framedModel/@elements.1/@model/@elements.15 //@framedModel/@elements.1/@model/@elements.16 //@framedModel/@elements.1/@model/@elements.17 //@framedModel/@elements.1/@model/@elements.18 //@framedModel/@elements.1/@model/@elements.19"
+					type="RoleType">
+					<firstSegment />
+					<secondSegment />
+					<description name="*" />
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Shape" name="RT2"
+					outgoingRelations="//@framedModel/@elements.1/@model/@elements.2 //@framedModel/@elements.1/@model/@elements.3 //@framedModel/@elements.1/@model/@elements.4 //@framedModel/@elements.1/@model/@elements.5 //@framedModel/@elements.1/@model/@elements.6 //@framedModel/@elements.1/@model/@elements.7 //@framedModel/@elements.1/@model/@elements.8 //@framedModel/@elements.1/@model/@elements.9 //@framedModel/@elements.1/@model/@elements.10 //@framedModel/@elements.1/@model/@elements.11 //@framedModel/@elements.1/@model/@elements.12 //@framedModel/@elements.1/@model/@elements.13 //@framedModel/@elements.1/@model/@elements.14 //@framedModel/@elements.1/@model/@elements.15 //@framedModel/@elements.1/@model/@elements.16 //@framedModel/@elements.1/@model/@elements.17 //@framedModel/@elements.1/@model/@elements.18 //@framedModel/@elements.1/@model/@elements.19"
+					type="RoleType">
+					<firstSegment />
+					<secondSegment />
+					<description name="*" />
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="rst"
+					type="Relationship" target="//@framedModel/@elements.1/@model/@elements.0"
+					source="//@framedModel/@elements.1/@model/@elements.1"
+					referencedRelation="//@framedModel/@elements.1/@model/@elements.3 //@framedModel/@elements.1/@model/@elements.4 //@framedModel/@elements.1/@model/@elements.8 //@framedModel/@elements.1/@model/@elements.9 //@framedModel/@elements.1/@model/@elements.10">
+					<sourceLabel name="*" />
+					<targetLabel name="*" />
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="Irreflexive"
+					type="Irreflexive" target="//@framedModel/@elements.1/@model/@elements.0"
+					source="//@framedModel/@elements.1/@model/@elements.1"
+					referencedRelation="//@framedModel/@elements.1/@model/@elements.2">
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="Acyclic"
+					type="Acyclic" target="//@framedModel/@elements.1/@model/@elements.0"
+					source="//@framedModel/@elements.1/@model/@elements.1"
+					referencedRelation="//@framedModel/@elements.1/@model/@elements.2">
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="rst2"
+					type="Relationship" target="//@framedModel/@elements.1/@model/@elements.0"
+					source="//@framedModel/@elements.1/@model/@elements.1"
+					referencedRelation="//@framedModel/@elements.1/@model/@elements.7 //@framedModel/@elements.1/@model/@elements.11 //@framedModel/@elements.1/@model/@elements.12 //@framedModel/@elements.1/@model/@elements.13 //@framedModel/@elements.1/@model/@elements.14">
+					<sourceLabel name="*" />
+					<targetLabel name="*" />
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="rst3"
+					type="Relationship" target="//@framedModel/@elements.1/@model/@elements.0"
+					source="//@framedModel/@elements.1/@model/@elements.1"
+					referencedRelation="//@framedModel/@elements.1/@model/@elements.15 //@framedModel/@elements.1/@model/@elements.16 //@framedModel/@elements.1/@model/@elements.17 //@framedModel/@elements.1/@model/@elements.18 //@framedModel/@elements.1/@model/@elements.19">
+					<sourceLabel name="*" />
+					<targetLabel name="*" />
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="Irreflexive"
+					type="Irreflexive" target="//@framedModel/@elements.1/@model/@elements.0"
+					source="//@framedModel/@elements.1/@model/@elements.1"
+					referencedRelation="//@framedModel/@elements.1/@model/@elements.5">
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="Reflexive"
+					type="Reflexive" target="//@framedModel/@elements.1/@model/@elements.0"
+					source="//@framedModel/@elements.1/@model/@elements.1"
+					referencedRelation="//@framedModel/@elements.1/@model/@elements.2">
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="Total"
+					type="Total" target="//@framedModel/@elements.1/@model/@elements.0"
+					source="//@framedModel/@elements.1/@model/@elements.1"
+					referencedRelation="//@framedModel/@elements.1/@model/@elements.2">
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="Cyclic"
+					type="Cyclic" target="//@framedModel/@elements.1/@model/@elements.0"
+					source="//@framedModel/@elements.1/@model/@elements.1"
+					referencedRelation="//@framedModel/@elements.1/@model/@elements.2">
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="Reflexive"
+					type="Reflexive" target="//@framedModel/@elements.1/@model/@elements.0"
+					source="//@framedModel/@elements.1/@model/@elements.1"
+					referencedRelation="//@framedModel/@elements.1/@model/@elements.5">
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="Total"
+					type="Total" target="//@framedModel/@elements.1/@model/@elements.0"
+					source="//@framedModel/@elements.1/@model/@elements.1"
+					referencedRelation="//@framedModel/@elements.1/@model/@elements.5">
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="Cyclic"
+					type="Cyclic" target="//@framedModel/@elements.1/@model/@elements.0"
+					source="//@framedModel/@elements.1/@model/@elements.1"
+					referencedRelation="//@framedModel/@elements.1/@model/@elements.5">
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="Acyclic"
+					type="Acyclic" target="//@framedModel/@elements.1/@model/@elements.0"
+					source="//@framedModel/@elements.1/@model/@elements.1"
+					referencedRelation="//@framedModel/@elements.1/@model/@elements.5">
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="Reflexive"
+					type="Reflexive" target="//@framedModel/@elements.1/@model/@elements.0"
+					source="//@framedModel/@elements.1/@model/@elements.1"
+					referencedRelation="//@framedModel/@elements.1/@model/@elements.6">
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="Irreflexive"
+					type="Irreflexive" target="//@framedModel/@elements.1/@model/@elements.0"
+					source="//@framedModel/@elements.1/@model/@elements.1"
+					referencedRelation="//@framedModel/@elements.1/@model/@elements.6">
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="Total"
+					type="Total" target="//@framedModel/@elements.1/@model/@elements.0"
+					source="//@framedModel/@elements.1/@model/@elements.1"
+					referencedRelation="//@framedModel/@elements.1/@model/@elements.6">
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="Cyclic"
+					type="Cyclic" target="//@framedModel/@elements.1/@model/@elements.0"
+					source="//@framedModel/@elements.1/@model/@elements.1"
+					referencedRelation="//@framedModel/@elements.1/@model/@elements.6">
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="Acyclic"
+					type="Acyclic" target="//@framedModel/@elements.1/@model/@elements.0"
+					source="//@framedModel/@elements.1/@model/@elements.1"
+					referencedRelation="//@framedModel/@elements.1/@model/@elements.6">
+				</elements>
+			</model>
+		</elements>
+		<elements xsi:type="org.framed.iorm.model:Relation" type="Fulfillment"
+			target="//@framedModel/@elements.1" source="//@framedModel/@elements.0"
+			referencedRoles="//@framedModel/@elements.1/@model/@elements.0 //@framedModel/@elements.1/@model/@elements.1" />
+		<framedConfiguration>
+    		<features/>
+   			<features name="Role_Types"/>
+    		<features name="Role_Structure"/>
+    		<features name="Role_Properties" manuallySelected="true"/>
+			<features name="Role_Behavior"/>
+			<features name="Role_Inheritance" manuallySelected="true"/>
+		    <features name="Playable"/>
+			<features name="Players"/>
+			<features name="Naturals"/>
+			<features name="Roles"/>
+			<features name="Compartments" manuallySelected="true"/>
+			<features name="Dates" manuallySelected="true"/>
+		    <features name="Dependent"/>
+		    <features name="On_Compartments"/>
+		    <features name="On_Relationships"/>
+		    <features name="Role_Constraints"/>
+		    <features name="Role_Implication" manuallySelected="true"/>
+		    <features name="Role_Prohibition" manuallySelected="true"/>
+		    <features name="Role_Equivalence"/>
+		    <features name="Group_Constraints" manuallySelected="true"/>
+		    <features name="Occurrence_Constraints" manuallySelected="true"/>
+		    <features name="Relationships"/>
+		    <features name="Relationship_Constraints"/>
+		    <features name="Relationship_Cardinality" manuallySelected="true"/>
+		    <features name="Intra_Relationship_Constraints"/>
+		    <features name="Parthood_Constraints" manuallySelected="true"/>
+		    <features name="Inter_Relationship_Constraints" manuallySelected="true"/>
+		    <features name="Compartment_Types"/>
+		    <features name="Compartment_Structure"/>
+		    <features name="Compartment_Properties" manuallySelected="true"/>
+		    <features name="Compartment_Behavior"/>
+		    <features name="Compartment_Inheritance" manuallySelected="true"/>
+		    <features name="Participants"/>
+		    <features name="Contains_Compartments" manuallySelected="true"/>
+		    <features name="Playable_by_Defining_Compartment" manuallySelected="true"/>
+		    <features name="Data_Types"/>
+		    <features name="Data_Type_Inheritance" manuallySelected="true"/>
+  		</framedConfiguration> 
+	</framedModel>
+	<cromModel>
+		<elements xsi:type="crom_l1_composed:NaturalType" name="NT" />
+		<elements xsi:type="crom_l1_composed:CompartmentType" name="CT">
+			<parts>
+				<role xsi:type="crom_l1_composed:RoleType" name="RT1"
+					incoming="//@cromModel/@elements.1/@relationships.0 //@cromModel/@elements.1/@relationships.1 //@cromModel/@elements.1/@relationships.2" />
+			</parts>
+			<parts>
+				<role xsi:type="crom_l1_composed:RoleType" name="RT2"
+					outgoing="//@cromModel/@elements.1/@relationships.0 //@cromModel/@elements.1/@relationships.1 //@cromModel/@elements.1/@relationships.2" />
+			</parts>
+			<relationships name="rst">
+				<first holder="//@cromModel/@elements.1/@parts.1/@role" />
+				<second holder="//@cromModel/@elements.1/@parts.0/@role" />
+			</relationships>
+			<relationships name="rst2">
+				<first holder="//@cromModel/@elements.1/@parts.1/@role" />
+				<second holder="//@cromModel/@elements.1/@parts.0/@role" />
+			</relationships>
+			<relationships name="rst3">
+				<first holder="//@cromModel/@elements.1/@parts.1/@role" />
+				<second holder="//@cromModel/@elements.1/@parts.0/@role" />
+			</relationships>
+			<constraints xsi:type="crom_l1_composed:Irreflexive"
+				relation="//@cromModel/@elements.1/@relationships.0" />
+			<constraints xsi:type="crom_l1_composed:Acyclic"
+				relation="//@cromModel/@elements.1/@relationships.0" />
+			<constraints xsi:type="crom_l1_composed:Irreflexive"
+				relation="//@cromModel/@elements.1/@relationships.1" />
+			<constraints xsi:type="crom_l1_composed:Reflexive"
+				relation="//@cromModel/@elements.1/@relationships.0" />
+			<constraints xsi:type="crom_l1_composed:Total"
+				relation="//@cromModel/@elements.1/@relationships.0" />
+			<constraints xsi:type="crom_l1_composed:Cyclic"
+				relation="//@cromModel/@elements.1/@relationships.0" />
+			<constraints xsi:type="crom_l1_composed:Reflexive"
+				relation="//@cromModel/@elements.1/@relationships.1" />
+			<constraints xsi:type="crom_l1_composed:Total"
+				relation="//@cromModel/@elements.1/@relationships.1" />
+			<constraints xsi:type="crom_l1_composed:Cyclic"
+				relation="//@cromModel/@elements.1/@relationships.1" />
+			<constraints xsi:type="crom_l1_composed:Acyclic"
+				relation="//@cromModel/@elements.1/@relationships.1" />
+			<constraints xsi:type="crom_l1_composed:Reflexive"
+				relation="//@cromModel/@elements.1/@relationships.2" />
+			<constraints xsi:type="crom_l1_composed:Irreflexive"
+				relation="//@cromModel/@elements.1/@relationships.2" />
+			<constraints xsi:type="crom_l1_composed:Total"
+				relation="//@cromModel/@elements.1/@relationships.2" />
+			<constraints xsi:type="crom_l1_composed:Cyclic"
+				relation="//@cromModel/@elements.1/@relationships.2" />
+			<constraints xsi:type="crom_l1_composed:Acyclic"
+				relation="//@cromModel/@elements.1/@relationships.2" />
+		</elements>
+		<relations xsi:type="crom_l1_composed:Fulfillment"
+			filled="//@cromModel/@elements.1/@parts.0/@role" filler="//@cromModel/@elements.0" />
+		<relations xsi:type="crom_l1_composed:Fulfillment"
+			filled="//@cromModel/@elements.1/@parts.1/@role" filler="//@cromModel/@elements.0" />
+	</cromModel>
+</ts:TestCase>
\ No newline at end of file
diff --git a/org.framed.orm.transformation.test/testcases/IntraRelationshipConstraint/relationshipConstraint_test_2.xmi b/org.framed.orm.transformation.test/testcases/IntraRelationshipConstraint/relationshipConstraint_test_2.xmi
new file mode 100644
index 00000000..31c7fa5c
--- /dev/null
+++ b/org.framed.orm.transformation.test/testcases/IntraRelationshipConstraint/relationshipConstraint_test_2.xmi
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="ASCII"?>
+<ts:TestCase xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/"
+	xmlns:org.framed.iorm.model="http://iorm/1.0" xmlns:ts="http://org.framed/testmodel"
+	title="TestCase for 1 relationship(s) with constraint"
+	description="TestCase for 1 relationship(s) with constraint between two RoleType(s)">
+	<framedModel>
+		<elements xsi:type="org.framed.iorm.model:Shape" name="NT"
+			outgoingRelations="//@framedModel/@elements.2" type="NaturalType">
+			<firstSegment />
+			<secondSegment />
+		</elements>
+		<elements xsi:type="org.framed.iorm.model:Shape" name="CT"
+			incomingRelations="//@framedModel/@elements.2">
+			<firstSegment />
+			<secondSegment />
+			<model>
+				<elements xsi:type="org.framed.iorm.model:Shape" name="RT1"
+					incomingRelations="//@framedModel/@elements.1/@model/@elements.2 //@framedModel/@elements.1/@model/@elements.3 //@framedModel/@elements.1/@model/@elements.4 //@framedModel/@elements.1/@model/@elements.5"
+					type="RoleType">
+					<firstSegment />
+					<secondSegment />
+					<description name="*" />
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Shape" name="RT2"
+					outgoingRelations="//@framedModel/@elements.1/@model/@elements.2 //@framedModel/@elements.1/@model/@elements.3 //@framedModel/@elements.1/@model/@elements.4 //@framedModel/@elements.1/@model/@elements.5"
+					type="RoleType">
+					<firstSegment />
+					<secondSegment />
+					<description name="*" />
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="rst"
+					type="Relationship" target="//@framedModel/@elements.1/@model/@elements.0"
+					source="//@framedModel/@elements.1/@model/@elements.1"
+					referencedRelation="//@framedModel/@elements.1/@model/@elements.3 //@framedModel/@elements.1/@model/@elements.4 //@framedModel/@elements.1/@model/@elements.5">
+					<sourceLabel name="*" />
+					<targetLabel name="*" />
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="Irreflexive"
+					type="Irreflexive" target="//@framedModel/@elements.1/@model/@elements.0"
+					source="//@framedModel/@elements.1/@model/@elements.1"
+					referencedRelation="//@framedModel/@elements.1/@model/@elements.2">
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="Total"
+					type="Total" target="//@framedModel/@elements.1/@model/@elements.0"
+					source="//@framedModel/@elements.1/@model/@elements.1"
+					referencedRelation="//@framedModel/@elements.1/@model/@elements.2">
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="Acyclic"
+					type="Acyclic" target="//@framedModel/@elements.1/@model/@elements.0"
+					source="//@framedModel/@elements.1/@model/@elements.1"
+					referencedRelation="//@framedModel/@elements.1/@model/@elements.2">
+				</elements>
+			</model>
+		</elements>
+		<elements xsi:type="org.framed.iorm.model:Relation" type="Fulfillment"
+			target="//@framedModel/@elements.1" source="//@framedModel/@elements.0"
+			referencedRoles="//@framedModel/@elements.1/@model/@elements.0 //@framedModel/@elements.1/@model/@elements.1" />
+		<framedConfiguration>
+    		<features/>
+   			<features name="Role_Types"/>
+    		<features name="Role_Structure"/>
+    		<features name="Role_Properties" manuallySelected="true"/>
+			<features name="Role_Behavior"/>
+			<features name="Role_Inheritance" manuallySelected="true"/>
+		    <features name="Playable"/>
+			<features name="Players"/>
+			<features name="Naturals"/>
+			<features name="Roles"/>
+			<features name="Compartments" manuallySelected="true"/>
+			<features name="Dates" manuallySelected="true"/>
+		    <features name="Dependent"/>
+		    <features name="On_Compartments"/>
+		    <features name="On_Relationships"/>
+		    <features name="Role_Constraints"/>
+		    <features name="Role_Implication" manuallySelected="true"/>
+		    <features name="Role_Prohibition" manuallySelected="true"/>
+		    <features name="Role_Equivalence"/>
+		    <features name="Group_Constraints" manuallySelected="true"/>
+		    <features name="Occurrence_Constraints" manuallySelected="true"/>
+		    <features name="Relationships"/>
+		    <features name="Relationship_Constraints"/>
+		    <features name="Relationship_Cardinality" manuallySelected="true"/>
+		    <features name="Intra_Relationship_Constraints"/>
+		    <features name="Parthood_Constraints" manuallySelected="true"/>
+		    <features name="Inter_Relationship_Constraints" manuallySelected="true"/>
+		    <features name="Compartment_Types"/>
+		    <features name="Compartment_Structure"/>
+		    <features name="Compartment_Properties" manuallySelected="true"/>
+		    <features name="Compartment_Behavior"/>
+		    <features name="Compartment_Inheritance" manuallySelected="true"/>
+		    <features name="Participants"/>
+		    <features name="Contains_Compartments" manuallySelected="true"/>
+		    <features name="Playable_by_Defining_Compartment" manuallySelected="true"/>
+		    <features name="Data_Types"/>
+		    <features name="Data_Type_Inheritance" manuallySelected="true"/>
+  		</framedConfiguration> 	
+	</framedModel>
+	<cromModel>
+		<elements xsi:type="crom_l1_composed:NaturalType" name="NT" />
+		<elements xsi:type="crom_l1_composed:CompartmentType" name="CT">
+			<parts>
+				<role xsi:type="crom_l1_composed:RoleType" name="RT1"
+					incoming="//@cromModel/@elements.1/@relationships.0" />
+			</parts>
+			<parts>
+				<role xsi:type="crom_l1_composed:RoleType" name="RT2"
+					outgoing="//@cromModel/@elements.1/@relationships.0" />
+			</parts>
+			<relationships name="rst">
+				<first holder="//@cromModel/@elements.1/@parts.1/@role" />
+				<second holder="//@cromModel/@elements.1/@parts.0/@role" />
+			</relationships>
+			<constraints xsi:type="crom_l1_composed:Irreflexive"
+				relation="//@cromModel/@elements.1/@relationships.0" />
+			<constraints xsi:type="crom_l1_composed:Total"
+				relation="//@cromModel/@elements.1/@relationships.0" />
+			<constraints xsi:type="crom_l1_composed:Acyclic"
+				relation="//@cromModel/@elements.1/@relationships.0" />
+		</elements>
+		<relations xsi:type="crom_l1_composed:Fulfillment"
+			filled="//@cromModel/@elements.1/@parts.0/@role" filler="//@cromModel/@elements.0" />
+		<relations xsi:type="crom_l1_composed:Fulfillment"
+			filled="//@cromModel/@elements.1/@parts.1/@role" filler="//@cromModel/@elements.0" />
+	</cromModel>
+</ts:TestCase>
\ No newline at end of file
diff --git a/org.framed.orm.transformation.test/testcases/Relationship/relationship_test_10.xmi b/org.framed.orm.transformation.test/testcases/Relationship/relationship_test_10.xmi
new file mode 100644
index 00000000..2077d5c2
--- /dev/null
+++ b/org.framed.orm.transformation.test/testcases/Relationship/relationship_test_10.xmi
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="ASCII"?>
+<ts:TestCase
+		xmi:version="2.0"
+		xmlns:xmi="http://www.omg.org/XMI"
+		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/"
+		xmlns:org.framed.iorm.model="http://iorm/1.0"
+		xmlns:ts="http://org.framed/testmodel"
+		title="TestCase for 1 relationship(s)"
+		description="TestCase for 1 relationship(s) between two RoleType(s)">
+	<framedModel>
+		<elements xsi:type="org.framed.iorm.model:Shape" name="NT"
+			outgoingRelations="//@framedModel/@elements.2" type="NaturalType">
+			<firstSegment />
+			<secondSegment />
+		</elements>
+		<elements xsi:type="org.framed.iorm.model:Shape" name="CT"
+			incomingRelations="//@framedModel/@elements.2">
+			<firstSegment />
+			<secondSegment />
+			<model>
+				<elements xsi:type="org.framed.iorm.model:Shape" name="RT1"
+					incomingRelations="//@framedModel/@elements.1/@model/@elements.2"
+					type="RoleType">
+					<firstSegment />
+					<secondSegment />
+					<description name="*" />
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Shape" name="RT2"
+					outgoingRelations="//@framedModel/@elements.1/@model/@elements.2"
+					type="RoleType">
+					<firstSegment />
+					<secondSegment />
+					<description name="*" />
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="rst"
+					type="Relationship" target="//@framedModel/@elements.1/@model/@elements.0"
+					source="//@framedModel/@elements.1/@model/@elements.1">
+					<sourceLabel name="*" />
+					<targetLabel name="*" />
+				</elements>
+			</model>
+		</elements>
+		<elements xsi:type="org.framed.iorm.model:Relation" type="Fulfillment"
+			target="//@framedModel/@elements.1" source="//@framedModel/@elements.0"
+			referencedRoles="//@framedModel/@elements.1/@model/@elements.0 //@framedModel/@elements.1/@model/@elements.1" />
+		<framedConfiguration>
+    		<features/>
+   			<features name="Role_Types"/>
+    		<features name="Role_Structure"/>
+    		<features name="Role_Properties" manuallySelected="true"/>
+			<features name="Role_Behavior"/>
+			<features name="Role_Inheritance" manuallySelected="true"/>
+		    <features name="Playable"/>
+			<features name="Players"/>
+			<features name="Naturals"/>
+			<features name="Roles"/>
+			<features name="Compartments" manuallySelected="true"/>
+			<features name="Dates" manuallySelected="true"/>
+		    <features name="Dependent"/>
+		    <features name="On_Compartments"/>
+		    <features name="On_Relationships"/>
+		    <features name="Role_Constraints"/>
+		    <features name="Role_Implication" manuallySelected="true"/>
+		    <features name="Role_Prohibition" manuallySelected="true"/>
+		    <features name="Role_Equivalence"/>
+		    <features name="Group_Constraints" manuallySelected="true"/>
+		    <features name="Occurrence_Constraints" manuallySelected="true"/>
+		    <features name="Relationships"/>
+		    <features name="Relationship_Constraints"/>
+		    <features name="Relationship_Cardinality" manuallySelected="true"/>
+		    <features name="Intra_Relationship_Constraints"/>
+		    <features name="Parthood_Constraints" manuallySelected="true"/>
+		    <features name="Inter_Relationship_Constraints" manuallySelected="true"/>
+		    <features name="Compartment_Types"/>
+		    <features name="Compartment_Structure"/>
+		    <features name="Compartment_Properties" manuallySelected="true"/>
+		    <features name="Compartment_Behavior"/>
+		    <features name="Compartment_Inheritance" manuallySelected="true"/>
+		    <features name="Participants"/>
+		    <features name="Contains_Compartments" manuallySelected="true"/>
+		    <features name="Playable_by_Defining_Compartment" manuallySelected="true"/>
+		    <features name="Data_Types"/>
+		    <features name="Data_Type_Inheritance" manuallySelected="true"/>
+  		</framedConfiguration> 
+	</framedModel>
+	<cromModel>
+		<elements xsi:type="crom_l1_composed:NaturalType" name="NT" />
+		<elements xsi:type="crom_l1_composed:CompartmentType" name="CT">
+			<parts>
+				<role xsi:type="crom_l1_composed:RoleType" name="RT1"
+					incoming="//@cromModel/@elements.1/@relationships.0" />
+			</parts>
+			<parts>
+				<role xsi:type="crom_l1_composed:RoleType" name="RT2"
+					outgoing="//@cromModel/@elements.1/@relationships.0" />
+			</parts>
+			<relationships name="rst">
+				<first holder="//@cromModel/@elements.1/@parts.1/@role" />
+				<second holder="//@cromModel/@elements.1/@parts.0/@role" />
+			</relationships>
+		</elements>
+		<relations xsi:type="crom_l1_composed:Fulfillment"
+			filled="//@cromModel/@elements.1/@parts.0/@role" filler="//@cromModel/@elements.0" />
+		<relations xsi:type="crom_l1_composed:Fulfillment"
+			filled="//@cromModel/@elements.1/@parts.1/@role" filler="//@cromModel/@elements.0" />
+	</cromModel>
+</ts:TestCase>
diff --git a/org.framed.orm.transformation.test/testcases/Relationship/relationship_test_11.xmi b/org.framed.orm.transformation.test/testcases/Relationship/relationship_test_11.xmi
new file mode 100644
index 00000000..e00aa90e
--- /dev/null
+++ b/org.framed.orm.transformation.test/testcases/Relationship/relationship_test_11.xmi
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="ASCII"?>
+<ts:TestCase
+		xmi:version="2.0"
+		xmlns:xmi="http://www.omg.org/XMI"
+		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/"
+		xmlns:org.framed.iorm.model="http://iorm/1.0"
+		xmlns:ts="http://org.framed/testmodel"
+		title="TestCase for 2 relationship(s)"
+		description="TestCase for 2 relationship(s) between two RoleType(s)">
+	<framedModel>
+		<elements xsi:type="org.framed.iorm.model:Shape" name="NT"
+			outgoingRelations="//@framedModel/@elements.2" type="NaturalType">
+			<firstSegment />
+			<secondSegment />
+		</elements>
+		<elements xsi:type="org.framed.iorm.model:Shape" name="CT"
+			incomingRelations="//@framedModel/@elements.2">
+			<firstSegment />
+			<secondSegment />
+			<model>
+				<elements xsi:type="org.framed.iorm.model:Shape" name="RT1"
+					incomingRelations="//@framedModel/@elements.1/@model/@elements.3"
+					outgoingRelations="//@framedModel/@elements.1/@model/@elements.2"
+					type="RoleType">
+					<firstSegment />
+					<secondSegment />
+					<description name="*" />
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Shape" name="RT2"
+					incomingRelations="//@framedModel/@elements.1/@model/@elements.2"
+					outgoingRelations="//@framedModel/@elements.1/@model/@elements.3"
+					type="RoleType">
+					<firstSegment />
+					<secondSegment />
+					<description name="*" />
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="rst"
+					type="Relationship" target="//@framedModel/@elements.1/@model/@elements.1"
+					source="//@framedModel/@elements.1/@model/@elements.0">
+					<sourceLabel name="1" />
+					<targetLabel name="1..*" />
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="subrst"
+					type="Relationship" target="//@framedModel/@elements.1/@model/@elements.0"
+					source="//@framedModel/@elements.1/@model/@elements.1">
+					<sourceLabel name="*" />
+					<targetLabel name="0..1" />
+				</elements>
+			</model>
+		</elements>
+		<elements xsi:type="org.framed.iorm.model:Relation" type="Fulfillment"
+			target="//@framedModel/@elements.1" source="//@framedModel/@elements.0"
+			referencedRoles="//@framedModel/@elements.1/@model/@elements.0 //@framedModel/@elements.1/@model/@elements.1" />
+		<framedConfiguration>
+    		<features/>
+   			<features name="Role_Types"/>
+    		<features name="Role_Structure"/>
+    		<features name="Role_Properties" manuallySelected="true"/>
+			<features name="Role_Behavior"/>
+			<features name="Role_Inheritance" manuallySelected="true"/>
+		    <features name="Playable"/>
+			<features name="Players"/>
+			<features name="Naturals"/>
+			<features name="Roles"/>
+			<features name="Compartments" manuallySelected="true"/>
+			<features name="Dates" manuallySelected="true"/>
+		    <features name="Dependent"/>
+		    <features name="On_Compartments"/>
+		    <features name="On_Relationships"/>
+		    <features name="Role_Constraints"/>
+		    <features name="Role_Implication" manuallySelected="true"/>
+		    <features name="Role_Prohibition" manuallySelected="true"/>
+		    <features name="Role_Equivalence"/>
+		    <features name="Group_Constraints" manuallySelected="true"/>
+		    <features name="Occurrence_Constraints" manuallySelected="true"/>
+		    <features name="Relationships"/>
+		    <features name="Relationship_Constraints"/>
+		    <features name="Relationship_Cardinality" manuallySelected="true"/>
+		    <features name="Intra_Relationship_Constraints"/>
+		    <features name="Parthood_Constraints" manuallySelected="true"/>
+		    <features name="Inter_Relationship_Constraints" manuallySelected="true"/>
+		    <features name="Compartment_Types"/>
+		    <features name="Compartment_Structure"/>
+		    <features name="Compartment_Properties" manuallySelected="true"/>
+		    <features name="Compartment_Behavior"/>
+		    <features name="Compartment_Inheritance" manuallySelected="true"/>
+		    <features name="Participants"/>
+		    <features name="Contains_Compartments" manuallySelected="true"/>
+		    <features name="Playable_by_Defining_Compartment" manuallySelected="true"/>
+		    <features name="Data_Types"/>
+		    <features name="Data_Type_Inheritance" manuallySelected="true"/>
+  		</framedConfiguration> 	
+	</framedModel>
+	<cromModel>
+		<elements xsi:type="crom_l1_composed:NaturalType" name="NT" />
+		<elements xsi:type="crom_l1_composed:CompartmentType" name="CT">
+			<parts>
+				<role xsi:type="crom_l1_composed:RoleType" name="RT1"
+					incoming="//@cromModel/@elements.1/@relationships.1" outgoing="//@cromModel/@elements.1/@relationships.0" />
+			</parts>
+			<parts>
+				<role xsi:type="crom_l1_composed:RoleType" name="RT2"
+					incoming="//@cromModel/@elements.1/@relationships.0" outgoing="//@cromModel/@elements.1/@relationships.1" />
+			</parts>
+			<relationships name="rst">
+				<first lower="1" upper="1"
+					holder="//@cromModel/@elements.1/@parts.0/@role" />
+				<second lower="1" holder="//@cromModel/@elements.1/@parts.1/@role" />
+			</relationships>
+			<relationships name="subrst">
+				<first holder="//@cromModel/@elements.1/@parts.1/@role" />
+				<second upper="1" holder="//@cromModel/@elements.1/@parts.0/@role" />
+			</relationships>
+		</elements>
+		<relations xsi:type="crom_l1_composed:Fulfillment"
+			filled="//@cromModel/@elements.1/@parts.0/@role" filler="//@cromModel/@elements.0" />
+		<relations xsi:type="crom_l1_composed:Fulfillment"
+			filled="//@cromModel/@elements.1/@parts.1/@role" filler="//@cromModel/@elements.0" />
+	</cromModel>
+</ts:TestCase>
\ No newline at end of file
diff --git a/org.framed.orm.transformation.test/testcases/Relationship/relationship_test_9.xmi b/org.framed.orm.transformation.test/testcases/Relationship/relationship_test_9.xmi
new file mode 100644
index 00000000..688a16d7
--- /dev/null
+++ b/org.framed.orm.transformation.test/testcases/Relationship/relationship_test_9.xmi
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="ASCII"?>
+<ts:TestCase
+    xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/"
+    xmlns:org.framed.iorm.model="http://iorm/1.0"
+    xmlns:ts="http://org.framed/testmodel"
+    title="TestCase for cyclic,total relationships"
+    description="TestCase for cyclic,total relationships where one RoleType is referenced by a cyclic,total relationship to another RoleType">
+  <framedModel>
+		<elements xsi:type="org.framed.iorm.model:Shape" name="NT"
+			outgoingRelations="//@framedModel/@elements.2" type="NaturalType">
+			<firstSegment />
+			<secondSegment />
+		</elements>
+		<elements xsi:type="org.framed.iorm.model:Shape" name="CT"
+			incomingRelations="//@framedModel/@elements.2">
+			<firstSegment />
+			<secondSegment />
+			<model>
+				<elements xsi:type="org.framed.iorm.model:Shape" name="RT1"
+					incomingRelations="//@framedModel/@elements.1/@model/@elements.2 //@framedModel/@elements.1/@model/@elements.3 //@framedModel/@elements.1/@model/@elements.4"
+					type="RoleType">
+					<firstSegment />
+					<secondSegment />
+					<description name="*" />
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Shape" name="RT2"
+					outgoingRelations="//@framedModel/@elements.1/@model/@elements.2 //@framedModel/@elements.1/@model/@elements.3 //@framedModel/@elements.1/@model/@elements.4"
+					type="RoleType">
+					<firstSegment />
+					<secondSegment />
+					<description name="*" />
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="rst"
+					type="Relationship" target="//@framedModel/@elements.1/@model/@elements.0"
+					source="//@framedModel/@elements.1/@model/@elements.1"
+					referencedRelation="//@framedModel/@elements.1/@model/@elements.3 //@framedModel/@elements.1/@model/@elements.4">
+					<sourceLabel name="*" />
+					<targetLabel name="*" />
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="Irreflexive"
+					type="Irreflexive" target="//@framedModel/@elements.1/@model/@elements.0"
+					source="//@framedModel/@elements.1/@model/@elements.1"
+					referencedRelation="//@framedModel/@elements.1/@model/@elements.2">
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="Total"
+					type="Total" target="//@framedModel/@elements.1/@model/@elements.0"
+					source="//@framedModel/@elements.1/@model/@elements.1"
+					referencedRelation="//@framedModel/@elements.1/@model/@elements.2">
+				</elements>
+			</model>
+		</elements>
+		<elements xsi:type="org.framed.iorm.model:Relation" type="Fulfillment"
+			target="//@framedModel/@elements.1" source="//@framedModel/@elements.0"
+			referencedRoles="//@framedModel/@elements.1/@model/@elements.0 //@framedModel/@elements.1/@model/@elements.1" />
+		<framedConfiguration>
+    		<features/>
+   			<features name="Role_Types"/>
+    		<features name="Role_Structure"/>
+    		<features name="Role_Properties" manuallySelected="true"/>
+			<features name="Role_Behavior"/>
+			<features name="Role_Inheritance" manuallySelected="true"/>
+		    <features name="Playable"/>
+			<features name="Players"/>
+			<features name="Naturals"/>
+			<features name="Roles"/>
+			<features name="Compartments" manuallySelected="true"/>
+			<features name="Dates" manuallySelected="true"/>
+		    <features name="Dependent"/>
+		    <features name="On_Compartments"/>
+		    <features name="On_Relationships"/>
+		    <features name="Role_Constraints"/>
+		    <features name="Role_Implication" manuallySelected="true"/>
+		    <features name="Role_Prohibition" manuallySelected="true"/>
+		    <features name="Role_Equivalence"/>
+		    <features name="Group_Constraints" manuallySelected="true"/>
+		    <features name="Occurrence_Constraints" manuallySelected="true"/>
+		    <features name="Relationships"/>
+		    <features name="Relationship_Constraints"/>
+		    <features name="Relationship_Cardinality" manuallySelected="true"/>
+		    <features name="Intra_Relationship_Constraints"/>
+		    <features name="Parthood_Constraints" manuallySelected="true"/>
+		    <features name="Inter_Relationship_Constraints" manuallySelected="true"/>
+		    <features name="Compartment_Types"/>
+		    <features name="Compartment_Structure"/>
+		    <features name="Compartment_Properties" manuallySelected="true"/>
+		    <features name="Compartment_Behavior"/>
+		    <features name="Compartment_Inheritance" manuallySelected="true"/>
+		    <features name="Participants"/>
+		    <features name="Contains_Compartments" manuallySelected="true"/>
+		    <features name="Playable_by_Defining_Compartment" manuallySelected="true"/>
+		    <features name="Data_Types"/>
+		    <features name="Data_Type_Inheritance" manuallySelected="true"/>
+  		</framedConfiguration> 	
+	</framedModel>
+	<cromModel>
+		<elements xsi:type="crom_l1_composed:NaturalType" name="NT" />
+		<elements xsi:type="crom_l1_composed:CompartmentType" name="CT">
+			<parts>
+				<role xsi:type="crom_l1_composed:RoleType" name="RT1"
+					incoming="//@cromModel/@elements.1/@relationships.0" />
+			</parts>
+			<parts>
+				<role xsi:type="crom_l1_composed:RoleType" name="RT2"
+					outgoing="//@cromModel/@elements.1/@relationships.0" />
+			</parts>
+			<relationships name="rst">
+				<first holder="//@cromModel/@elements.1/@parts.1/@role" />
+				<second holder="//@cromModel/@elements.1/@parts.0/@role" />
+			</relationships>
+			<constraints xsi:type="crom_l1_composed:Irreflexive"
+				relation="//@cromModel/@elements.1/@relationships.0" />
+			<constraints xsi:type="crom_l1_composed:Total"
+				relation="//@cromModel/@elements.1/@relationships.0" />
+		</elements>
+		<relations xsi:type="crom_l1_composed:Fulfillment"
+			filled="//@cromModel/@elements.1/@parts.0/@role" filler="//@cromModel/@elements.0" />
+		<relations xsi:type="crom_l1_composed:Fulfillment"
+			filled="//@cromModel/@elements.1/@parts.1/@role" filler="//@cromModel/@elements.0" />
+	</cromModel>
+</ts:TestCase>
\ No newline at end of file
diff --git a/org.framed.orm.transformation.test/testcases/RelationshipCardinality/relationshipcardinality_test_1.xmi b/org.framed.orm.transformation.test/testcases/RelationshipCardinality/relationshipcardinality_test_1.xmi
new file mode 100644
index 00000000..787c1772
--- /dev/null
+++ b/org.framed.orm.transformation.test/testcases/RelationshipCardinality/relationshipcardinality_test_1.xmi
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="ASCII"?>
+<ts:TestCase
+    xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/"
+    xmlns:org.framed.iorm.model="http://iorm/1.0"
+    xmlns:ts="http://org.framed/testmodel"
+    title="TestCase for Relationship Cardinality (1)"
+    description="TestCase for Relationship Cardinality (1) (2)">
+<framedModel>
+		<elements xsi:type="org.framed.iorm.model:Shape" name="CT">
+			<firstSegment />
+			<secondSegment />
+			<model>
+				<elements xsi:type="org.framed.iorm.model:Shape" name="RT1"
+					incomingRelations="//@framedModel/@elements.0/@model/@elements.2"
+					type="RoleType">
+					<firstSegment />
+					<secondSegment />
+					<description name="*" />
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Shape" name="RT2"
+					outgoingRelations="//@framedModel/@elements.0/@model/@elements.2"
+					type="RoleType">
+					<firstSegment />
+					<secondSegment />
+					<description name="*" />
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="rst"
+					type="Relationship" target="//@framedModel/@elements.0/@model/@elements.0"
+					source="//@framedModel/@elements.0/@model/@elements.1">
+					<sourceLabel name="1" />
+					<targetLabel name="2" />
+				</elements>
+			</model>
+		</elements>
+		<framedConfiguration>
+    		<features/>
+   			<features name="Role_Types"/>
+    		<features name="Role_Structure"/>
+    		<features name="Role_Properties" manuallySelected="true"/>
+			<features name="Role_Behavior"/>
+			<features name="Role_Inheritance" manuallySelected="true"/>
+		    <features name="Playable"/>
+			<features name="Players"/>
+			<features name="Naturals"/>
+			<features name="Roles"/>
+			<features name="Compartments" manuallySelected="true"/>
+			<features name="Dates" manuallySelected="true"/>
+		    <features name="Dependent"/>
+		    <features name="On_Compartments"/>
+		    <features name="On_Relationships"/>
+		    <features name="Role_Constraints"/>
+		    <features name="Role_Implication" manuallySelected="true"/>
+		    <features name="Role_Prohibition" manuallySelected="true"/>
+		    <features name="Role_Equivalence"/>
+		    <features name="Group_Constraints" manuallySelected="true"/>
+		    <features name="Occurrence_Constraints" manuallySelected="true"/>
+		    <features name="Relationships"/>
+		    <features name="Relationship_Constraints"/>
+		    <features name="Relationship_Cardinality" manuallySelected="true"/>
+		    <features name="Intra_Relationship_Constraints"/>
+		    <features name="Parthood_Constraints" manuallySelected="true"/>
+		    <features name="Inter_Relationship_Constraints" manuallySelected="true"/>
+		    <features name="Compartment_Types"/>
+		    <features name="Compartment_Structure"/>
+		    <features name="Compartment_Properties" manuallySelected="true"/>
+		    <features name="Compartment_Behavior"/>
+		    <features name="Compartment_Inheritance" manuallySelected="true"/>
+		    <features name="Participants"/>
+		    <features name="Contains_Compartments" manuallySelected="true"/>
+		    <features name="Playable_by_Defining_Compartment" manuallySelected="true"/>
+		    <features name="Data_Types"/>
+		    <features name="Data_Type_Inheritance" manuallySelected="true"/>
+  		</framedConfiguration>
+	</framedModel>
+	<cromModel>
+		<elements xsi:type="crom_l1_composed:CompartmentType" name="CT">
+			<parts>
+				<role xsi:type="crom_l1_composed:RoleType" name="RT1"
+					incoming="//@cromModel/@elements.0/@relationships.0" />
+			</parts>
+			<parts>
+				<role xsi:type="crom_l1_composed:RoleType" name="RT2"
+					outgoing="//@cromModel/@elements.0/@relationships.0" />
+			</parts>
+			<relationships name="rst">
+				<first lower="1" upper="1"  holder="//@cromModel/@elements.0/@parts.1/@role" />
+				<second lower="2" upper="2" holder="//@cromModel/@elements.0/@parts.0/@role" />
+			</relationships>
+		</elements>
+	</cromModel>
+</ts:TestCase>
diff --git a/org.framed.orm.transformation.test/testcases/RelationshipCardinality/relationshipcardinality_test_2.xmi b/org.framed.orm.transformation.test/testcases/RelationshipCardinality/relationshipcardinality_test_2.xmi
new file mode 100644
index 00000000..a67828e9
--- /dev/null
+++ b/org.framed.orm.transformation.test/testcases/RelationshipCardinality/relationshipcardinality_test_2.xmi
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="ASCII"?>
+<ts:TestCase
+    xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/"
+    xmlns:org.framed.iorm.model="http://iorm/1.0"
+    xmlns:ts="http://org.framed/testmodel"
+    title="TestCase for Relationship Cardinality (1..2)"
+    description="TestCase for Relationship Cardinality (1..2) (2..3)">
+<framedModel>
+		<elements xsi:type="org.framed.iorm.model:Shape" name="CT">
+			<firstSegment />
+			<secondSegment />
+			<model>
+				<elements xsi:type="org.framed.iorm.model:Shape" name="RT1"
+					incomingRelations="//@framedModel/@elements.0/@model/@elements.2"
+					type="RoleType">
+					<firstSegment />
+					<secondSegment />
+					<description name="*" />
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Shape" name="RT2"
+					outgoingRelations="//@framedModel/@elements.0/@model/@elements.2"
+					type="RoleType">
+					<firstSegment />
+					<secondSegment />
+					<description name="*" />
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="rst"
+					type="Relationship" target="//@framedModel/@elements.0/@model/@elements.0"
+					source="//@framedModel/@elements.0/@model/@elements.1">
+					<sourceLabel name="1..2" />
+					<targetLabel name="3..4" />
+				</elements>
+			</model>
+		</elements>
+		<framedConfiguration>
+    		<features/>
+   			<features name="Role_Types"/>
+    		<features name="Role_Structure"/>
+    		<features name="Role_Properties" manuallySelected="true"/>
+			<features name="Role_Behavior"/>
+			<features name="Role_Inheritance" manuallySelected="true"/>
+		    <features name="Playable"/>
+			<features name="Players"/>
+			<features name="Naturals"/>
+			<features name="Roles"/>
+			<features name="Compartments" manuallySelected="true"/>
+			<features name="Dates" manuallySelected="true"/>
+		    <features name="Dependent"/>
+		    <features name="On_Compartments"/>
+		    <features name="On_Relationships"/>
+		    <features name="Role_Constraints"/>
+		    <features name="Role_Implication" manuallySelected="true"/>
+		    <features name="Role_Prohibition" manuallySelected="true"/>
+		    <features name="Role_Equivalence"/>
+		    <features name="Group_Constraints" manuallySelected="true"/>
+		    <features name="Occurrence_Constraints" manuallySelected="true"/>
+		    <features name="Relationships"/>
+		    <features name="Relationship_Constraints"/>
+		    <features name="Relationship_Cardinality" manuallySelected="true"/>
+		    <features name="Intra_Relationship_Constraints"/>
+		    <features name="Parthood_Constraints" manuallySelected="true"/>
+		    <features name="Inter_Relationship_Constraints" manuallySelected="true"/>
+		    <features name="Compartment_Types"/>
+		    <features name="Compartment_Structure"/>
+		    <features name="Compartment_Properties" manuallySelected="true"/>
+		    <features name="Compartment_Behavior"/>
+		    <features name="Compartment_Inheritance" manuallySelected="true"/>
+		    <features name="Participants"/>
+		    <features name="Contains_Compartments" manuallySelected="true"/>
+		    <features name="Playable_by_Defining_Compartment" manuallySelected="true"/>
+		    <features name="Data_Types"/>
+		    <features name="Data_Type_Inheritance" manuallySelected="true"/>
+  		</framedConfiguration> 
+	</framedModel>
+	<cromModel>
+		<elements xsi:type="crom_l1_composed:CompartmentType" name="CT">
+			<parts>
+				<role xsi:type="crom_l1_composed:RoleType" name="RT1"
+					incoming="//@cromModel/@elements.0/@relationships.0" />
+			</parts>
+			<parts>
+				<role xsi:type="crom_l1_composed:RoleType" name="RT2"
+					outgoing="//@cromModel/@elements.0/@relationships.0" />
+			</parts>
+			<relationships name="rst">
+				<first lower="1" upper="2"  holder="//@cromModel/@elements.0/@parts.1/@role" />
+				<second lower="3" upper="4" holder="//@cromModel/@elements.0/@parts.0/@role" />
+			</relationships>
+		</elements>
+	</cromModel>
+</ts:TestCase>
diff --git a/org.framed.orm.transformation.test/testcases/RelationshipCardinality/relationshipcardinality_test_3.xmi b/org.framed.orm.transformation.test/testcases/RelationshipCardinality/relationshipcardinality_test_3.xmi
new file mode 100644
index 00000000..299baa22
--- /dev/null
+++ b/org.framed.orm.transformation.test/testcases/RelationshipCardinality/relationshipcardinality_test_3.xmi
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="ASCII"?>
+<ts:TestCase
+    xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/"
+    xmlns:org.framed.iorm.model="http://iorm/1.0"
+    xmlns:ts="http://org.framed/testmodel"
+    title="TestCase for Relationship Cardinality (1..*)"
+    description="TestCase for Relationship Cardinality (1..*) (2..*)">
+<framedModel>
+		<elements xsi:type="org.framed.iorm.model:Shape" name="CT">
+			<firstSegment />
+			<secondSegment />
+			<model>
+				<elements xsi:type="org.framed.iorm.model:Shape" name="RT1"
+					incomingRelations="//@framedModel/@elements.0/@model/@elements.2"
+					type="RoleType">
+					<firstSegment />
+					<secondSegment />
+					<description name="*" />
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Shape" name="RT2"
+					outgoingRelations="//@framedModel/@elements.0/@model/@elements.2"
+					type="RoleType">
+					<firstSegment />
+					<secondSegment />
+					<description name="*" />
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="rst"
+					type="Relationship" target="//@framedModel/@elements.0/@model/@elements.0"
+					source="//@framedModel/@elements.0/@model/@elements.1">
+					<sourceLabel name="1..*" />
+					<targetLabel name="2..*" />
+				</elements>
+			</model>
+		</elements>
+		<framedConfiguration>
+    		<features/>
+   			<features name="Role_Types"/>
+    		<features name="Role_Structure"/>
+    		<features name="Role_Properties" manuallySelected="true"/>
+			<features name="Role_Behavior"/>
+			<features name="Role_Inheritance" manuallySelected="true"/>
+		    <features name="Playable"/>
+			<features name="Players"/>
+			<features name="Naturals"/>
+			<features name="Roles"/>
+			<features name="Compartments" manuallySelected="true"/>
+			<features name="Dates" manuallySelected="true"/>
+		    <features name="Dependent"/>
+		    <features name="On_Compartments"/>
+		    <features name="On_Relationships"/>
+		    <features name="Role_Constraints"/>
+		    <features name="Role_Implication" manuallySelected="true"/>
+		    <features name="Role_Prohibition" manuallySelected="true"/>
+		    <features name="Role_Equivalence"/>
+		    <features name="Group_Constraints" manuallySelected="true"/>
+		    <features name="Occurrence_Constraints" manuallySelected="true"/>
+		    <features name="Relationships"/>
+		    <features name="Relationship_Constraints"/>
+		    <features name="Relationship_Cardinality" manuallySelected="true"/>
+		    <features name="Intra_Relationship_Constraints"/>
+		    <features name="Parthood_Constraints" manuallySelected="true"/>
+		    <features name="Inter_Relationship_Constraints" manuallySelected="true"/>
+		    <features name="Compartment_Types"/>
+		    <features name="Compartment_Structure"/>
+		    <features name="Compartment_Properties" manuallySelected="true"/>
+		    <features name="Compartment_Behavior"/>
+		    <features name="Compartment_Inheritance" manuallySelected="true"/>
+		    <features name="Participants"/>
+		    <features name="Contains_Compartments" manuallySelected="true"/>
+		    <features name="Playable_by_Defining_Compartment" manuallySelected="true"/>
+		    <features name="Data_Types"/>
+		    <features name="Data_Type_Inheritance" manuallySelected="true"/>
+  		</framedConfiguration> 
+	</framedModel>
+	<cromModel>
+		<elements xsi:type="crom_l1_composed:CompartmentType" name="CT">
+			<parts>
+				<role xsi:type="crom_l1_composed:RoleType" name="RT1"
+					incoming="//@cromModel/@elements.0/@relationships.0" />
+			</parts>
+			<parts>
+				<role xsi:type="crom_l1_composed:RoleType" name="RT2"
+					outgoing="//@cromModel/@elements.0/@relationships.0" />
+			</parts>
+			<relationships name="rst">
+				<first lower="1"  holder="//@cromModel/@elements.0/@parts.1/@role" />
+				<second lower="2" holder="//@cromModel/@elements.0/@parts.0/@role" />
+			</relationships>
+		</elements>
+	</cromModel>
+</ts:TestCase>
diff --git a/org.framed.orm.transformation.test/testcases/RoleConstraints/roleEquivalence_test_1.xmi b/org.framed.orm.transformation.test/testcases/RoleConstraints/roleEquivalence_test_1.xmi
new file mode 100644
index 00000000..cb078cee
--- /dev/null
+++ b/org.framed.orm.transformation.test/testcases/RoleConstraints/roleEquivalence_test_1.xmi
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="ASCII"?>
+<ts:TestCase
+    xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/"
+    xmlns:org.framed.iorm.model="http://iorm/1.0"
+    xmlns:ts="http://org.framed/testmodel"
+    title="Simple TestCase for RoleImplications"
+    description="Simple TestCase for RoleImplications">
+  <framedModel>
+    <elements
+        xsi:type="org.framed.iorm.model:Shape"
+        name="compType1">
+      <model>
+        <elements
+            xsi:type="org.framed.iorm.model:Shape"
+            name="roleType1"
+            outgoingRelations="//@framedModel/@elements.0/@model/@elements.2"
+            type="RoleType"/>
+        <elements
+            xsi:type="org.framed.iorm.model:Shape"
+            name="roleType2"
+            incomingRelations="//@framedModel/@elements.0/@model/@elements.2"
+            type="RoleType"/>
+        <elements
+            xsi:type="org.framed.iorm.model:Relation"
+            name=""
+            type="RoleEquivalence"
+            target="//@framedModel/@elements.0/@model/@elements.1"
+            source="//@framedModel/@elements.0/@model/@elements.0"/>
+      </model>
+    </elements>
+    <framedConfiguration>
+    		<features/>
+   			<features name="Role_Types"/>
+    		<features name="Role_Structure"/>
+    		<features name="Role_Properties" manuallySelected="true"/>
+			<features name="Role_Behavior"/>
+			<features name="Role_Inheritance" manuallySelected="true"/>
+		    <features name="Playable"/>
+			<features name="Players"/>
+			<features name="Naturals"/>
+			<features name="Roles"/>
+			<features name="Compartments" manuallySelected="true"/>
+			<features name="Dates" manuallySelected="true"/>
+		    <features name="Dependent"/>
+		    <features name="On_Compartments"/>
+		    <features name="On_Relationships"/>
+		    <features name="Role_Constraints"/>
+		    <features name="Role_Implication" manuallySelected="true"/>
+		    <features name="Role_Prohibition" manuallySelected="true"/>
+		    <features name="Role_Equivalence"/>
+		    <features name="Group_Constraints" manuallySelected="true"/>
+		    <features name="Occurrence_Constraints" manuallySelected="true"/>
+		    <features name="Relationships"/>
+		    <features name="Relationship_Constraints"/>
+		    <features name="Relationship_Cardinality" manuallySelected="true"/>
+		    <features name="Intra_Relationship_Constraints"/>
+		    <features name="Parthood_Constraints" manuallySelected="true"/>
+		    <features name="Inter_Relationship_Constraints" manuallySelected="true"/>
+		    <features name="Compartment_Types"/>
+		    <features name="Compartment_Structure"/>
+		    <features name="Compartment_Properties" manuallySelected="true"/>
+		    <features name="Compartment_Behavior"/>
+		    <features name="Compartment_Inheritance" manuallySelected="true"/>
+		    <features name="Participants"/>
+		    <features name="Contains_Compartments" manuallySelected="true"/>
+		    <features name="Playable_by_Defining_Compartment" manuallySelected="true"/>
+		    <features name="Data_Types"/>
+		    <features name="Data_Type_Inheritance" manuallySelected="true"/>
+  		</framedConfiguration> 
+  </framedModel>
+  <cromModel>
+    <elements
+        xsi:type="crom_l1_composed:CompartmentType"
+        name="compType1">
+      <parts>
+        <role
+            xsi:type="crom_l1_composed:RoleType"
+            name="roleType1"/>
+      </parts>
+      <parts>
+        <role
+            xsi:type="crom_l1_composed:RoleType"
+            name="roleType2"/>
+      </parts>
+      <constraints
+          xsi:type="crom_l1_composed:RoleEquivalence"
+          first="//@cromModel/@elements.0/@parts.0/@role"
+          second="//@cromModel/@elements.0/@parts.1/@role"/>
+    </elements>
+  </cromModel>
+</ts:TestCase>
diff --git a/org.framed.orm.transformation.test/testcases/RoleConstraints/roleImplication_test_1.xmi b/org.framed.orm.transformation.test/testcases/RoleConstraints/roleImplication_test_1.xmi
new file mode 100644
index 00000000..be604885
--- /dev/null
+++ b/org.framed.orm.transformation.test/testcases/RoleConstraints/roleImplication_test_1.xmi
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="ASCII"?>
+<ts:TestCase
+    xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/"
+    xmlns:org.framed.iorm.model="http://iorm/1.0"
+    xmlns:ts="http://org.framed/testmodel"
+    title="Simple TestCase for RoleImplications"
+    description="Simple TestCase for RoleImplications">
+  <framedModel>
+    <elements
+        xsi:type="org.framed.iorm.model:Shape"
+        name="compType1">
+      <model>
+        <elements
+            xsi:type="org.framed.iorm.model:Shape"
+            name="roleType1"
+            outgoingRelations="//@framedModel/@elements.0/@model/@elements.2"
+            type="RoleType"/>
+        <elements
+            xsi:type="org.framed.iorm.model:Shape"
+            name="roleType2"
+            incomingRelations="//@framedModel/@elements.0/@model/@elements.2"
+            type="RoleType"/>
+        <elements
+            xsi:type="org.framed.iorm.model:Relation"
+            name=""
+            type="RoleImplication"
+            target="//@framedModel/@elements.0/@model/@elements.1"
+            source="//@framedModel/@elements.0/@model/@elements.0"/>
+      </model>
+    </elements>
+    <framedConfiguration>
+    		<features/>
+   			<features name="Role_Types"/>
+    		<features name="Role_Structure"/>
+    		<features name="Role_Properties" manuallySelected="true"/>
+			<features name="Role_Behavior"/>
+			<features name="Role_Inheritance" manuallySelected="true"/>
+		    <features name="Playable"/>
+			<features name="Players"/>
+			<features name="Naturals"/>
+			<features name="Roles"/>
+			<features name="Compartments" manuallySelected="true"/>
+			<features name="Dates" manuallySelected="true"/>
+		    <features name="Dependent"/>
+		    <features name="On_Compartments"/>
+		    <features name="On_Relationships"/>
+		    <features name="Role_Constraints"/>
+		    <features name="Role_Implication" manuallySelected="true"/>
+		    <features name="Role_Prohibition" manuallySelected="true"/>
+		    <features name="Role_Equivalence"/>
+		    <features name="Group_Constraints" manuallySelected="true"/>
+		    <features name="Occurrence_Constraints" manuallySelected="true"/>
+		    <features name="Relationships"/>
+		    <features name="Relationship_Constraints"/>
+		    <features name="Relationship_Cardinality" manuallySelected="true"/>
+		    <features name="Intra_Relationship_Constraints"/>
+		    <features name="Parthood_Constraints" manuallySelected="true"/>
+		    <features name="Inter_Relationship_Constraints" manuallySelected="true"/>
+		    <features name="Compartment_Types"/>
+		    <features name="Compartment_Structure"/>
+		    <features name="Compartment_Properties" manuallySelected="true"/>
+		    <features name="Compartment_Behavior"/>
+		    <features name="Compartment_Inheritance" manuallySelected="true"/>
+		    <features name="Participants"/>
+		    <features name="Contains_Compartments" manuallySelected="true"/>
+		    <features name="Playable_by_Defining_Compartment" manuallySelected="true"/>
+		    <features name="Data_Types"/>
+		    <features name="Data_Type_Inheritance" manuallySelected="true"/>
+  		</framedConfiguration> 
+  </framedModel>
+  <cromModel>
+    <elements
+        xsi:type="crom_l1_composed:CompartmentType"
+        name="compType1">
+      <parts>
+        <role
+            xsi:type="crom_l1_composed:RoleType"
+            name="roleType1"/>
+      </parts>
+      <parts>
+        <role
+            xsi:type="crom_l1_composed:RoleType"
+            name="roleType2"/>
+      </parts>
+      <constraints
+          xsi:type="crom_l1_composed:RoleImplication"
+          first="//@cromModel/@elements.0/@parts.0/@role"
+          second="//@cromModel/@elements.0/@parts.1/@role"/>
+    </elements>
+  </cromModel>
+</ts:TestCase>
diff --git a/org.framed.orm.transformation.test/testcases/RoleConstraints/roleProhibition_test_1.xmi b/org.framed.orm.transformation.test/testcases/RoleConstraints/roleProhibition_test_1.xmi
new file mode 100644
index 00000000..b85f9fbe
--- /dev/null
+++ b/org.framed.orm.transformation.test/testcases/RoleConstraints/roleProhibition_test_1.xmi
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="ASCII"?>
+<ts:TestCase
+    xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/"
+    xmlns:org.framed.iorm.model="http://iorm/1.0"
+    xmlns:ts="http://org.framed/testmodel"
+    title="Simple TestCase for RoleImplications"
+    description="Simple TestCase for RoleImplications">
+  <framedModel>
+    <elements
+        xsi:type="org.framed.iorm.model:Shape"
+        name="compType1">
+      <model>
+        <elements
+            xsi:type="org.framed.iorm.model:Shape"
+            name="roleType1"
+            outgoingRelations="//@framedModel/@elements.0/@model/@elements.2"
+            type="RoleType"/>
+        <elements
+            xsi:type="org.framed.iorm.model:Shape"
+            name="roleType2"
+            incomingRelations="//@framedModel/@elements.0/@model/@elements.2"
+            type="RoleType"/>
+        <elements
+            xsi:type="org.framed.iorm.model:Relation"
+            name=""
+            type="RoleProhibition"
+            target="//@framedModel/@elements.0/@model/@elements.1"
+            source="//@framedModel/@elements.0/@model/@elements.0"/>
+      </model>
+    </elements>
+    <framedConfiguration>
+    		<features/>
+   			<features name="Role_Types"/>
+    		<features name="Role_Structure"/>
+    		<features name="Role_Properties" manuallySelected="true"/>
+			<features name="Role_Behavior"/>
+			<features name="Role_Inheritance" manuallySelected="true"/>
+		    <features name="Playable"/>
+			<features name="Players"/>
+			<features name="Naturals"/>
+			<features name="Roles"/>
+			<features name="Compartments" manuallySelected="true"/>
+			<features name="Dates" manuallySelected="true"/>
+		    <features name="Dependent"/>
+		    <features name="On_Compartments"/>
+		    <features name="On_Relationships"/>
+		    <features name="Role_Constraints"/>
+		    <features name="Role_Implication" manuallySelected="true"/>
+		    <features name="Role_Prohibition" manuallySelected="true"/>
+		    <features name="Role_Equivalence"/>
+		    <features name="Group_Constraints" manuallySelected="true"/>
+		    <features name="Occurrence_Constraints" manuallySelected="true"/>
+		    <features name="Relationships"/>
+		    <features name="Relationship_Constraints"/>
+		    <features name="Relationship_Cardinality" manuallySelected="true"/>
+		    <features name="Intra_Relationship_Constraints"/>
+		    <features name="Parthood_Constraints" manuallySelected="true"/>
+		    <features name="Inter_Relationship_Constraints" manuallySelected="true"/>
+		    <features name="Compartment_Types"/>
+		    <features name="Compartment_Structure"/>
+		    <features name="Compartment_Properties" manuallySelected="true"/>
+		    <features name="Compartment_Behavior"/>
+		    <features name="Compartment_Inheritance" manuallySelected="true"/>
+		    <features name="Participants"/>
+		    <features name="Contains_Compartments" manuallySelected="true"/>
+		    <features name="Playable_by_Defining_Compartment" manuallySelected="true"/>
+		    <features name="Data_Types"/>
+		    <features name="Data_Type_Inheritance" manuallySelected="true"/>
+  		</framedConfiguration> 
+  </framedModel>
+  <cromModel>
+    <elements
+        xsi:type="crom_l1_composed:CompartmentType"
+        name="compType1">
+      <parts>
+        <role
+            xsi:type="crom_l1_composed:RoleType"
+            name="roleType1"/>
+      </parts>
+      <parts>
+        <role
+            xsi:type="crom_l1_composed:RoleType"
+            name="roleType2"/>
+      </parts>
+      <constraints
+          xsi:type="crom_l1_composed:RoleProhibition"
+          first="//@cromModel/@elements.0/@parts.0/@role"
+          second="//@cromModel/@elements.0/@parts.1/@role"/>
+    </elements>
+  </cromModel>
+</ts:TestCase>
diff --git a/org.framed.orm.transformation.test/testcases/integration/bank_example_test.xmi b/org.framed.orm.transformation.test/testcases/integration/bank_example_test.xmi
new file mode 100644
index 00000000..349d7fb4
--- /dev/null
+++ b/org.framed.orm.transformation.test/testcases/integration/bank_example_test.xmi
@@ -0,0 +1,407 @@
+<?xml version="1.0" encoding="ASCII"?>
+<ts:TestCase xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/"
+	xmlns:org.framed.iorm.model="http://iorm/1.0" xmlns:ts="http://org.framed/testmodel"
+	title="BankExample Test" description="BankExample Test">
+	<framedModel>
+		<elements xsi:type="org.framed.iorm.model:Shape" name="Person"
+			outgoingRelations="//@framedModel/@elements.11" type="NaturalType">
+			<firstSegment>
+				<elements name="title : String" />
+				<elements name="firstName : String" />
+				<elements name="lastName : String" />
+				<elements name="address : String" />
+			</firstSegment>
+		</elements>
+		<elements xsi:type="org.framed.iorm.model:Shape" name="Company"
+			outgoingRelations="//@framedModel/@elements.12" type="NaturalType">
+			<firstSegment>
+				<elements name="name : String" />
+				<elements name="legalForm : String" />
+				<elements name="addresses : String" />
+				<elements name="POBox : String" />
+			</firstSegment>
+		</elements>
+		<elements xsi:type="org.framed.iorm.model:Shape" name="Bank"
+			incomingRelations="//@framedModel/@elements.11 //@framedModel/@elements.12 //@framedModel/@elements.13 //@framedModel/@elements.15 //@framedModel/@elements.14">
+			<firstSegment>
+				<elements name="name : String" />
+			</firstSegment>
+			<secondSegment>
+				<elements name="executeTransactions()" />
+			</secondSegment>
+			<model>
+				<elements xsi:type="org.framed.iorm.model:Shape" name="Customer"
+					incomingRelations="//@framedModel/@elements.2/@model/@elements.2"
+					outgoingRelations="//@framedModel/@elements.2/@model/@elements.5 //@framedModel/@elements.2/@model/@elements.6"
+					type="RoleType">
+					<firstSegment>
+						<elements name="id : Integer" />
+						<elements name="name : String" />
+					</firstSegment>
+					<secondSegment>
+						<elements name="addSavingsAccount() : Boolean" />
+						<elements name="addCheckingsAccount() : Boolean" />
+						<elements name="getAccounts() : Integer" />
+						<elements name="getBalance(id : Integer) : Money" />
+						<elements name="transfer(from : Integer, to : Integer) : Boolean" />
+						<elements name="sendAccountStatement(id : Integer) : Boolean" />
+					</secondSegment>
+					<description name="0..*" />
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Shape" name="Consultant"
+					outgoingRelations="//@framedModel/@elements.2/@model/@elements.2"
+					type="RoleType">
+					<firstSegment>
+						<elements name="Phone : String" />
+					</firstSegment>
+					<secondSegment>
+						<elements name="consult(id : Integer)" />
+					</secondSegment>
+					<description name="1..*" />
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="advices"
+					type="Relationship" target="//@framedModel/@elements.2/@model/@elements.0"
+					source="//@framedModel/@elements.2/@model/@elements.1">
+					<sourceLabel name="0..*" />
+					<targetLabel name="1..*" />
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Shape" name="Transaction"
+					type="RoleType">
+					<firstSegment>
+						<elements name="execution : DateTime" />
+					</firstSegment>
+					<secondSegment>
+						<elements name="execute() : Boolean" />
+						<elements name="isExecuted() : Boolean" />
+					</secondSegment>
+					<description name="0..*" />
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Shape" name="RoleGroup (1..1)"
+					type="RoleGroup">
+					<model>
+						<elements xsi:type="org.framed.iorm.model:Shape" name="CheckingsAccount"
+							incomingRelations="//@framedModel/@elements.2/@model/@elements.5"
+							type="RoleType">
+							<firstSegment>
+								<elements name="limit : Money" />
+							</firstSegment>
+							<secondSegment>
+								<elements name="decrease(amount : Money) " />
+								<elements name="getLimit() : Money" />
+								<elements name="setLimit(limit : Money) " />
+							</secondSegment>
+						</elements>
+						<elements xsi:type="org.framed.iorm.model:Shape" name="SavingsAccount"
+							incomingRelations="//@framedModel/@elements.2/@model/@elements.6"
+							type="RoleType">
+							<firstSegment>
+								<elements name="transactionFee:Double" />
+							</firstSegment>
+							<secondSegment>
+								<elements name="decrease(amount : Money) " />
+							</secondSegment>
+						</elements>
+					</model>
+					<description name="0..*" />
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="own_ca"
+					type="Relationship"
+					target="//@framedModel/@elements.2/@model/@elements.4/@model/@elements.0"
+					source="//@framedModel/@elements.2/@model/@elements.0">
+					<sourceLabel name="1" />
+					<targetLabel name="0..*" />
+				</elements>
+				<elements xsi:type="org.framed.iorm.model:Relation" name="own_sa"
+					type="Relationship"
+					target="//@framedModel/@elements.2/@model/@elements.4/@model/@elements.1"
+					source="//@framedModel/@elements.2/@model/@elements.0">
+					<sourceLabel name="1..*" />
+					<targetLabel name="0..*" />
+				</elements>
+			</model>
+		</elements>
+		<elements xsi:type="org.framed.iorm.model:Shape" name="String"
+			type="DataType" />
+		<elements xsi:type="org.framed.iorm.model:Shape" name="Transaction"
+			outgoingRelations="//@framedModel/@elements.13">
+			<firstSegment>
+				<elements name="creationtime : DateTime" />
+				<elements name="amount : Money" />
+			</firstSegment>
+			<secondSegment>
+				<elements name="bind(source:Account, target:Account):Boolean" />
+				<elements name="execute() : Boolean" />
+			</secondSegment>
+			<model>
+				<elements xsi:type="org.framed.iorm.model:Shape" name="RoleGroup (1..1)"
+					type="RoleGroup">
+					<model>
+						<elements xsi:type="org.framed.iorm.model:Shape" name="Source"
+							outgoingRelations="//@framedModel/@elements.4/@model/@elements.0/@model/@elements.2 //@framedModel/@elements.4/@model/@elements.0/@model/@elements.3"
+							type="RoleType">
+							<secondSegment>
+								<elements name="withdraw(amount:Money)" />
+							</secondSegment>
+						</elements>
+						<elements xsi:type="org.framed.iorm.model:Shape" name="Target"
+							incomingRelations="//@framedModel/@elements.4/@model/@elements.0/@model/@elements.2 //@framedModel/@elements.4/@model/@elements.0/@model/@elements.3"
+							type="RoleType">
+							<secondSegment>
+								<elements name="deposite(amount:Money)" />
+							</secondSegment>
+						</elements>
+						<elements xsi:type="org.framed.iorm.model:Relation" name="trans"
+							type="Relationship"
+							target="//@framedModel/@elements.4/@model/@elements.0/@model/@elements.1"
+							source="//@framedModel/@elements.4/@model/@elements.0/@model/@elements.0"
+							referencedRelation="//@framedModel/@elements.4/@model/@elements.0/@model/@elements.3">
+							<sourceLabel name="1" />
+							<targetLabel name="1" />
+						</elements>
+						<elements xsi:type="org.framed.iorm.model:Relation" name=""
+							type="Irreflexive"
+							target="//@framedModel/@elements.4/@model/@elements.0/@model/@elements.1"
+							source="//@framedModel/@elements.4/@model/@elements.0/@model/@elements.0"
+							referencedRelation="//@framedModel/@elements.4/@model/@elements.0/@model/@elements.2" />
+					</model>
+					<description name="2..2" />
+				</elements>
+			</model>
+		</elements>
+		<elements xsi:type="org.framed.iorm.model:Shape" name="Account"
+			outgoingRelations="//@framedModel/@elements.14 //@framedModel/@elements.15"
+			type="NaturalType">
+			<firstSegment>
+				<elements name="id : Integer" />
+				<elements name="balance : Money" />
+			</firstSegment>
+			<secondSegment>
+				<elements name="getBalance() : Money" />
+				<elements name="getId() : Integer" />
+				<elements name="increase(amount: Money)" />
+				<elements name="decrease(amount : Money)" />
+			</secondSegment>
+		</elements>
+		<elements xsi:type="org.framed.iorm.model:Shape" name="Integer"
+			type="DataType" />
+		<elements xsi:type="org.framed.iorm.model:Shape" name="Boolean"
+			type="DataType" />
+		<elements xsi:type="org.framed.iorm.model:Shape" name="Money"
+			type="DataType" />
+		<elements xsi:type="org.framed.iorm.model:Shape" name="Double"
+			type="DataType" />
+		<elements xsi:type="org.framed.iorm.model:Shape" name="DateTime"
+			type="DataType" />
+		<elements xsi:type="org.framed.iorm.model:Relation" name=""
+			type="Fulfillment" target="//@framedModel/@elements.2" source="//@framedModel/@elements.0"
+			referencedRoles="//@framedModel/@elements.2/@model/@elements.1 //@framedModel/@elements.2/@model/@elements.0" />
+		<elements xsi:type="org.framed.iorm.model:Relation" name=""
+			type="Fulfillment" target="//@framedModel/@elements.2" source="//@framedModel/@elements.1"
+			referencedRoles="//@framedModel/@elements.2/@model/@elements.0" />
+		<elements xsi:type="org.framed.iorm.model:Relation" name=""
+			type="Fulfillment" target="//@framedModel/@elements.2" source="//@framedModel/@elements.4"
+			referencedRoles="//@framedModel/@elements.2/@model/@elements.3" />
+		<elements xsi:type="org.framed.iorm.model:Relation" type="Fulfillment"
+			target="//@framedModel/@elements.2" source="//@framedModel/@elements.5"
+			referencedRoles="//@framedModel/@elements.2/@model/@elements.4" />
+		<elements xsi:type="org.framed.iorm.model:Relation" type="Fulfillment"
+			target="//@framedModel/@elements.2" source="//@framedModel/@elements.5"
+			referencedRoles="//@framedModel/@elements.4/@model/@elements.0" />
+		<framedConfiguration>
+    		<features/>
+   			<features name="Role_Types"/>
+    		<features name="Role_Structure"/>
+    		<features name="Role_Properties" manuallySelected="true"/>
+			<features name="Role_Behavior"/>
+			<features name="Role_Inheritance" manuallySelected="true"/>
+		    <features name="Playable"/>
+			<features name="Players"/>
+			<features name="Naturals"/>
+			<features name="Roles"/>
+			<features name="Compartments" manuallySelected="true"/>
+			<features name="Dates" manuallySelected="true"/>
+		    <features name="Dependent"/>
+		    <features name="On_Compartments"/>
+		    <features name="On_Relationships"/>
+		    <features name="Role_Constraints"/>
+		    <features name="Role_Implication" manuallySelected="true"/>
+		    <features name="Role_Prohibition" manuallySelected="true"/>
+		    <features name="Role_Equivalence"/>
+		    <features name="Group_Constraints" manuallySelected="true"/>
+		    <features name="Occurrence_Constraints" manuallySelected="true"/>
+		    <features name="Relationships"/>
+		    <features name="Relationship_Constraints"/>
+		    <features name="Relationship_Cardinality" manuallySelected="true"/>
+		    <features name="Intra_Relationship_Constraints"/>
+		    <features name="Parthood_Constraints" manuallySelected="true"/>
+		    <features name="Inter_Relationship_Constraints" manuallySelected="true"/>
+		    <features name="Compartment_Types"/>
+		    <features name="Compartment_Structure"/>
+		    <features name="Compartment_Properties" manuallySelected="true"/>
+		    <features name="Compartment_Behavior"/>
+		    <features name="Compartment_Inheritance" manuallySelected="true"/>
+		    <features name="Participants"/>
+		    <features name="Contains_Compartments" manuallySelected="true"/>
+		    <features name="Playable_by_Defining_Compartment" manuallySelected="true"/>
+		    <features name="Data_Types"/>
+		    <features name="Data_Type_Inheritance" manuallySelected="true"/>
+  		</framedConfiguration>  
+	</framedModel>
+	<cromModel>
+		<elements xsi:type="crom_l1_composed:NaturalType" name="Person">
+			<attributes name="title" type="//@cromModel/@elements.3" />
+			<attributes name="firstName" type="//@cromModel/@elements.3" />
+			<attributes name="lastName" type="//@cromModel/@elements.3" />
+			<attributes name="address" type="//@cromModel/@elements.3" />
+		</elements>
+		<elements xsi:type="crom_l1_composed:NaturalType" name="Company">
+			<attributes name="name" type="//@cromModel/@elements.3" />
+			<attributes name="legalForm" type="//@cromModel/@elements.3" />
+			<attributes name="addresses" type="//@cromModel/@elements.3" />
+			<attributes name="POBox" type="//@cromModel/@elements.3" />
+		</elements>
+		<elements xsi:type="crom_l1_composed:CompartmentType" name="Bank">
+			<attributes name="name" type="//@cromModel/@elements.3" />
+			<operations name="executeTransactions" />
+			<parts>
+				<role xsi:type="crom_l1_composed:RoleType" name="Customer"
+					incoming="//@cromModel/@elements.2/@relationships.0"
+					outgoing="//@cromModel/@elements.2/@relationships.1 //@cromModel/@elements.2/@relationships.2">
+					<attributes name="id" type="//@cromModel/@elements.6" />
+					<attributes name="name" type="//@cromModel/@elements.3" />
+					<operations name="addSavingsAccount" type="//@cromModel/@elements.7" />
+					<operations name="addCheckingsAccount" type="//@cromModel/@elements.7" />
+					<operations name="getAccounts" type="//@cromModel/@elements.6" />
+					<operations name="getBalance" type="//@cromModel/@elements.8">
+						<params name="id" type="//@cromModel/@elements.6" />
+					</operations>
+					<operations name="transfer" type="//@cromModel/@elements.7">
+						<params name="from" type="//@cromModel/@elements.6" />
+						<params name="to" type="//@cromModel/@elements.6" />
+					</operations>
+					<operations name="sendAccountStatement" type="//@cromModel/@elements.7">
+						<params name="id" type="//@cromModel/@elements.6" />
+					</operations>
+				</role>
+			</parts>
+			<parts lower="1">
+				<role xsi:type="crom_l1_composed:RoleType" name="Consultant"
+					outgoing="//@cromModel/@elements.2/@relationships.0">
+					<attributes name="Phone" type="//@cromModel/@elements.3" />
+					<operations name="consult">
+						<params name="id" type="//@cromModel/@elements.6" />
+					</operations>
+				</role>
+			</parts>
+			<parts>
+				<role xsi:type="crom_l1_composed:RoleType" name="Transaction">
+					<attributes name="execution" type="//@cromModel/@elements.10" />
+					<operations name="execute" type="//@cromModel/@elements.7" />
+					<operations name="isExecuted" type="//@cromModel/@elements.7" />
+				</role>
+			</parts>
+			<parts>
+				<role xsi:type="crom_l1_composed:RoleGroup" name="RoleGroup"
+					lower="1" upper="1">
+					<elements xsi:type="crom_l1_composed:RoleType" name="CheckingsAccount"
+						incoming="//@cromModel/@elements.2/@relationships.1">
+						<attributes name="limit" type="//@cromModel/@elements.8" />
+						<operations name="decrease">
+							<params name="amount" type="//@cromModel/@elements.8" />
+						</operations>
+						<operations name="getLimit" type="//@cromModel/@elements.8" />
+						<operations name="setLimit">
+							<params name="limit" type="//@cromModel/@elements.8" />
+						</operations>
+					</elements>
+					<elements xsi:type="crom_l1_composed:RoleType" name="SavingsAccount"
+						incoming="//@cromModel/@elements.2/@relationships.2">
+						<attributes name="transactionFee" type="//@cromModel/@elements.9" />
+						<operations name="decrease">
+							<params name="amount" type="//@cromModel/@elements.8" />
+						</operations>
+					</elements>
+				</role>
+			</parts>
+			<relationships name="advices">
+				<first holder="//@cromModel/@elements.2/@parts.1/@role" />
+				<second lower="1" holder="//@cromModel/@elements.2/@parts.0/@role" />
+			</relationships>
+			<relationships name="own_ca">
+				<first lower="1" upper="1"
+					holder="//@cromModel/@elements.2/@parts.0/@role" />
+				<second holder="//@cromModel/@elements.2/@parts.3/@role/@elements.0" />
+			</relationships>
+			<relationships name="own_sa">
+				<first lower="1" holder="//@cromModel/@elements.2/@parts.0/@role" />
+				<second holder="//@cromModel/@elements.2/@parts.3/@role/@elements.1" />
+			</relationships>
+		</elements>
+		<elements xsi:type="crom_l1_composed:DataType" name="String" />
+		<elements xsi:type="crom_l1_composed:CompartmentType" name="Transaction">
+			<attributes name="creationtime" type="//@cromModel/@elements.10" />
+			<attributes name="amount" type="//@cromModel/@elements.8" />
+			<operations name="bind" type="//@cromModel/@elements.7">
+				<params name="source" type="//@cromModel/@elements.5" />
+				<params name="target" type="//@cromModel/@elements.5" />
+			</operations>
+			<operations name="execute" type="//@cromModel/@elements.7" />
+			<parts lower="2" upper="2">
+				<role xsi:type="crom_l1_composed:RoleGroup" name="RoleGroup"
+					lower="1" upper="1">
+					<elements xsi:type="crom_l1_composed:RoleType" name="Source"
+						outgoing="//@cromModel/@elements.4/@relationships.0">
+						<operations name="withdraw">
+							<params name="amount" type="//@cromModel/@elements.8" />
+						</operations>
+					</elements>
+					<elements xsi:type="crom_l1_composed:RoleType" name="Target"
+						incoming="//@cromModel/@elements.4/@relationships.0">
+						<operations name="deposite">
+							<params name="amount" type="//@cromModel/@elements.8" />
+						</operations>
+					</elements>
+				</role>
+			</parts>
+			<relationships name="trans">
+				<first lower="1" upper="1"
+					holder="//@cromModel/@elements.4/@parts.0/@role/@elements.0" />
+				<second lower="1" upper="1"
+					holder="//@cromModel/@elements.4/@parts.0/@role/@elements.1" />
+			</relationships>
+			<constraints xsi:type="crom_l1_composed:Irreflexive"
+				relation="//@cromModel/@elements.4/@relationships.0" />
+		</elements>
+		<elements xsi:type="crom_l1_composed:NaturalType" name="Account">
+			<attributes name="id" type="//@cromModel/@elements.6" />
+			<attributes name="balance" type="//@cromModel/@elements.8" />
+			<operations name="getBalance" type="//@cromModel/@elements.8" />
+			<operations name="getId" type="//@cromModel/@elements.6" />
+			<operations name="increase">
+				<params name="amount" type="//@cromModel/@elements.8" />
+			</operations>
+			<operations name="decrease">
+				<params name="amount" type="//@cromModel/@elements.8" />
+			</operations>
+		</elements>
+		<elements xsi:type="crom_l1_composed:DataType" name="Integer" />
+		<elements xsi:type="crom_l1_composed:DataType" name="Boolean" />
+		<elements xsi:type="crom_l1_composed:DataType" name="Money" />
+		<elements xsi:type="crom_l1_composed:DataType" name="Double" />
+		<elements xsi:type="crom_l1_composed:DataType" name="DateTime" />
+		<relations xsi:type="crom_l1_composed:Fulfillment"
+			filled="//@cromModel/@elements.2/@parts.1/@role" filler="//@cromModel/@elements.0" />
+		<relations xsi:type="crom_l1_composed:Fulfillment"
+			filled="//@cromModel/@elements.2/@parts.0/@role" filler="//@cromModel/@elements.0" />
+		<relations xsi:type="crom_l1_composed:Fulfillment"
+			filled="//@cromModel/@elements.2/@parts.0/@role" filler="//@cromModel/@elements.1" />
+		<relations xsi:type="crom_l1_composed:Fulfillment"
+			filled="//@cromModel/@elements.2/@parts.2/@role" filler="//@cromModel/@elements.4" />
+		<relations xsi:type="crom_l1_composed:Fulfillment"
+			filled="//@cromModel/@elements.2/@parts.3/@role" filler="//@cromModel/@elements.5" />
+		<relations xsi:type="crom_l1_composed:Fulfillment"
+			filled="//@cromModel/@elements.4/@parts.0/@role" filler="//@cromModel/@elements.5" />
+	</cromModel>
+</ts:TestCase>
diff --git a/org.framed.orm.transformation.test/testcases1/RelationshipImplication/relationshipImplication_test_1.xmi b/org.framed.orm.transformation.test/testcases1/RelationshipImplication/relationshipImplication_test_1.xmi
index 94c0a440..f6779d93 100644
--- a/org.framed.orm.transformation.test/testcases1/RelationshipImplication/relationshipImplication_test_1.xmi
+++ b/org.framed.orm.transformation.test/testcases1/RelationshipImplication/relationshipImplication_test_1.xmi
@@ -15,57 +15,41 @@
 			<firstSegment />
 			<secondSegment />
 			<model>
-				<elements xsi:type="org.framed.orm.model:Shape" name="RT1"
-					incomingRelations="//@framedModel/@elements.1/@model/@elements.6"
-					outgoingRelations="//@framedModel/@elements.1/@model/@elements.3"
-					type="RoleType">
-					<firstSegment />
-					<secondSegment />
-					<description name="*" />
-				</elements>
-				<elements xsi:type="org.framed.orm.model:Shape" name="RT2"
-					incomingRelations="//@framedModel/@elements.1/@model/@elements.3"
-					outgoingRelations="//@framedModel/@elements.1/@model/@elements.6"
-					type="RoleType">
-					<firstSegment />
-					<secondSegment />
-					<description name="*" />
-				</elements>
-				<elements xsi:type="org.framed.orm.model:Shape" name=""
-					incomingRelations="//@framedModel/@elements.1/@model/@elements.8"
-					type="RelationshipShapeChild">
-				</elements>
-				<elements xsi:type="org.framed.orm.model:Relation" name="rst"
-					type="Relationship" target="//@framedModel/@elements.1/@model/@elements.1"
-					source="//@framedModel/@elements.1/@model/@elements.0"
-					connectionAnchor="//@framedModel/@elements.1/@model/@elements.2">
-					<sourceLabel name="1" />
-					<targetLabel name="1..*" />
-				</elements>
-				<elements xsi:type="org.framed.orm.model:Shape" name=""
-					type="RelationshipShapeChild">
-				</elements>
-				<elements xsi:type="org.framed.orm.model:Shape" name=""
-					outgoingRelations="//@framedModel/@elements.1/@model/@elements.8"
-					type="RelationshipShapeChild">
-				</elements>
-				<elements xsi:type="org.framed.orm.model:Relation" name="subrst"
-					type="Relationship" target="//@framedModel/@elements.1/@model/@elements.0"
-					source="//@framedModel/@elements.1/@model/@elements.1"
-					connectionAnchor="//@framedModel/@elements.1/@model/@elements.5">
-					<sourceLabel name="*" />
-					<targetLabel name="0..1" />
-				</elements>
-				<elements xsi:type="org.framed.orm.model:Shape" name=""
-					type="RelationshipShapeChild">
-				</elements>
-				<elements xsi:type="org.framed.orm.model:Relation" type="RelationshipImplication"
-					target="//@framedModel/@elements.1/@model/@elements.2" source="//@framedModel/@elements.1/@model/@elements.5" />
-			</model>
-		</elements>
-		<elements xsi:type="org.framed.orm.model:Relation" type="Fulfillment"
-			target="//@framedModel/@elements.1" source="//@framedModel/@elements.0"
-			referencedRoles="//@framedModel/@elements.1/@model/@elements.0 //@framedModel/@elements.1/@model/@elements.1" />
+			 <elements xsi:type="org.framed.iorm.model:Shape" name="NT" outgoingRelations="/1/@elements.2" type="NaturalType">
+		      <firstSegment/>
+		      <secondSegment/>
+		    </elements>
+		    <elements xsi:type="org.framed.iorm.model:Shape" name="CT" incomingRelations="/1/@elements.2">
+		      <firstSegment/>
+		      <secondSegment/>
+		      <model>
+		        <elements xsi:type="org.framed.iorm.model:Shape" name="roleType" incomingRelations="/1/@elements.1/@model/@elements.3" outgoingRelations="/1/@elements.1/@model/@elements.2" type="RoleType">
+		          <firstSegment/>
+		          <secondSegment/>
+		          <description name="*"/>
+		        </elements>
+		        <elements xsi:type="org.framed.iorm.model:Shape" name="roleType1" incomingRelations="/1/@elements.1/@model/@elements.2" outgoingRelations="/1/@elements.1/@model/@elements.3" type="RoleType">
+		          <firstSegment/>
+		          <secondSegment/>
+		          <description name="*"/>
+		        </elements>
+		        <elements xsi:type="org.framed.iorm.model:Relation" name="rst" incomingRelations="/1/@elements.1/@model/@elements.4" type="Relationship" target="/1/@elements.1/@model/@elements.1" source="/1/@elements.1/@model/@elements.0">
+		          <sourceLabel name="1"/>
+		          <targetLabel name="1..*"/>
+		        </elements>
+		        <elements xsi:type="org.framed.iorm.model:Relation" name="subrst" outgoingRelations="/1/@elements.1/@model/@elements.4" type="Relationship" target="/1/@elements.1/@model/@elements.0" source="/1/@elements.1/@model/@elements.1">
+		          <sourceLabel name="*"/>
+		          <targetLabel name="0..1"/>
+		        </elements>
+		        <elements xsi:type="org.framed.iorm.model:Relation" type="RelationshipImplication" target="/1/@elements.1/@model/@elements.2" source="/1/@elements.1/@model/@elements.3"/>
+		      </model>
+		    </elements>
+		    <elements xsi:type="org.framed.iorm.model:Relation" type="Fulfillment" target="/1/@elements.1" source="/1/@elements.0" referencedRoles="/1/@elements.1/@model/@elements.0 /1/@elements.1/@model/@elements.1"/>
+		</model>
+			</elements>
+			<elements xsi:type="org.framed.orm.model:Relation" type="Fulfillment"
+				target="//@framedModel/@elements.1" source="//@framedModel/@elements.0"
+				referencedRoles="//@framedModel/@elements.1/@model/@elements.0 //@framedModel/@elements.1/@model/@elements.1" />
 		<framedConfiguration>
     		<features/>
    			<features name="Role_Types"/>
@@ -107,31 +91,25 @@
   		</framedConfiguration> 	
 	</framedModel>
 	<cromModel>
-		<elements xsi:type="crom_l1_composed:NaturalType" name="NT" />
-		<elements xsi:type="crom_l1_composed:CompartmentType" name="CT">
-			<parts>
-				<role xsi:type="crom_l1_composed:RoleType" name="RT1"
-					incoming="//@cromModel/@elements.1/@relationships.1" outgoing="//@cromModel/@elements.1/@relationships.0" />
-			</parts>
-			<parts>
-				<role xsi:type="crom_l1_composed:RoleType" name="RT2"
-					incoming="//@cromModel/@elements.1/@relationships.0" outgoing="//@cromModel/@elements.1/@relationships.1" />
-			</parts>
-			<relationships name="rst">
-				<first lower="1" upper="1"
-					holder="//@cromModel/@elements.1/@parts.0/@role" />
-				<second lower="1" holder="//@cromModel/@elements.1/@parts.1/@role" />
-			</relationships>
-			<relationships name="subrst">
-				<first holder="//@cromModel/@elements.1/@parts.1/@role" />
-				<second upper="1" holder="//@cromModel/@elements.1/@parts.0/@role" />
-			</relationships>
-			<constraints xsi:type="crom_l1_composed:RelationshipImplication"
-				first="//@cromModel/@elements.1/@relationships.1" second="//@cromModel/@elements.1/@relationships.0" />
-		</elements>
-		<relations xsi:type="crom_l1_composed:Fulfillment"
-			filled="//@cromModel/@elements.1/@parts.0/@role" filler="//@cromModel/@elements.0" />
-		<relations xsi:type="crom_l1_composed:Fulfillment"
-			filled="//@cromModel/@elements.1/@parts.1/@role" filler="//@cromModel/@elements.0" />
+		<elements xsi:type="crom_l1_composed:NaturalType" name="NT"/>
+  		<elements xsi:type="crom_l1_composed:CompartmentType" name="CT">
+   			 <parts>
+      <role xsi:type="crom_l1_composed:RoleType" name="roleType" incoming="//@elements.1/@relationships.1" outgoing="//@elements.1/@relationships.0"/>
+    </parts>
+    <parts>
+      <role xsi:type="crom_l1_composed:RoleType" name="roleType1" incoming="//@elements.1/@relationships.0" outgoing="//@elements.1/@relationships.1"/>
+    </parts>
+    <relationships name="rst">
+      <first lower="1" upper="1" holder="//@elements.1/@parts.0/@role"/>
+      <second lower="1" holder="//@elements.1/@parts.1/@role"/>
+    </relationships>
+    <relationships name="subrst">
+      <first holder="//@elements.1/@parts.1/@role"/>
+      <second upper="1" holder="//@elements.1/@parts.0/@role"/>
+    </relationships>
+    <constraints xsi:type="crom_l1_composed:RelationshipImplication" first="//@elements.1/@relationships.1" second="//@elements.1/@relationships.0"/>
+  </elements>
+  <relations xsi:type="crom_l1_composed:Fulfillment" filled="//@elements.1/@parts.0/@role" filler="//@elements.0"/>
+  <relations xsi:type="crom_l1_composed:Fulfillment" filled="//@elements.1/@parts.1/@role" filler="//@elements.0"/>
 	</cromModel>
 </ts:TestCase>
diff --git a/org.framed.orm.transformation.test/testcases1/integration/bank_example_test.xmi b/org.framed.orm.transformation.test/testcases1/integration/bank_example_test.xmi
index 8b71b5d2..c0a075c4 100644
--- a/org.framed.orm.transformation.test/testcases1/integration/bank_example_test.xmi
+++ b/org.framed.orm.transformation.test/testcases1/integration/bank_example_test.xmi
@@ -2,10 +2,10 @@
 <ts:TestCase xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 	xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/"
-	xmlns:org.framed.orm.model="http://orm/1.0" xmlns:ts="http://org.framed/testmodel"
+	xmlns:org.framed.iorm.model="http://iorm/1.0" xmlns:ts="http://org.framed/testmodel"
 	title="BankExample Test" description="BankExample Test">
 	<framedModel>
-		<elements xsi:type="org.framed.orm.model:Shape" name="Person"
+		<elements xsi:type="org.framed.iorm.model:Shape" name="Person"
 			outgoingRelations="//@framedModel/@elements.11" type="NaturalType">
 			<firstSegment>
 				<elements name="title : String" />
@@ -14,7 +14,7 @@
 				<elements name="address : String" />
 			</firstSegment>
 		</elements>
-		<elements xsi:type="org.framed.orm.model:Shape" name="Company"
+		<elements xsi:type="org.framed.iorm.model:Shape" name="Company"
 			outgoingRelations="//@framedModel/@elements.12" type="NaturalType">
 			<firstSegment>
 				<elements name="name : String" />
@@ -23,7 +23,7 @@
 				<elements name="POBox : String" />
 			</firstSegment>
 		</elements>
-		<elements xsi:type="org.framed.orm.model:Shape" name="Bank"
+		<elements xsi:type="org.framed.iorm.model:Shape" name="Bank"
 			incomingRelations="//@framedModel/@elements.11 //@framedModel/@elements.12 //@framedModel/@elements.13 //@framedModel/@elements.15 //@framedModel/@elements.14">
 			<firstSegment>
 				<elements name="name : String" />
@@ -32,7 +32,7 @@
 				<elements name="executeTransactions()" />
 			</secondSegment>
 			<model>
-				<elements xsi:type="org.framed.orm.model:Shape" name="Customer"
+				<elements xsi:type="org.framed.iorm.model:Shape" name="Customer"
 					incomingRelations="//@framedModel/@elements.2/@model/@elements.2"
 					outgoingRelations="//@framedModel/@elements.2/@model/@elements.5 //@framedModel/@elements.2/@model/@elements.6"
 					type="RoleType">
@@ -50,7 +50,7 @@
 					</secondSegment>
 					<description name="0..*" />
 				</elements>
-				<elements xsi:type="org.framed.orm.model:Shape" name="Consultant"
+				<elements xsi:type="org.framed.iorm.model:Shape" name="Consultant"
 					outgoingRelations="//@framedModel/@elements.2/@model/@elements.2"
 					type="RoleType">
 					<firstSegment>
@@ -61,13 +61,13 @@
 					</secondSegment>
 					<description name="1..*" />
 				</elements>
-				<elements xsi:type="org.framed.orm.model:Relation" name="advices"
+				<elements xsi:type="org.framed.iorm.model:Relation" name="advices"
 					type="Relationship" target="//@framedModel/@elements.2/@model/@elements.0"
 					source="//@framedModel/@elements.2/@model/@elements.1">
 					<sourceLabel name="0..*" />
 					<targetLabel name="1..*" />
 				</elements>
-				<elements xsi:type="org.framed.orm.model:Shape" name="Transaction"
+				<elements xsi:type="org.framed.iorm.model:Shape" name="Transaction"
 					type="RoleType">
 					<firstSegment>
 						<elements name="execution : DateTime" />
@@ -78,10 +78,10 @@
 					</secondSegment>
 					<description name="0..*" />
 				</elements>
-				<elements xsi:type="org.framed.orm.model:Shape" name="RoleGroup (1..1)"
+				<elements xsi:type="org.framed.iorm.model:Shape" name="RoleGroup (1..1)"
 					type="RoleGroup">
 					<model>
-						<elements xsi:type="org.framed.orm.model:Shape" name="CheckingsAccount"
+						<elements xsi:type="org.framed.iorm.model:Shape" name="CheckingsAccount"
 							incomingRelations="//@framedModel/@elements.2/@model/@elements.5"
 							type="RoleType">
 							<firstSegment>
@@ -93,7 +93,7 @@
 								<elements name="setLimit(limit : Money) " />
 							</secondSegment>
 						</elements>
-						<elements xsi:type="org.framed.orm.model:Shape" name="SavingsAccount"
+						<elements xsi:type="org.framed.iorm.model:Shape" name="SavingsAccount"
 							incomingRelations="//@framedModel/@elements.2/@model/@elements.6"
 							type="RoleType">
 							<firstSegment>
@@ -106,14 +106,14 @@
 					</model>
 					<description name="0..*" />
 				</elements>
-				<elements xsi:type="org.framed.orm.model:Relation" name="own_ca"
+				<elements xsi:type="org.framed.iorm.model:Relation" name="own_ca"
 					type="Relationship"
 					target="//@framedModel/@elements.2/@model/@elements.4/@model/@elements.0"
 					source="//@framedModel/@elements.2/@model/@elements.0">
 					<sourceLabel name="1" />
 					<targetLabel name="0..*" />
 				</elements>
-				<elements xsi:type="org.framed.orm.model:Relation" name="own_sa"
+				<elements xsi:type="org.framed.iorm.model:Relation" name="own_sa"
 					type="Relationship"
 					target="//@framedModel/@elements.2/@model/@elements.4/@model/@elements.1"
 					source="//@framedModel/@elements.2/@model/@elements.0">
@@ -122,9 +122,9 @@
 				</elements>
 			</model>
 		</elements>
-		<elements xsi:type="org.framed.orm.model:Shape" name="String"
+		<elements xsi:type="org.framed.iorm.model:Shape" name="String"
 			type="DataType" />
-		<elements xsi:type="org.framed.orm.model:Shape" name="Transaction"
+		<elements xsi:type="org.framed.iorm.model:Shape" name="Transaction"
 			outgoingRelations="//@framedModel/@elements.13">
 			<firstSegment>
 				<elements name="creationtime : DateTime" />
@@ -135,24 +135,24 @@
 				<elements name="execute() : Boolean" />
 			</secondSegment>
 			<model>
-				<elements xsi:type="org.framed.orm.model:Shape" name="RoleGroup (1..1)"
+				<elements xsi:type="org.framed.iorm.model:Shape" name="RoleGroup (1..1)"
 					type="RoleGroup">
 					<model>
-						<elements xsi:type="org.framed.orm.model:Shape" name="Source"
+						<elements xsi:type="org.framed.iorm.model:Shape" name="Source"
 							outgoingRelations="//@framedModel/@elements.4/@model/@elements.0/@model/@elements.2 //@framedModel/@elements.4/@model/@elements.0/@model/@elements.3"
 							type="RoleType">
 							<secondSegment>
 								<elements name="withdraw(amount:Money)" />
 							</secondSegment>
 						</elements>
-						<elements xsi:type="org.framed.orm.model:Shape" name="Target"
+						<elements xsi:type="org.framed.iorm.model:Shape" name="Target"
 							incomingRelations="//@framedModel/@elements.4/@model/@elements.0/@model/@elements.2 //@framedModel/@elements.4/@model/@elements.0/@model/@elements.3"
 							type="RoleType">
 							<secondSegment>
 								<elements name="deposite(amount:Money)" />
 							</secondSegment>
 						</elements>
-						<elements xsi:type="org.framed.orm.model:Relation" name="trans"
+						<elements xsi:type="org.framed.iorm.model:Relation" name="trans"
 							type="Relationship"
 							target="//@framedModel/@elements.4/@model/@elements.0/@model/@elements.1"
 							source="//@framedModel/@elements.4/@model/@elements.0/@model/@elements.0"
@@ -160,7 +160,7 @@
 							<sourceLabel name="1" />
 							<targetLabel name="1" />
 						</elements>
-						<elements xsi:type="org.framed.orm.model:Relation" name=""
+						<elements xsi:type="org.framed.iorm.model:Relation" name=""
 							type="Irreflexive"
 							target="//@framedModel/@elements.4/@model/@elements.0/@model/@elements.1"
 							source="//@framedModel/@elements.4/@model/@elements.0/@model/@elements.0"
@@ -170,7 +170,7 @@
 				</elements>
 			</model>
 		</elements>
-		<elements xsi:type="org.framed.orm.model:Shape" name="Account"
+		<elements xsi:type="org.framed.iorm.model:Shape" name="Account"
 			outgoingRelations="//@framedModel/@elements.14 //@framedModel/@elements.15"
 			type="NaturalType">
 			<firstSegment>
@@ -184,29 +184,29 @@
 				<elements name="decrease(amount : Money)" />
 			</secondSegment>
 		</elements>
-		<elements xsi:type="org.framed.orm.model:Shape" name="Integer"
+		<elements xsi:type="org.framed.iorm.model:Shape" name="Integer"
 			type="DataType" />
-		<elements xsi:type="org.framed.orm.model:Shape" name="Boolean"
+		<elements xsi:type="org.framed.iorm.model:Shape" name="Boolean"
 			type="DataType" />
-		<elements xsi:type="org.framed.orm.model:Shape" name="Money"
+		<elements xsi:type="org.framed.iorm.model:Shape" name="Money"
 			type="DataType" />
-		<elements xsi:type="org.framed.orm.model:Shape" name="Double"
+		<elements xsi:type="org.framed.iorm.model:Shape" name="Double"
 			type="DataType" />
-		<elements xsi:type="org.framed.orm.model:Shape" name="DateTime"
+		<elements xsi:type="org.framed.iorm.model:Shape" name="DateTime"
 			type="DataType" />
-		<elements xsi:type="org.framed.orm.model:Relation" name=""
+		<elements xsi:type="org.framed.iorm.model:Relation" name=""
 			type="Fulfillment" target="//@framedModel/@elements.2" source="//@framedModel/@elements.0"
 			referencedRoles="//@framedModel/@elements.2/@model/@elements.1 //@framedModel/@elements.2/@model/@elements.0" />
-		<elements xsi:type="org.framed.orm.model:Relation" name=""
+		<elements xsi:type="org.framed.iorm.model:Relation" name=""
 			type="Fulfillment" target="//@framedModel/@elements.2" source="//@framedModel/@elements.1"
 			referencedRoles="//@framedModel/@elements.2/@model/@elements.0" />
-		<elements xsi:type="org.framed.orm.model:Relation" name=""
+		<elements xsi:type="org.framed.iorm.model:Relation" name=""
 			type="Fulfillment" target="//@framedModel/@elements.2" source="//@framedModel/@elements.4"
 			referencedRoles="//@framedModel/@elements.2/@model/@elements.3" />
-		<elements xsi:type="org.framed.orm.model:Relation" type="Fulfillment"
+		<elements xsi:type="org.framed.iorm.model:Relation" type="Fulfillment"
 			target="//@framedModel/@elements.2" source="//@framedModel/@elements.5"
 			referencedRoles="//@framedModel/@elements.2/@model/@elements.4" />
-		<elements xsi:type="org.framed.orm.model:Relation" type="Fulfillment"
+		<elements xsi:type="org.framed.iorm.model:Relation" type="Fulfillment"
 			target="//@framedModel/@elements.2" source="//@framedModel/@elements.5"
 			referencedRoles="//@framedModel/@elements.4/@model/@elements.0" />
 		<framedConfiguration>
@@ -258,7 +258,7 @@
 		</elements>
 		<elements xsi:type="crom_l1_composed:NaturalType" name="Company">
 			<attributes name="name" type="//@cromModel/@elements.3" />
-			<attributes name="legalForm" type="//@cromModel/@elements.3" />
+			<attributes name="legalFiorm" type="//@cromModel/@elements.3" />
 			<attributes name="addresses" type="//@cromModel/@elements.3" />
 			<attributes name="POBox" type="//@cromModel/@elements.3" />
 		</elements>
-- 
GitLab