diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod
index 96bc635802679fc3a083dfd0d8bb22df301af0cf..ce1c29080a210003ff5a4ce12700800e4c81aca9 100644
--- a/aliasDefinition/Data_alias/Data_alias.aod
+++ b/aliasDefinition/Data_alias/Data_alias.aod
@@ -1176,6 +1176,207 @@
               </entityFieldDb>
             </entityFields>
           </entityDb>
+          <entityDb>
+            <name>CONTRACT</name>
+            <dbName></dbName>
+            <idColumn>CONTRACTID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>CONTRACTDUE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>PAYMENT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CONTRACTSTATUS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CONTRACTEND</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CONTRACTCODE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="30" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CONTRACTID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="false" />
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CONTRACTTYPE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>RELATION_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CONTRACTSTART</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>REMARK</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="2005" />
+                <size v="2147483647" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
         </entities>
       </entityGroup>
     </aliasDefDb>
diff --git a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod
index 5dde13f0008983a4d1dcb8543aa11a74fe80b816..fb6f1364f766aad9bb25e803837324dcb969dd76 100644
--- a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod
+++ b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod
@@ -12,6 +12,7 @@
         <node name="Org_context" kind="10077" />
         <node name="Pers_context" kind="10077" />
         <node name="History_context" kind="10077" />
+        <node name="Contract_context" kind="10077" />
         <node name="INTERNAL_ADMINISTRATOR" kind="159" />
       </node>
     </node>
diff --git a/entity/Contract_entity/Contract_entity.aod b/entity/Contract_entity/Contract_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..bfd129a9b0fd7fb05438effa5ec32e7b71a2f05e
--- /dev/null
+++ b/entity/Contract_entity/Contract_entity.aod
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.0.3" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.0.3">
+  <name>Contract_entity</name>
+  <title>Contract</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <alias>Data_alias</alias>
+  <conditionProcess>%aditoprj%/entity/Contract_entity/conditionProcess.js</conditionProcess>
+  <recordContainerType>DB</recordContainerType>
+  <caption>Contract</caption>
+  <entityFields>
+    <entityField>
+      <name>CONTRACTCODE</name>
+      <tableName>CONTRACT</tableName>
+      <columnName>CONTRACTCODE</columnName>
+      <caption>Vertragsnummer</caption>
+    </entityField>
+    <entityField>
+      <name>CONTRACTDUE</name>
+      <tableName>CONTRACT</tableName>
+      <columnName>CONTRACTDUE</columnName>
+      <caption>nächste Fälligkeit</caption>
+      <contentType>DATE</contentType>
+      <resolution>DAY</resolution>
+      <onValidation>%aditoprj%/entity/Contract_entity/entityfields/contractdue/onValidation.js</onValidation>
+    </entityField>
+    <entityField>
+      <name>CONTRACTEND</name>
+      <tableName>CONTRACT</tableName>
+      <columnName>CONTRACTEND</columnName>
+      <caption>Vertragsende</caption>
+      <contentType>DATE</contentType>
+      <resolution>DAY</resolution>
+      <onValidation>%aditoprj%/entity/Contract_entity/entityfields/contractend/onValidation.js</onValidation>
+      <onValueChange>%aditoprj%/entity/Contract_entity/entityfields/contractend/onValueChange.js</onValueChange>
+    </entityField>
+    <entityField>
+      <name>CONTRACTID</name>
+      <tableName>CONTRACT</tableName>
+      <columnName>CONTRACTID</columnName>
+    </entityField>
+    <entityField>
+      <name>CONTRACTSTART</name>
+      <tableName>CONTRACT</tableName>
+      <columnName>CONTRACTSTART</columnName>
+      <caption>Vertragsbeginn</caption>
+      <contentType>DATE</contentType>
+      <resolution>DAY</resolution>
+      <onValidation>%aditoprj%/entity/Contract_entity/entityfields/contractstart/onValidation.js</onValidation>
+    </entityField>
+    <entityField>
+      <name>CONTRACTSTATUS</name>
+      <tableName>CONTRACT</tableName>
+      <columnName>CONTRACTSTATUS</columnName>
+      <caption>Status</caption>
+      <possibleItemsProcess>%aditoprj%/entity/Contract_entity/entityfields/contractstatus/possibleItemsProcess.js</possibleItemsProcess>
+    </entityField>
+    <entityField>
+      <name>CONTRACTTYPE</name>
+      <tableName>CONTRACT</tableName>
+      <columnName>CONTRACTTYPE</columnName>
+      <caption>Vertragsart</caption>
+      <possibleItemsProcess>%aditoprj%/entity/Contract_entity/entityfields/contracttype/possibleItemsProcess.js</possibleItemsProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_EDIT</name>
+      <tableName>CONTRACT</tableName>
+      <columnName>DATE_EDIT</columnName>
+      <contentType>DATE</contentType>
+      <outputFormat>yyyy-MM-dd&amp;apos;T&amp;apos;HH:mm:ssZ</outputFormat>
+      <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/date_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_NEW</name>
+      <tableName>CONTRACT</tableName>
+      <columnName>DATE_NEW</columnName>
+      <contentType>DATE</contentType>
+      <outputFormat>yyyy-MM-dd&amp;apos;T&amp;apos;HH:mm:ssZ</outputFormat>
+      <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/date_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>PAYMENT</name>
+      <tableName>CONTRACT</tableName>
+      <columnName>PAYMENT</columnName>
+      <caption>Zahlweise</caption>
+      <mandatory v="true" />
+      <possibleItemsProcess>%aditoprj%/entity/Contract_entity/entityfields/payment/possibleItemsProcess.js</possibleItemsProcess>
+    </entityField>
+    <entityField>
+      <name>RELATION_ID</name>
+      <tableName>CONTRACT</tableName>
+      <columnName>RELATION_ID</columnName>
+      <caption>Person / Firma</caption>
+      <linkedContextProcess>%aditoprj%/entity/Contract_entity/entityfields/relation_id/linkedContextProcess.js</linkedContextProcess>
+      <mandatory v="true" />
+      <outgoingField>ContractOrg_dfo</outgoingField>
+      <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/relation_id/valueProcess.js</valueProcess>
+      <valueMappingProcess>%aditoprj%/entity/Contract_entity/entityfields/relation_id/valueMappingProcess.js</valueMappingProcess>
+      <fieldIdProcess>%aditoprj%/entity/Contract_entity/entityfields/relation_id/fieldIdProcess.js</fieldIdProcess>
+    </entityField>
+    <entityField>
+      <name>REMARK</name>
+      <tableName>CONTRACT</tableName>
+      <columnName>REMARK</columnName>
+      <caption>Beschreibung</caption>
+      <contentType>LONG_TEXT</contentType>
+    </entityField>
+    <entityField>
+      <name>USER_EDIT</name>
+      <tableName>CONTRACT</tableName>
+      <columnName>USER_EDIT</columnName>
+      <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/user_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_NEW</name>
+      <tableName>CONTRACT</tableName>
+      <columnName>USER_NEW</columnName>
+      <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/user_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityIncomingField>
+      <name>PersContract_dfi</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <dependencies>
+        <entityDependency>
+          <name>2146b082-6377-4b34-be6b-3dad18885614</name>
+          <entityName>Pers_entity</entityName>
+          <fieldName>PersContract_dfo</fieldName>
+          <isOutgoing v="false" />
+        </entityDependency>
+      </dependencies>
+    </entityIncomingField>
+    <entityIncomingField>
+      <name>OrgContract_dfi</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <dependencies>
+        <entityDependency>
+          <name>6d7c7166-84b4-4da2-9a48-cc1e390ac987</name>
+          <entityName>Org_entity</entityName>
+          <fieldName>OrgContract_dfo</fieldName>
+          <isOutgoing v="false" />
+        </entityDependency>
+      </dependencies>
+    </entityIncomingField>
+    <entityParameter>
+      <name>RelId_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityField>
+      <name>IMAGE</name>
+      <contentType>IMAGE</contentType>
+      <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/image/valueProcess.js</valueProcess>
+    </entityField>
+    <entityFieldGroup>
+      <name>CONTRACTCODE_DISPLAY_fieldGroup</name>
+      <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/contractcode_display_fieldgroup/valueProcess.js</valueProcess>
+      <description>FIELDGROUP</description>
+      <fields>
+        <element>CONTRACTTYPE</element>
+        <element>CONTRACTCODE</element>
+      </fields>
+    </entityFieldGroup>
+    <entityOutgoingField>
+      <name>ContractHistory_dfo</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>History_entity</entityName>
+        <fieldName>ContractHistory_dfi</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>RowId_param</name>
+          <code>%aditoprj%/entity/Contract_entity/entityfields/contracthistory_dfo/children/rowid_param/code.js</code>
+        </entityParameter>
+      </children>
+    </entityOutgoingField>
+    <entityOutgoingField>
+      <name>ContractOrg_dfo</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Org_entity</entityName>
+        <fieldName>Org_dfi</fieldName>
+      </dependency>
+    </entityOutgoingField>
+  </entityFields>
+  <linkInformation>
+    <linkInformation>
+      <name>feb748e4-0664-455d-be48-dde37a391115</name>
+      <tableName>CONTRACT</tableName>
+      <primaryKey>CONTRACTID</primaryKey>
+      <isUIDTable v="true" />
+    </linkInformation>
+  </linkInformation>
+</entity>
diff --git a/entity/Contract_entity/conditionProcess.js b/entity/Contract_entity/conditionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..bc6c39039001a9ae74f6eaa20a2eca8dcd586ab8
--- /dev/null
+++ b/entity/Contract_entity/conditionProcess.js
@@ -0,0 +1,7 @@
+import("system.result");
+import("system.vars");
+
+if(vars.exists("$param.RelId_param") && vars.get("$param.RelId_param") != null)
+    result.string("CONTRACT.RELATION_ID = ('" + vars.getString("$param.RelId_param") + "')");  
+else
+    result.string("");  
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/contractcode_display_fieldgroup/valueProcess.js b/entity/Contract_entity/entityfields/contractcode_display_fieldgroup/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b6a434814eb068042376d3a46557915f887ce7bf
--- /dev/null
+++ b/entity/Contract_entity/entityfields/contractcode_display_fieldgroup/valueProcess.js
@@ -0,0 +1,10 @@
+import("system.vars");
+import("system.result");
+import("Keyword_lib");
+
+var kwdUtils = new KeywordUtils();
+
+var cType = vars.get("$field.CONTRACTTYPE");
+var cCode = vars.get("$field.CONTRACTCODE");
+
+result.string(kwdUtils.getViewValue("CONTRACT.CONTRACTTYPE", cType) + " : " + cCode);
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/contractdue/onValidation.js b/entity/Contract_entity/entityfields/contractdue/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..eda236fcfd7726965bf7eeed28c5233b6b0d0e4d
--- /dev/null
+++ b/entity/Contract_entity/entityfields/contractdue/onValidation.js
@@ -0,0 +1,11 @@
+import("system.result");
+import("system.translate");
+import("system.vars");
+import("Date_lib");
+
+var dateUtils = new DateUtils();
+var cDue = vars.get("$local.value");
+
+if (dateUtils.validateBeginnBeforeEnd(vars.get("$field.CONTRACTSTART"), cDue) === false || dateUtils.validateBeginnBeforeEnd(cDue, vars.get("$field.CONTRACTEND")) === false) {
+    result.string(translate.text("Nächste Fälligkeit muss nach Vertragsbeginn und vor Vertragsende liegen!"));
+}
diff --git a/entity/Contract_entity/entityfields/contractend/onValidation.js b/entity/Contract_entity/entityfields/contractend/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..ab2e63d3e9b1848662474418d91988f30f4c4e79
--- /dev/null
+++ b/entity/Contract_entity/entityfields/contractend/onValidation.js
@@ -0,0 +1,18 @@
+import("system.logging");
+import("system.neon");
+import("system.result");
+import("system.translate");
+import("system.vars");
+import("Date_lib");
+
+logging.log("###END_onValidation");
+
+var dateUtils = new DateUtils();
+var cEnd = vars.get("$local.value");
+var cDue = vars.get("$field.CONTRACTDUE");
+
+if (cDue > cEnd && cDue != "")
+    neon.setFieldValue("$field.CONTRACTDUE", cEnd);
+
+if (dateUtils.validateBeginnBeforeEnd(vars.get("$field.CONTRACTSTART"), cEnd) === false)
+    result.string(translate.text("Das Ende-Datum muss nach dem Beginn-Datum liegen"));
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/contractend/onValueChange.js b/entity/Contract_entity/entityfields/contractend/onValueChange.js
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/entity/Contract_entity/entityfields/contracthistory_dfo/children/rowid_param/code.js b/entity/Contract_entity/entityfields/contracthistory_dfo/children/rowid_param/code.js
new file mode 100644
index 0000000000000000000000000000000000000000..6a986948950be876fd394dc2b62dcf465308140a
--- /dev/null
+++ b/entity/Contract_entity/entityfields/contracthistory_dfo/children/rowid_param/code.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.CONTRACTID"));
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/contractstart/onValidation.js b/entity/Contract_entity/entityfields/contractstart/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..d48c866c04d6ab612cc555fba35a129bdc141bd4
--- /dev/null
+++ b/entity/Contract_entity/entityfields/contractstart/onValidation.js
@@ -0,0 +1,18 @@
+import("system.logging");
+import("system.neon");
+import("system.result");
+import("system.translate");
+import("system.vars");
+import("Date_lib");
+
+logging.log("###START_validation");
+
+var dateUtils = new DateUtils();
+var cStart = vars.get("$local.value");
+var cDue = vars.get("$field.CONTRACTDUE");
+
+if (cDue < cStart && cDue != "")
+    neon.setFieldValue("$field.CONTRACTDUE", cStart);
+
+if (dateUtils.validateBeginnBeforeEnd(cStart, vars.get("$field.CONTRACTEND")) === false)
+    result.string(translate.text("Das Ende-Datum muss nach dem Beginn-Datum liegen"));
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/contractstatus/possibleItemsProcess.js b/entity/Contract_entity/entityfields/contractstatus/possibleItemsProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4ee17a5e318ac45aab22939a0f0757ee002e1ccd
--- /dev/null
+++ b/entity/Contract_entity/entityfields/contractstatus/possibleItemsProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Keyword_lib");
+
+var kwdUtils, items;
+
+kwdUtils = new KeywordUtils();
+items = kwdUtils.getStandardArray("CONTRACT.CONTRACTSTATUS");
+result.object(items);
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/contracttype/possibleItemsProcess.js b/entity/Contract_entity/entityfields/contracttype/possibleItemsProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a0f73ce40bde86c966193849ac595122512dc5b3
--- /dev/null
+++ b/entity/Contract_entity/entityfields/contracttype/possibleItemsProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Keyword_lib");
+
+var kwdUtils, items;
+
+kwdUtils = new KeywordUtils();
+items = kwdUtils.getStandardArray("CONTRACT.CONTRACTTYPE");
+result.object(items);
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/date_edit/valueProcess.js b/entity/Contract_entity/entityfields/date_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..00e95d744eab3b281e0f6ae5ee325cee91419534
--- /dev/null
+++ b/entity/Contract_entity/entityfields/date_edit/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_EDIT)
+    result.string(vars.getString("$sys.date"));
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/date_new/valueProcess.js b/entity/Contract_entity/entityfields/date_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7ace62531432fbfb08b15fc33e25d271dc34bd6a
--- /dev/null
+++ b/entity/Contract_entity/entityfields/date_new/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
+    result.string(vars.getString("$sys.date"));
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/image/valueProcess.js b/entity/Contract_entity/entityfields/image/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..33ce1c060c8031be197e57743259f12a400cedbf
--- /dev/null
+++ b/entity/Contract_entity/entityfields/image/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string("TEXT:" + vars.getString("$field.CONTRACTCODE"));
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/payment/possibleItemsProcess.js b/entity/Contract_entity/entityfields/payment/possibleItemsProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c743e4350e36aaf9fe9f5f21921bc237d5e0af96
--- /dev/null
+++ b/entity/Contract_entity/entityfields/payment/possibleItemsProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Keyword_lib");
+
+var kwdUtils, items;
+
+kwdUtils = new KeywordUtils();
+items = kwdUtils.getStandardArray("CONTRACT.PAYMENT");
+result.object(items);
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/relation_id/fieldIdProcess.js b/entity/Contract_entity/entityfields/relation_id/fieldIdProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..70e9184ae257bc5c6ff7704d28009ca4d6444ce7
--- /dev/null
+++ b/entity/Contract_entity/entityfields/relation_id/fieldIdProcess.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("system.db");
+import("system.result");
+import("system.neon");
+
+result.string (vars.get("$this.value"));
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/relation_id/linkedContextProcess.js b/entity/Contract_entity/entityfields/relation_id/linkedContextProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2b4986de6169ea5ce6d3df595321688b516e07aa
--- /dev/null
+++ b/entity/Contract_entity/entityfields/relation_id/linkedContextProcess.js
@@ -0,0 +1,14 @@
+import("system.logging");
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+var relid = vars.getString("$this.value");
+
+if(vars.exists("$image.lookup_orgname") && vars.get("$image.lookup_orgname") != '')
+    result.string("Org_context");
+else if((relid == null || relid.trim() == "0")
+    && (vars.get("$sys.operatingstate") != neon.OPERATINGSTATE_NEW))
+    result.string(null);
+else
+    result.string("Org_context");        
diff --git a/entity/Contract_entity/entityfields/relation_id/valueMappingProcess.js b/entity/Contract_entity/entityfields/relation_id/valueMappingProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/entity/Contract_entity/entityfields/relation_id/valueProcess.js b/entity/Contract_entity/entityfields/relation_id/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..5d0a3cefc2fae68c00424aaa03413d1e2049644f
--- /dev/null
+++ b/entity/Contract_entity/entityfields/relation_id/valueProcess.js
@@ -0,0 +1,9 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
+{
+    if(vars.exists("$param.RelId_param") && vars.get("$param.RelId_param") != null)
+        result.string(vars.getString("$param.RelId_param"));    
+}
diff --git a/entity/Contract_entity/entityfields/user_edit/valueProcess.js b/entity/Contract_entity/entityfields/user_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..67c86b14ca987054658978c88cecf6bd03fa44af
--- /dev/null
+++ b/entity/Contract_entity/entityfields/user_edit/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_EDIT)
+    result.string(vars.getString("$sys.user"));
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/user_new/valueProcess.js b/entity/Contract_entity/entityfields/user_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..81966a3fbcd9b3cf25a186c93baa1928abc9d6d2
--- /dev/null
+++ b/entity/Contract_entity/entityfields/user_new/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
+    result.string(vars.getString("$sys.user"));
\ No newline at end of file
diff --git a/entity/History_entity/History_entity.aod b/entity/History_entity/History_entity.aod
index d3750669e8f8af20a373a0a32e1e929232ce30b9..9db560091b28c095ad916d276bf6dddc27dcf842 100644
--- a/entity/History_entity/History_entity.aod
+++ b/entity/History_entity/History_entity.aod
@@ -114,6 +114,18 @@
       <contentType>IMAGE</contentType>
       <valueProcess>%aditoprj%/entity/History_entity/entityfields/direction_icon/valueProcess.js</valueProcess>
     </entityField>
+    <entityIncomingField>
+      <name>ContractHistory_dfi</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <dependencies>
+        <entityDependency>
+          <name>f47157d9-0cb6-4bcf-a485-08675bd957ee</name>
+          <entityName>Contract_entity</entityName>
+          <fieldName>ContractHistory_dfo</fieldName>
+          <isOutgoing v="false" />
+        </entityDependency>
+      </dependencies>
+    </entityIncomingField>
   </entityFields>
   <linkInformation>
     <linkInformation>
diff --git a/entity/Org_entity/Org_entity.aod b/entity/Org_entity/Org_entity.aod
index 4339184f8a52a7999d43b4f7504b742b2fd30615..8f6e373139b30cfd60bd04e279191daf56b3d6fc 100644
--- a/entity/Org_entity/Org_entity.aod
+++ b/entity/Org_entity/Org_entity.aod
@@ -190,6 +190,12 @@
           <fieldName>PersOrg_dfo</fieldName>
           <isOutgoing v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>5132d22f-8e82-4ab6-bc3b-5cddcbf09661</name>
+          <entityName>Contract_entity</entityName>
+          <fieldName>ContractOrg_dfo</fieldName>
+          <isOutgoing v="false" />
+        </entityDependency>
       </dependencies>
     </entityIncomingField>
     <entityOutgoingField>
@@ -238,6 +244,22 @@
         </entityParameter>
       </children>
     </entityOutgoingField>
+    <entityOutgoingField>
+      <name>OrgContract_dfo</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Contract_entity</entityName>
+        <fieldName>OrgContract_dfi</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>RelId_param</name>
+          <code>%aditoprj%/entity/Org_entity/entityfields/orgcontract_dfo/children/relid_param/code.js</code>
+          <triggerRecalculation v="true" />
+        </entityParameter>
+      </children>
+    </entityOutgoingField>
   </entityFields>
   <linkInformation>
     <linkInformation>
diff --git a/entity/Org_entity/entityfields/orgcontract_dfo/children/relid_param/code.js b/entity/Org_entity/entityfields/orgcontract_dfo/children/relid_param/code.js
new file mode 100644
index 0000000000000000000000000000000000000000..aa257b8b78ed72ce888626a9fa22a890e3c9bf17
--- /dev/null
+++ b/entity/Org_entity/entityfields/orgcontract_dfo/children/relid_param/code.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("system.vars");
+
+result.string(vars.get("$field.RELATIONID"));
\ No newline at end of file
diff --git a/entity/Pers_entity/Pers_entity.aod b/entity/Pers_entity/Pers_entity.aod
index 448e4826911ed57b66a7513fc06b5ad94818853e..4f2e76fecc9db8a4d2cdd7cbd0ea5fbf595c31aa 100644
--- a/entity/Pers_entity/Pers_entity.aod
+++ b/entity/Pers_entity/Pers_entity.aod
@@ -343,6 +343,22 @@
         </entityParameter>
       </children>
     </entityOutgoingField>
+    <entityOutgoingField>
+      <name>PersContract_dfo</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Contract_entity</entityName>
+        <fieldName>PersContract_dfi</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>RelId_param</name>
+          <code>%aditoprj%/entity/Pers_entity/entityfields/perscontract_dfo/children/relid_param/code.js</code>
+          <triggerRecalculation v="true" />
+        </entityParameter>
+      </children>
+    </entityOutgoingField>
   </entityFields>
   <linkInformation>
     <linkInformation>
diff --git a/entity/Pers_entity/entityfields/perscontract_dfo/children/relid_param/code.js b/entity/Pers_entity/entityfields/perscontract_dfo/children/relid_param/code.js
new file mode 100644
index 0000000000000000000000000000000000000000..aa257b8b78ed72ce888626a9fa22a890e3c9bf17
--- /dev/null
+++ b/entity/Pers_entity/entityfields/perscontract_dfo/children/relid_param/code.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("system.vars");
+
+result.string(vars.get("$field.RELATIONID"));
\ No newline at end of file
diff --git a/neonContext/Contract_context/Contract_context.aod b/neonContext/Contract_context/Contract_context.aod
new file mode 100644
index 0000000000000000000000000000000000000000..b33d8cc5b4affa87b7ab7dd31896860ae195a4e4
--- /dev/null
+++ b/neonContext/Contract_context/Contract_context.aod
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.0.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.0.0">
+  <name>Contract_context</name>
+  <title>Contract</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <mainview>ContractMain_view</mainview>
+  <filterview>ContractFilter_view</filterview>
+  <editview>ContractEdit_view</editview>
+  <preview>ContractPreview_view</preview>
+  <entity>Contract_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>b3049f73-3918-407f-905f-61307497a3d8</name>
+      <view>ContractFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>dbca973c-b41f-4a85-961c-025ebe073e62</name>
+      <view>ContractPreview_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>ff6d8aec-1ad3-4cfe-a7a8-3346f4fa8ff0</name>
+      <view>ContractMain_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>e096f918-5312-46eb-8289-d9eddbeaa1f6</name>
+      <view>ContractEdit_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonView/ContractEdit_view/ContractEdit_view.aod b/neonView/ContractEdit_view/ContractEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..7dbc60e17a3fb8f2780885b566740c7bddc6ecbc
--- /dev/null
+++ b/neonView/ContractEdit_view/ContractEdit_view.aod
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.0.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.0.0">
+  <name>ContractEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>Generic</name>
+      <editMode v="true" />
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>5f2ef7a7-d7b5-49a8-86f3-3644036232fb</name>
+          <entityField>CONTRACTCODE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>3177f8e9-24e9-441f-8c19-b004935a86a9</name>
+          <entityField>RELATION_ID</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>b4a51794-f04c-4cc5-b0bd-ff89d8f5ada9</name>
+          <entityField>CONTRACTSTART</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>2fb49607-d34c-4a19-8c4e-2ec3db395fa9</name>
+          <entityField>CONTRACTEND</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>e66d7b82-5b48-46f3-b780-06a5f107faca</name>
+          <entityField>CONTRACTDUE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>f741bfda-5434-42ab-a5e9-ea1f7e4aaf79</name>
+          <entityField>CONTRACTSTATUS</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>ac160ded-1a06-4664-b8bd-333e01468f61</name>
+          <entityField>CONTRACTTYPE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>02d4e542-f7ed-4900-82b3-b096958e1473</name>
+          <entityField>PAYMENT</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>4390abcd-d47e-40b2-85a9-655d39b17e82</name>
+          <entityField>REMARK</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/ContractFilter_view/ContractFilter_view.aod b/neonView/ContractFilter_view/ContractFilter_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..7942908de6fd88691087e561547da7cef94c2b91
--- /dev/null
+++ b/neonView/ContractFilter_view/ContractFilter_view.aod
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.0.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.0.0">
+  <name>ContractFilter_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>Table_template</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTableColumn>
+          <name>1a610a45-8c8c-48d4-bc0b-905655afa016</name>
+          <entityField>CONTRACTCODE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>ea38d067-af86-4936-8311-f64305fc5576</name>
+          <entityField>CONTRACTTYPE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>0ec4c5ee-4af2-4530-8fc3-fbecef7983b7</name>
+          <entityField>RELATION_ID</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>05f745fe-6f29-4536-9794-8ddfefd2b369</name>
+          <entityField>CONTRACTSTATUS</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>ef313bd9-b3a3-4c60-b7d5-9cf2e208aade</name>
+          <entityField>CONTRACTSTART</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>845c3a71-0fa9-4299-9b85-8fa25f92436d</name>
+          <entityField>CONTRACTEND</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>ae80fe48-c0c7-4b53-b014-a25417c6fb35</name>
+          <entityField>CONTRACTDUE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>b72f0fa5-43ba-4852-9dfa-db592193e5a6</name>
+          <entityField>PAYMENT</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/ContractMain_view/ContractMain_view.aod b/neonView/ContractMain_view/ContractMain_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..151066bd583d8d9422352868c0d5e37b9157bd4b
--- /dev/null
+++ b/neonView/ContractMain_view/ContractMain_view.aod
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.0.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.0.0">
+  <name>ContractMain_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <masterSlaveLayout>
+      <name>layout</name>
+      <master>50a9de9b-1b4d-4dbd-a2f0-51b376df5b55</master>
+    </masterSlaveLayout>
+  </layout>
+  <children>
+    <neonViewReference>
+      <name>50a9de9b-1b4d-4dbd-a2f0-51b376df5b55</name>
+      <entityField>#ENTITY</entityField>
+      <view>ContractPreview_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>8c6be607-ccce-4ad7-8dba-875b24d821e7</name>
+      <entityField>ContractHistory_dfo</entityField>
+      <view>HistoryFilter_view</view>
+    </neonViewReference>
+  </children>
+</neonView>
diff --git a/neonView/ContractPreview_view/ContractPreview_view.aod b/neonView/ContractPreview_view/ContractPreview_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..7ac9e76980d46e3e36ac76c4c2e0cf21fce71db5
--- /dev/null
+++ b/neonView/ContractPreview_view/ContractPreview_view.aod
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.0.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.0.0">
+  <name>ContractPreview_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <cardViewTemplate>
+      <name>ContractHeader_template</name>
+      <iconField>IMAGE</iconField>
+      <titleField>CONTRACTCODE_DISPLAY_fieldGroup</titleField>
+      <descriptionField>RELATION_ID</descriptionField>
+      <entityField>#ENTITY</entityField>
+    </cardViewTemplate>
+    <genericViewTemplate>
+      <name>ContractInfo_template</name>
+      <showDrawer v="true" />
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>9101eee8-57b1-4bcf-a271-2501b7a3b842</name>
+          <entityField>CONTRACTSTART</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>9cc46e86-0f4b-406a-a702-77e840fc3988</name>
+          <entityField>CONTRACTEND</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>6529a64b-4249-434a-8692-45daad5264e3</name>
+          <entityField>CONTRACTDUE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>b0ced77c-bd97-4318-8c0b-ad028111f039</name>
+          <entityField>CONTRACTSTATUS</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>aa310f7a-d66b-4128-8af0-3619099605ce</name>
+          <entityField>PAYMENT</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>bb0d44ca-671e-4a0f-87dc-a94e214bca54</name>
+          <entityField>REMARK</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/others/db_changes/data/example_contract/CONTRACT_42154311.xml b/others/db_changes/data/example_contract/CONTRACT_42154311.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c014dc405cd8fd775d2337629edc1764a4e0a79a
--- /dev/null
+++ b/others/db_changes/data/example_contract/CONTRACT_42154311.xml
@@ -0,0 +1,27 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="m.schroeger" id="c7ea5e6e-aff2-4cf5-95f1-f5ca1b350dd0">
+        <insert tableName="CONTRACT">
+            <column name="CONTRACTID" value="384c9d31-9923-4e6a-8a7f-2d2890470b70"/>
+            <column name="USER_NEW" value="Martin"/>
+            <column name="DATE_NEW" valueDate="2018-10-05T03:34:29"/>
+            <column name="RELATION_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
+            <column name="CONTRACTCODE" value="42154311"/>
+            <column name="PAYMENT" valueNumeric="2"/>
+            <column name="CONTRACTTYPE" valueNumeric="0"/>
+            <column name="CONTRACTSTATUS" valueNumeric="1"/>
+            <column name="CONTRACTEND" valueDate="2019-09-30T00:00:00"/>
+            <column name="CONTRACTSTART" valueDate="2018-10-01T00:00:00"/>
+            <column name="CONTRACTDUE" valueDate="2019-01-01T00:00:00"/>
+        </insert>
+        
+        <rollback>
+            <delete tableName="CONTRACT">
+                <where>CONTRACTID = ?</where>
+                <whereParams>
+                    <param value="384c9d31-9923-4e6a-8a7f-2d2890470b70"/>
+                </whereParams>
+            </delete>
+        </rollback>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/others/db_changes/masterChangelog.xml b/others/db_changes/masterChangelog.xml
index f110cd2378b9371d7757ad127e12709621cf12fe..433ed43984cf5766eee56547acb266985908f7e1 100644
--- a/others/db_changes/masterChangelog.xml
+++ b/others/db_changes/masterChangelog.xml
@@ -8,10 +8,12 @@
     <include file="struct/relationChangePERSID.xml"/>
     <include file="struct/create_address.xml"/>
     <include file="struct/create_comm.xml"/>
+    <include file="struct/create_contract.xml"/>
     <include file="misc/1535533490181_persChanges.xml"/>
     <include file="struct/1535612802325_addressChange.xml"/>
     <include file="data/example_org/ORG_privat.xml"/>
     <include file="data/example_org/ORG_gfk.xml"/>
     <include file="data/example_pers/PERS_pfiffig.xml"/>
     <include file="data/example_pers/PERS_sommer.xml"/>
+    <include file="data/example_contract/CONTRACT_42154311.xml"/>
 </databaseChangeLog>
diff --git a/others/db_changes/struct/create_contract.xml b/others/db_changes/struct/create_contract.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b8ca05c8e65ebb0620e132402776f7e285e9d28a
--- /dev/null
+++ b/others/db_changes/struct/create_contract.xml
@@ -0,0 +1,27 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="m.schroeger" id="fdf350de-cff9-4be1-bcbe-61ec9a46c9f0">
+        <createTable tableName="CONTRACT">
+            <column name="CONTRACTCODE" type="VARCHAR(30)"/>
+            <column name="CONTRACTDUE" type="TIMESTAMP"/>
+            <column name="CONTRACTEND" type="TIMESTAMP"/>
+            <column name="CONTRACTSTART" type="TIMESTAMP"/>
+            <column name="CONTRACTID" type="CHAR(36)">
+                <constraints primaryKey="true" primaryKeyName="PK_CONTRACT_CONTRACTID"/>
+            </column>
+            <column name="CONTRACTSTATUS" type="INTEGER"/>
+            <column name="CONTRACTTYPE" type="INTEGER"/>
+            <column name="USER_EDIT" type="VARCHAR(50)"/>
+            <column name="USER_NEW" type="VARCHAR(50)">
+                <constraints nullable="false"/>
+            </column>
+            <column name="DATE_NEW" type="TIMESTAMP">
+                <constraints nullable="false"/>
+            </column>
+            <column name="DATE_EDIT" type="TIMESTAMP"/>
+            <column name="PAYMENT" type="INTEGER"/>
+            <column name="REMARK" type="CLOB"/>
+            <column name="RELATION_ID" type="CHAR(36)"/>
+        </createTable>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod
index b0f2142f63120b471b54bfc6315e1e9844692dc3..6342decac506717ea22a8355652f8a4fde3f4c99 100644
--- a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod
+++ b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod
@@ -2,7 +2,7 @@
 <preferences xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="3.0.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/preferences/3.0.1">
   <name>_____PREFERENCES_PROJECT</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <projectName>xRM-Basic-5</projectName>
+  <projectName>xRM-Basic</projectName>
   <jditoMaxContentSize v="57671680" />
   <calendarCategoriesEvent>
     <entry>
diff --git a/process/Date_lib/Date_lib.aod b/process/Date_lib/Date_lib.aod
new file mode 100644
index 0000000000000000000000000000000000000000..690eacb21d34b72232ab2a49584647116f463b4d
--- /dev/null
+++ b/process/Date_lib/Date_lib.aod
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.1.7">
+  <name>Date_lib</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/Date_lib/process.js</process>
+</process>
diff --git a/process/Date_lib/process.js b/process/Date_lib/process.js
new file mode 100644
index 0000000000000000000000000000000000000000..116db949910cd572600dbe4883119bdac4294535
--- /dev/null
+++ b/process/Date_lib/process.js
@@ -0,0 +1,19 @@
+/**
+ * provides methods for interactions with dates
+ */
+function DateUtils(){
+
+    /**
+     * Validates two date inputs (beginning should always be before the end!)
+     * 
+     * @param pStart {Number}
+     * @param pEnd {Number}
+     * 
+     * @result {Boolean|null} Boolean if it was able to check smth or null if the input values were not valid
+     */
+    this.validateBeginnBeforeEnd = function(pStart, pEnd) {
+        if (pStart == "" || pStart == null || pEnd == "" || pEnd == null) return null
+        return pStart <= pEnd;
+    }
+
+}
\ No newline at end of file
diff --git a/process/Keyword_lib/process.js b/process/Keyword_lib/process.js
index 0a8b118c663ac970b236a8257f077f89668acbae..0ab2a796067eeb67b3889f17c664ddca61a0fe71 100644
--- a/process/Keyword_lib/process.js
+++ b/process/Keyword_lib/process.js
@@ -121,6 +121,29 @@ function KeywordUtils(){
                     ,createKeywordEntry("o", translate.text("${GENDER_OTHER}"))
                 ]);
                 break;
+            case "CONTRACT.CONTRACTTYPE":
+                valueContainer = createKeywordEntriesContainer([
+                     createKeywordEntry("0", translate.text("Rahmenvertrag"))
+                    ,createKeywordEntry("1", translate.text("Werksvertrag"))
+                    ,createKeywordEntry("2", translate.text("Wartungsvertrag"))
+                ]);
+                break;
+            case "CONTRACT.CONTRACTSTATUS":
+                valueContainer = createKeywordEntriesContainer([
+                     createKeywordEntry("0", translate.text("gültig, unbefristet"))
+                    ,createKeywordEntry("1", translate.text("gültig, befristet"))
+                    ,createKeywordEntry("2", translate.text("noch nicht unterschrieben"))
+                    ,createKeywordEntry("3", translate.text("keiner, Einzelberechnung"))
+                    ,createKeywordEntry("4", translate.text("gekündigt"))
+                ]);
+                break;
+            case "CONTRACT.PAYMENT":
+                valueContainer = createKeywordEntriesContainer([
+                     createKeywordEntry("0", translate.text("jährlich"))
+                    ,createKeywordEntry("1", translate.text("halbjährlich"))
+                    ,createKeywordEntry("2", translate.text("vierteljährlich"))
+                ]);
+                break;
             default: 
                 throw new Error(translate.withArguments("[%0]the given keyword \"%1\" has no match with the possible keywordlist", [
                     arguments.callee.name, keywordType
diff --git a/system/default/default.aod b/system/default/default.aod
index 7cdaa1009687064b4d4e9a77d17ffa1c299d9076..6af409799bfdb9087d5456cd096f1b285a723f99 100644
--- a/system/default/default.aod
+++ b/system/default/default.aod
@@ -6,4 +6,5 @@
   <aditoHomePath>$ADITOHOME</aditoHomePath>
   <aditoDataPath>$PROJECTHOME/data</aditoDataPath>
   <loginUser>Admin</loginUser>
+  <loginPassword>a</loginPassword>
 </system>