diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod
index fb04b3c8a9196fd01e846f8628d7646faa565da6..3e692671346939da2c53db11494ce31f0edff7af 100644
--- a/aliasDefinition/Data_alias/Data_alias.aod
+++ b/aliasDefinition/Data_alias/Data_alias.aod
@@ -2131,6 +2131,447 @@
               </entityFieldDb>
             </entityFields>
           </entityDb>
+          <entityDb>
+            <name>SALESPROJECT</name>
+            <dbName></dbName>
+            <idColumn>SALESPROJECTID</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>STARTDATE</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>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>VOLUME</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="2" />
+                <size v="14" />
+                <scale v="2" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>ESTIMATIONVALUE</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>INFO</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>
+              <entityFieldDb>
+                <name>ESTIMATION</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>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>ENDDATE</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>PHASE</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>STATUS</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>PROJECTCODE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SALESPROJECTID</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>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="true" />
+                <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>PROJECTTITLE</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>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>OFFER</name>
+            <dbName></dbName>
+            <idColumn>OFFERID</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>CURRENCY</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>LANGUAGE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="5" />
+                <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>VAT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="2" />
+                <size v="14" />
+                <scale v="2" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>OFFERDATE</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>OFFERID</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>SALESPROJECT_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_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>OFFERCODE</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>PROBABILITY</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>STATUS</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="true" />
+                <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>NET</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="2" />
+                <size v="14" />
+                <scale v="2" />
+                <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 aa39b840b353c139a837a6a28337a1a1a92e7c45..dc3d3dc4aa6a7d2f568a65b02df309afb00dab13 100644
--- a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod
+++ b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod
@@ -6,7 +6,6 @@
     <node name="CONTACTS" kind="123" title="Contactmanagement">
       <icon>VAADIN:STAR</icon>
       <node name="Group1" kind="123" title="">
-        <node name="_test_clientProcess" kind="103" />
         <node name="Vertriebsdashboard" kind="10090" />
         <node name="Calendar_context" kind="10077" />
         <node name="Org_context" kind="10077" />
@@ -17,6 +16,8 @@
     </node>
     <node name="SALES" kind="123" title="Sales">
       <node name="Group2" kind="123" title="">
+        <node name="Salesproject_context" kind="10077" />
+        <node name="Offer_context" kind="10077" />
         <node name="Contract_context" kind="10077" />
         <node name="Product_context" kind="10077" />
         <node name="INTERNAL_ADMINISTRATOR" kind="159" />
diff --git a/entity/Address_entity/Address_entity.aod b/entity/Address_entity/Address_entity.aod
index 134e6a329c6fd25a6816675ecb81e8721f5b25e9..6cc8087d7753dab09bf7f85d37d3072b5a381b78 100644
--- a/entity/Address_entity/Address_entity.aod
+++ b/entity/Address_entity/Address_entity.aod
@@ -3,10 +3,10 @@
   <name>Address_entity</name>
   <title>Addresses</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <alias>Data_alias</alias>
-  <conditionProcess>%aditoprj%/entity/Address_entity/conditionProcess.js</conditionProcess>
   <recordContainerType>DB</recordContainerType>
   <caption>Addresses</caption>
+  <alias>Data_alias</alias>
+  <conditionProcess>%aditoprj%/entity/Address_entity/conditionProcess.js</conditionProcess>
   <entityFields>
     <entityField>
       <name>ADDRESS</name>
@@ -161,6 +161,9 @@
         <element>MASK</element>
       </onValueChangeTypes>
     </entityField>
+    <entityIncomingField>
+      <name>#INCOMING</name>
+    </entityIncomingField>
   </entityFields>
   <linkInformation>
     <linkInformation>
diff --git a/entity/Appointment_entity/Appointment_entity.aod b/entity/Appointment_entity/Appointment_entity.aod
index ee9c00ae7fe998c7b23077cb171a5aaa5a2d1465..2a647e86736f41237906541f5af57bd137c1b655 100644
--- a/entity/Appointment_entity/Appointment_entity.aod
+++ b/entity/Appointment_entity/Appointment_entity.aod
@@ -3,6 +3,8 @@
   <name>Appointment_entity</name>
   <title>Termin</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <recordContainerType>JDITO</recordContainerType>
+  <caption>Termin</caption>
   <alias>Data_alias</alias>
   <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
   <fields>
@@ -21,14 +23,13 @@
     <element>LOCATION</element>
     <element>ICON</element>
     <element>CLASSIFICATION</element>
-    <element>ALLDAY</element>
+    <element>TRANSPARENCY</element>
+    <element>CATEGORIES</element>
   </fields>
   <contentProcess>%aditoprj%/entity/Appointment_entity/contentProcess.js</contentProcess>
   <onInsert>%aditoprj%/entity/Appointment_entity/onInsert.js</onInsert>
   <onUpdate>%aditoprj%/entity/Appointment_entity/onUpdate.js</onUpdate>
   <onDelete>%aditoprj%/entity/Appointment_entity/onDelete.js</onDelete>
-  <recordContainerType>JDITO</recordContainerType>
-  <caption>Termin</caption>
   <entityFields>
     <entityField>
       <name>SUMMARY</name>
@@ -88,6 +89,7 @@
     </entityField>
     <entityField>
       <name>CATEGORIES</name>
+      <fieldName>CATEGORIES</fieldName>
       <possibleItemsProcess>%aditoprj%/entity/Appointment_entity/entityfields/categories/possibleItemsProcess.js</possibleItemsProcess>
       <newItemsAllowed v="true" />
       <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/categories/valueProcess.js</valueProcess>
@@ -98,10 +100,42 @@
       <possibleItemsProcess>%aditoprj%/entity/Appointment_entity/entityfields/attendees/possibleItemsProcess.js</possibleItemsProcess>
     </entityField>
     <entityField>
-      <name>ALLDAY</name>
-      <fieldName>ALLDAY</fieldName>
-      <contentType>BOOLEAN</contentType>
-      <selectionMode>NONE</selectionMode>
+      <name>TRANSPARENCY</name>
+      <fieldName>TRANSPARENCY</fieldName>
     </entityField>
+    <entityActionGroup>
+      <name>PartStatActionGroup</name>
+      <children>
+        <entityActionField>
+          <name>accept</name>
+          <fieldType>ACTION</fieldType>
+          <onActionProcess>%aditoprj%/entity/Appointment_entity/entityfields/partstatactiongroup/children/accept/onActionProcess.js</onActionProcess>
+          <actionOrder v="0" />
+          <caption>zusagen</caption>
+          <icon>VAADIN:CHECK</icon>
+          <iconId>VAADIN:CHECK</iconId>
+        </entityActionField>
+        <entityActionField>
+          <name>decline</name>
+          <fieldType>ACTION</fieldType>
+          <description></description>
+          <onActionProcess>%aditoprj%/entity/Appointment_entity/entityfields/partstatactiongroup/children/decline/onActionProcess.js</onActionProcess>
+          <caption>absagen</caption>
+          <icon>VAADIN:CLOSE</icon>
+          <iconId>VAADIN:CLOSE</iconId>
+        </entityActionField>
+        <entityActionField>
+          <name>tentative</name>
+          <fieldType>ACTION</fieldType>
+          <onActionProcess>%aditoprj%/entity/Appointment_entity/entityfields/partstatactiongroup/children/tentative/onActionProcess.js</onActionProcess>
+          <caption>vielleicht</caption>
+          <icon>VAADIN:QUESTION</icon>
+          <iconId>VAADIN:QUESTION</iconId>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
+    <entityIncomingField>
+      <name>#INCOMING</name>
+    </entityIncomingField>
   </entityFields>
 </entity>
diff --git a/entity/Appointment_entity/contentProcess.js b/entity/Appointment_entity/contentProcess.js
index 6a57154016b53af00b1c1fc481f97ca9479d471f..927ff03b31f8e3c4ae557c6c99f25a076cbca914 100644
--- a/entity/Appointment_entity/contentProcess.js
+++ b/entity/Appointment_entity/contentProcess.js
@@ -23,12 +23,13 @@ if(vars.exists("$param.entry"))
     var reminder = entry[calendars.REMINDER];
     var remindercheck = entry[calendars.HASREMINDER]
     var classification = entry[calendars.CLASSIFICATION];
-    var allday = entry[calendars];
+    var transparency = entry[calendars.TRANSPARENCY];
+    var categories = entry[calendars.CATEGORIES];
     
     //@TODO Icon 
   
     result.object([
-        [uid, '', '', attendees.length, startdate, enddate, summary, organizer, attendees, status, links, description, location, '', classification, allday] //, location, reminder, remindercheck
+        [uid, '', '', attendees.length, startdate, enddate, summary, organizer, attendees, status, links, description, location, '', classification, transparency, categories] //reminder, remindercheck
         ]);
 }
 else
diff --git a/entity/Appointment_entity/entityfields/partstatactiongroup/children/accept/onActionProcess.js b/entity/Appointment_entity/entityfields/partstatactiongroup/children/accept/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4ee04f054f1217ca5ce2f61235174720e00b8e00
--- /dev/null
+++ b/entity/Appointment_entity/entityfields/partstatactiongroup/children/accept/onActionProcess.js
@@ -0,0 +1,17 @@
+import("system.calendars");
+import("system.vars");
+import("system.text");
+import("system.neon");
+import("Appointment_lib");
+
+var appointmentUtil = new AppointmentUtils();     
+
+var currentUserEncodedString = calendars.getCalendarUser(vars.getString("$sys.user"));
+var currentUserDecodedArray = text.decodeMS(currentUserEncodedString);
+var currentUserUri = currentUserDecodedArray[0];
+
+var currentAttendees = vars.get("$field.ATTENDEES");
+var updatedAttendees = appointmentUtil.setPartStat(currentUserUri, currentAttendees, "ACCEPTED");
+
+appointmentUtil.sendExchangedAction(vars.get("$param.entry"));
+neon.setFieldValue("$field.ATTENDEES", updatedAttendees);
diff --git a/entity/Appointment_entity/entityfields/partstatactiongroup/children/decline/onActionProcess.js b/entity/Appointment_entity/entityfields/partstatactiongroup/children/decline/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4c8288f8a49b6b59e2fcc0f1dd060a70949568f0
--- /dev/null
+++ b/entity/Appointment_entity/entityfields/partstatactiongroup/children/decline/onActionProcess.js
@@ -0,0 +1,17 @@
+import("system.calendars");
+import("system.vars");
+import("system.text");
+import("system.neon");
+import("Appointment_lib");
+
+var appointmentUtil = new AppointmentUtils();     
+
+var currentUserEncodedString = calendars.getCalendarUser(vars.getString("$sys.user"));
+var currentUserDecodedArray = text.decodeMS(currentUserEncodedString);
+var currentUserUri = currentUserDecodedArray[0];
+
+var currentAttendees = vars.get("$field.ATTENDEES");
+var updatedAttendees = appointmentUtil.setPartStat(currentUserUri, currentAttendees, "DECLINED");
+
+appointmentUtil.sendExchangedAction(vars.get("$param.entry"));
+neon.setFieldValue("$field.ATTENDEES", updatedAttendees);
diff --git a/entity/Appointment_entity/entityfields/partstatactiongroup/children/tentative/onActionProcess.js b/entity/Appointment_entity/entityfields/partstatactiongroup/children/tentative/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9fdc8598e107ef80c6e91de3743de711adfde54e
--- /dev/null
+++ b/entity/Appointment_entity/entityfields/partstatactiongroup/children/tentative/onActionProcess.js
@@ -0,0 +1,17 @@
+import("system.calendars");
+import("system.vars");
+import("system.text");
+import("system.neon");
+import("Appointment_lib");
+
+var appointmentUtil = new AppointmentUtils();     
+
+var currentUserEncodedString = calendars.getCalendarUser(vars.getString("$sys.user"));
+var currentUserDecodedArray = text.decodeMS(currentUserEncodedString);
+var currentUserUri = currentUserDecodedArray[0];
+
+var currentAttendees = vars.get("$field.ATTENDEES");
+var updatedAttendees = appointmentUtil.setPartStat(currentUserUri, currentAttendees, "TENTATIVE");
+
+appointmentUtil.sendExchangedAction(vars.get("$param.entry"));
+neon.setFieldValue("$field.ATTENDEES", updatedAttendees);
\ No newline at end of file
diff --git a/entity/Appointment_entity/onInsert.js b/entity/Appointment_entity/onInsert.js
index 9eac4094d6b455abb0e28fcc81674849cf327956..d9648f110d4b5e36624417367b76258f8143b80f 100644
--- a/entity/Appointment_entity/onInsert.js
+++ b/entity/Appointment_entity/onInsert.js
@@ -10,12 +10,8 @@ import("system.db");
 import("system.result");
 import("system.tools");
 
-logging.log("on insert");
 
-// Dieser Prozess speichert die im Frame angezeigten Daten
-// Je nach Modus (INSERT, EDIT) wird ein neuer Datensatz angelegt oder der alte editiert
 var event = JSON.parse(vars.getString("param.entry"));
-
 var ok = false;
 
 event[calendars.TYPE] = calendars.VEVENT;
@@ -40,20 +36,20 @@ if (hasReminder == "true")
             event[calendars.REMINDER_DATE] = reminder_date;
         }
     }
-//        else
-//        {
-//            var reminder_duration = vars.getString("$field.reminder_duration");
-//            if ( reminder_duration != "")
-//            {
-//                event[calendars.HASREMINDER] = "true";
-//                event[calendars.REMINDER_DURATION] = reminder_duration;
-//            }
-//        }
+    else
+    {
+        var reminder_duration = vars.getString("$field.reminder_duration");
+        if ( reminder_duration != "")
+        {
+            event[calendars.HASREMINDER] = "true";
+            event[calendars.REMINDER_DURATION] = reminder_duration;
+        }
+    }
+    
 }
 event[calendars.CLASSIFICATION] = vars.get("$field.CLASSIFICATION");
-//    event[calendars.TRANSPARENCY] = vars.get("$field.transparency");
-//event[calendars.AFFECTEDUSERS] = getAffectedUsers( event );   
-//    event[calendars.CATEGORIES] = vars.get("$field.categories");
+event[calendars.TRANSPARENCY] = vars.get("$field.TRANSPARENCY"); 
+event[calendars.CATEGORIES] = vars.get("$field.CATEGORIES");
 //calcrecurrence(event);
 //if (event[calendars.RRULE] != undefined)     recurrencend(event);
 // Links updaten
@@ -63,50 +59,7 @@ event[calendars.ID] = calendars.insert([event])[0];
 vars.set("$image.editmode", calendars.MODE_UPDATE);
 ok = true;
 
-////Zwischenspeichern
-//if(vars.exists("$image.dontClose") && vars.get("$image.dontClose") )    ok = false; //Maske offen lassen
-//vars.set("$image.dontClose",  false); // zurücksetzen, damit Klick auf Speichern noch funktioniert
-
-if(vars.exists("$sys.ancestorimageuid") && vars.get("$sys.ancestorimageuid") != null)
-{
-    neon.closeImage(vars.getString("$sys.currentimage"), true);
-    neon.refresh(vars.get("$sys.ancestorimageuid"));
-}
-
 
-// Liefert die AffectedUsers
-function getAffectedUsers( pEvent )
-{
-    var affectedusers = vars.get("$image.affectedusers");    
-    var attendess = pEvent[calendars.ATTENDEES]
-    var calendarusers = [];
-    for ( var i = 0; i < affectedusers.length; i++)   
-    {
-        var insert = true;
-        for ( var y = 0; y < attendess.length; y++)
-        {
-            // Teilnehmer schon vorhanden
-            if ( text.encodeMS( [attendess[y]["paramvalue"], "CN:" + attendess[y]["cn"]] ) == affectedusers[i][0] )
-            {
-                var userparts = [attendess[y]["paramvalue"]];
-                if ( affectedusers[i][1] != "" && affectedusers[i][1] != "UNKNOWN" )  attendess[y]["partstat"] = affectedusers[i][1];
-                for ( var part in attendess[y] )   if ( part != "paramvalue")  userparts.push(part + ":" + attendess[y][part] )
-                calendarusers.push( text.encodeMS(userparts) );
-                insert = false;
-                break;
-            }
-        }
-        if ( insert ) // Teilnehmer noch nicht im Termin vorhanden
-        {
-            var resource = db.cell("select THEME from THEME where THEMEID = '" + affectedusers[i][0] + "'");
-            if( resource != "" && tools.existUsers(resource) )   
-                calendarusers.push(text.encodeMS(text.decodeMS(calendars.getCalendarUser(resource)).concat("CUTYPE:RESOURCE")));
-            else    calendarusers.push(affectedusers[i][0]);
-        }
-    }
-    //    a.showMessage(calendarusers.join("\n"))
-    return text.encodeMS( calendarusers );
-}
 
 // Liefert die Benutzer zurück, auf die keine Schreibrechte bestehen
 function getReadOnlyUser()
diff --git a/entity/Appointment_entity/onUpdate.js b/entity/Appointment_entity/onUpdate.js
index 9418f7f109ea872b5de5fe2aea8672d42016353d..14e610ccd1b99d5f6c0a50d5c0daa05ac32dc43c 100644
--- a/entity/Appointment_entity/onUpdate.js
+++ b/entity/Appointment_entity/onUpdate.js
@@ -11,9 +11,6 @@ import("system.db");
 import("system.result");
 import("system.tools");
 
-
-logging.log("on update");
-
 // Dieser Prozess speichert die im Frame angezeigten Daten
 // Je nach Modus (INSERT, EDIT) wird ein neuer Datensatz angelegt oder der alte editiert
 if(vars.exists("param.entry"))
@@ -27,7 +24,7 @@ if(vars.exists("param.entry"))
         ok = true;
     }
     else
-        {
+    {
         
         event[calendars.TYPE] = calendars.VEVENT;
         event[calendars.STATUS] = vars.getString("$field.STATUS");
@@ -39,8 +36,8 @@ if(vars.exists("param.entry"))
         event[calendars.HASREMINDER] = "false";
         event[calendars.CLASSIFICATION] = vars.get("$field.CLASSIFICATION");
         event[calendars.CATEGORIES] = vars.get("$field.CATEGORIES");
-        var att = vars.get("$field.ATTENDEES");
-        event[calendars.AFFECTEDUSERS] = att;
+        event[calendars.AFFECTEDUSERS] = vars.get("$field.ATTENDEES");
+        event[calendars.TRANSPARENCY] = vars.get("$field.TRANSPARENCY");
         var hasReminder = vars.get("$field.REMINDER_CHECK");
         if (hasReminder == "true")
         {
@@ -63,29 +60,18 @@ if(vars.exists("param.entry"))
         //                event[calendars.REMINDER_DURATION] = reminder_duration;
         //            }
         //        }
-        }
-        //    event[calendars.TRANSPARENCY] = vars.get("$comp.transparency");  
             //event[calendars.AFFECTEDUSERS] = getAffectedUsers( event ); 
         //    calcrecurrence(event);
         //    if (event[calendars.RRULE] != undefined)     recurrencend(event);
         // Links updaten
         //swing.saveTableEdit("$comp.links");
         // Entweder jetzt neu anlegen oder nur updaten
+        }
 
         calendars.updateEntry(event);
          
         ok = true;
     }
-    //    //Zwischenspeichern
-    //    if(vars.exists("$image.dontClose") && vars.get("$image.dontClose") )    ok = false; //Maske offen lassen
-    //    vars.set("$image.dontClose",  false); // zurücksetzen, damit Klick auf Speichern noch funktioniert
-
-    
-   if(vars.exists("$sys.ancestorimageuid") && vars.get("$sys.ancestorimageuid") != null)
-    {
-        neon.closeImage(vars.getString("$sys.currentimage"), true);
-        neon.refresh(vars.get("$sys.ancestorimageuid"));
-    }
 }
 // Liefert die AffectedUsers
 function getAffectedUsers( pEvent )
@@ -141,7 +127,7 @@ function isWriteable(user, writeable)
 {
     for (var i = 0; i < writeable.length; i++)
     {
-        if (writeable[i][0] == calendars.getCalendarUser(user))		
+        if (writeable[i][0] == calendars.getCalendarUser(user))
             return true;
     }	
     return false;
diff --git a/entity/Comm_entity/Comm_entity.aod b/entity/Comm_entity/Comm_entity.aod
index 3841980aa55fea829857d7bbb6f38a46cc2d229b..c8e8ab8a1280bd4d3acf578d04f850279cff51b7 100644
--- a/entity/Comm_entity/Comm_entity.aod
+++ b/entity/Comm_entity/Comm_entity.aod
@@ -41,7 +41,6 @@
       <columnName>MEDIUM_ID</columnName>
       <caption>Medium</caption>
       <possibleItemsProcess>%aditoprj%/entity/Comm_entity/entityfields/medium_id/possibleItemsProcess.js</possibleItemsProcess>
-      <valueMappingProcess>%aditoprj%/entity/Comm_entity/entityfields/medium_id/valueMappingProcess.js</valueMappingProcess>
     </entityField>
     <entityField>
       <name>RELATION_ID</name>
@@ -72,48 +71,6 @@
       <description>This parameter is used for specifing a related &amp;quot;RELATIONID&amp;quot; to a COMM-entry. 
 Usually this is used for filtering COMM-entires by a specified contact or creating a new entry that is related to a contact.</description>
     </entityParameter>
-    <entityIncomingField>
-      <name>PersComm_dfi</name>
-      <fieldType>DEPENDENCY_IN</fieldType>
-      <dependencies>
-        <entityDependency>
-          <name>b509cb67-6306-4f74-8ce8-0385052a9611</name>
-          <entityName>Pers_entity</entityName>
-          <fieldName>PersComm_dfo</fieldName>
-          <isOutgoing v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>6bee4be4-34bd-47fc-a909-8e8bbf2f45f2</name>
-          <entityName>Pers_entity</entityName>
-          <fieldName>PersCommPhone_dfo</fieldName>
-          <isOutgoing v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>89ff88fa-029f-4b0d-a358-b7b310a6e72c</name>
-          <entityName>Pers_entity</entityName>
-          <fieldName>PersCommOthers_dfo</fieldName>
-          <isOutgoing v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>90c0436e-3a46-40ec-ae73-b4aaded95bbc</name>
-          <entityName>Pers_entity</entityName>
-          <fieldName>PersCommEmail_dfo</fieldName>
-          <isOutgoing v="false" />
-        </entityDependency>
-      </dependencies>
-    </entityIncomingField>
-    <entityIncomingField>
-      <name>OrgComm_dfi</name>
-      <fieldType>DEPENDENCY_IN</fieldType>
-      <dependencies>
-        <entityDependency>
-          <name>09723d40-72bc-4fcd-8283-fe085de73330</name>
-          <entityName>Org_entity</entityName>
-          <fieldName>OrgComm_dfo</fieldName>
-          <isOutgoing v="false" />
-        </entityDependency>
-      </dependencies>
-    </entityIncomingField>
     <entityField>
       <name>IS_STANDARD</name>
       <contentType>BOOLEAN</contentType>
@@ -127,6 +84,9 @@ Usually this is used for filtering COMM-entires by a specified contact or creati
 So, for only showing telephone-types you&amp;apos;ve to specify this parameter with it&amp;apos;s phone-number-category.
 </description>
     </entityParameter>
+    <entityIncomingField>
+      <name>#INCOMING</name>
+    </entityIncomingField>
   </entityFields>
   <linkInformation>
     <linkInformation>
diff --git a/entity/Contract_entity/Contract_entity.aod b/entity/Contract_entity/Contract_entity.aod
index 24d0ce85178a4ea6630a65d0547cf71b071e4671..8388d1b55c2ea8912f9b948347290f6031bd3336 100644
--- a/entity/Contract_entity/Contract_entity.aod
+++ b/entity/Contract_entity/Contract_entity.aod
@@ -3,10 +3,11 @@
   <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>
+  <iconId>VAADIN:FORM</iconId>
+  <alias>Data_alias</alias>
+  <conditionProcess>%aditoprj%/entity/Contract_entity/conditionProcess.js</conditionProcess>
   <entityFields>
     <entityField>
       <name>CONTRACTCODE</name>
@@ -48,6 +49,7 @@
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
       <onValidation>%aditoprj%/entity/Contract_entity/entityfields/contractstart/onValidation.js</onValidation>
+      <onValueChange>%aditoprj%/entity/Contract_entity/entityfields/contractstart/onValueChange.js</onValueChange>
     </entityField>
     <entityField>
       <name>CONTRACTSTATUS</name>
@@ -96,7 +98,6 @@
       <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>
@@ -163,6 +164,7 @@
     </entityFieldGroup>
     <entityOutgoingField>
       <name>ContractHistory_dfo</name>
+      <title>Histories</title>
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
@@ -185,6 +187,9 @@
         <fieldName>Org_dfi</fieldName>
       </dependency>
     </entityOutgoingField>
+    <entityIncomingField>
+      <name>#INCOMING</name>
+    </entityIncomingField>
   </entityFields>
   <linkInformation>
     <linkInformation>
diff --git a/entity/Contract_entity/entityfields/contractend/onValidation.js b/entity/Contract_entity/entityfields/contractend/onValidation.js
index 395a6cc1c1c9b364724ceb28322251dcb7737cb0..fdd3b12c5740cb61e9421a4f391bc8dd353190db 100644
--- a/entity/Contract_entity/entityfields/contractend/onValidation.js
+++ b/entity/Contract_entity/entityfields/contractend/onValidation.js
@@ -1,4 +1,3 @@
-import("system.neon");
 import("system.result");
 import("system.vars");
 import("Date_lib");
@@ -7,8 +6,5 @@ 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(dateUtils.getValidationFailString());
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/contractend/onValueChange.js b/entity/Contract_entity/entityfields/contractend/onValueChange.js
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5a41f5caef66e87d9275a21f81d09bea8b71b93d 100644
--- a/entity/Contract_entity/entityfields/contractend/onValueChange.js
+++ b/entity/Contract_entity/entityfields/contractend/onValueChange.js
@@ -0,0 +1,7 @@
+import("system.vars");
+
+var cEnd = vars.get("$local.value");
+var cDue = vars.get("$field.CONTRACTDUE");
+
+if (cDue > cEnd && cDue != "")
+    vars.set("$field.CONTRACTDUE", cEnd);
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/contractstart/onValidation.js b/entity/Contract_entity/entityfields/contractstart/onValidation.js
index 708535533f895c6c79495deb2000a2e9a3dcad33..f09d0ff9ed4d0de74280fb49485a7100abde3f15 100644
--- a/entity/Contract_entity/entityfields/contractstart/onValidation.js
+++ b/entity/Contract_entity/entityfields/contractstart/onValidation.js
@@ -7,8 +7,5 @@ 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(dateUtils.getValidationFailString());
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/contractstart/onValueChange.js b/entity/Contract_entity/entityfields/contractstart/onValueChange.js
new file mode 100644
index 0000000000000000000000000000000000000000..c8715e611c2a54cd2cb3c2aa7acfa8975da87693
--- /dev/null
+++ b/entity/Contract_entity/entityfields/contractstart/onValueChange.js
@@ -0,0 +1,7 @@
+import("system.vars");
+
+var cStart = vars.get("$local.value");
+var cDue = vars.get("$field.CONTRACTDUE");
+
+if (cDue < cStart && cDue != "")
+    vars.set("$field.CONTRACTDUE", cStart);
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/image/valueProcess.js b/entity/Contract_entity/entityfields/image/valueProcess.js
index 33ce1c060c8031be197e57743259f12a400cedbf..d57bf169099934e0393dee89868a321f9d07b49e 100644
--- a/entity/Contract_entity/entityfields/image/valueProcess.js
+++ b/entity/Contract_entity/entityfields/image/valueProcess.js
@@ -1,4 +1,7 @@
 import("system.vars");
 import("system.result");
+import("Keyword_lib");
 
-result.string("TEXT:" + vars.getString("$field.CONTRACTCODE"));
\ No newline at end of file
+var KeywUtils = new KeywordUtils();
+
+result.string("TEXT:" + KeywUtils.getViewValue("CONTRACT.CONTRACTTYPE", vars.getString("$field.CONTRACTTYPE")) );
\ No newline at end of file
diff --git a/entity/History_entity/History_entity.aod b/entity/History_entity/History_entity.aod
index 9db560091b28c095ad916d276bf6dddc27dcf842..9d4131bdaf67a55f19ea7f277342545576757948 100644
--- a/entity/History_entity/History_entity.aod
+++ b/entity/History_entity/History_entity.aod
@@ -3,15 +3,15 @@
   <name>History_entity</name>
   <title>History</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <recordContainerType>DB</recordContainerType>
+  <caption>History</caption>
+  <iconId>NEON:HISTORY</iconId>
+  <imageProcess>%aditoprj%/entity/History_entity/imageProcess.js</imageProcess>
   <alias>Data_alias</alias>
   <fromClauseProcess>%aditoprj%/entity/History_entity/fromClauseProcess.js</fromClauseProcess>
   <conditionProcess>%aditoprj%/entity/History_entity/conditionProcess.js</conditionProcess>
   <onDBInsert>%aditoprj%/entity/History_entity/onDBInsert.js</onDBInsert>
   <onDBDelete>%aditoprj%/entity/History_entity/onDBDelete.js</onDBDelete>
-  <recordContainerType>DB</recordContainerType>
-  <caption>History</caption>
-  <iconId>NEON:HISTORY</iconId>
-  <imageProcess>%aditoprj%/entity/History_entity/imageProcess.js</imageProcess>
   <entityFields>
     <entityField>
       <name>DIRECTION</name>
@@ -126,6 +126,9 @@
         </entityDependency>
       </dependencies>
     </entityIncomingField>
+    <entityIncomingField>
+      <name>#INCOMING</name>
+    </entityIncomingField>
   </entityFields>
   <linkInformation>
     <linkInformation>
diff --git a/entity/Offer_entity/Offer_entity.aod b/entity/Offer_entity/Offer_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..696f09f949d671927d4bea2c3a4e0ed26eb20264
--- /dev/null
+++ b/entity/Offer_entity/Offer_entity.aod
@@ -0,0 +1,133 @@
+<?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>Offer_entity</name>
+  <title>Offer</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <alias>Data_alias</alias>
+  <recordContainerType>DB</recordContainerType>
+  <caption>Offer</caption>
+  <entityFields>
+    <entityIncomingField>
+      <name>#INCOMING</name>
+    </entityIncomingField>
+    <entityField>
+      <name>CURRENCY</name>
+      <tableName>OFFER</tableName>
+      <columnName>CURRENCY</columnName>
+      <caption>Currency</caption>
+      <possibleItemsProcess>%aditoprj%/entity/Offer_entity/entityfields/currency/possibleItemsProcess.js</possibleItemsProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_EDIT</name>
+      <tableName>OFFER</tableName>
+      <columnName>DATE_EDIT</columnName>
+      <contentType>DATE</contentType>
+      <outputFormat>yyyy-MM-dd&amp;apos;T&amp;apos;HH:mm:ssZ</outputFormat>
+      <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/date_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_NEW</name>
+      <tableName>OFFER</tableName>
+      <columnName>DATE_NEW</columnName>
+      <contentType>DATE</contentType>
+      <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/date_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>LANGUAGE</name>
+      <tableName>OFFER</tableName>
+      <columnName>LANGUAGE</columnName>
+      <caption>Language</caption>
+      <mandatory v="true" />
+      <possibleItemsProcess>%aditoprj%/entity/Offer_entity/entityfields/language/possibleItemsProcess.js</possibleItemsProcess>
+    </entityField>
+    <entityField>
+      <name>NET</name>
+      <tableName>OFFER</tableName>
+      <columnName>NET</columnName>
+      <caption>Total net</caption>
+    </entityField>
+    <entityField>
+      <name>OFFERCODE</name>
+      <tableName>OFFER</tableName>
+      <columnName>OFFERCODE</columnName>
+      <caption>Offer number</caption>
+      <state>READONLY</state>
+      <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/offercode/valueProcess.js</valueProcess>
+      <onValidation>%aditoprj%/entity/Offer_entity/entityfields/offercode/onValidation.js</onValidation>
+    </entityField>
+    <entityField>
+      <name>OFFERDATE</name>
+      <tableName>OFFER</tableName>
+      <columnName>OFFERDATE</columnName>
+      <caption>Date</caption>
+      <contentType>DATE</contentType>
+      <resolution>DAY</resolution>
+      <mandatory v="true" />
+      <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/offerdate/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>OFFERID</name>
+      <tableName>OFFER</tableName>
+      <columnName>OFFERID</columnName>
+      <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/offerid/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>PROBABILITY</name>
+      <tableName>OFFER</tableName>
+      <columnName>PROBABILITY</columnName>
+      <caption>Probability</caption>
+      <possibleItemsProcess>%aditoprj%/entity/Offer_entity/entityfields/probability/possibleItemsProcess.js</possibleItemsProcess>
+    </entityField>
+    <entityField>
+      <name>RELATION_ID</name>
+      <tableName>OFFER</tableName>
+      <columnName>RELATION_ID</columnName>
+      <caption>Contact / Company</caption>
+      <mandatory v="true" />
+    </entityField>
+    <entityField>
+      <name>SALESPROJECT_ID</name>
+      <tableName>OFFER</tableName>
+      <columnName>SALESPROJECT_ID</columnName>
+      <caption>Salesproject</caption>
+    </entityField>
+    <entityField>
+      <name>STATUS</name>
+      <tableName>OFFER</tableName>
+      <columnName>STATUS</columnName>
+      <caption>Status</caption>
+      <possibleItemsProcess>%aditoprj%/entity/Offer_entity/entityfields/status/possibleItemsProcess.js</possibleItemsProcess>
+    </entityField>
+    <entityField>
+      <name>USER_EDIT</name>
+      <tableName>OFFER</tableName>
+      <columnName>USER_EDIT</columnName>
+      <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/user_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_NEW</name>
+      <tableName>OFFER</tableName>
+      <columnName>USER_NEW</columnName>
+      <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/user_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>VAT</name>
+      <tableName>OFFER</tableName>
+      <columnName>VAT</columnName>
+      <caption>Total VAT</caption>
+    </entityField>
+    <entityField>
+      <name>IMAGE</name>
+      <contentType>IMAGE</contentType>
+      <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/image/valueProcess.js</valueProcess>
+    </entityField>
+  </entityFields>
+  <linkInformation>
+    <linkInformation>
+      <name>8f05a818-b447-40e6-8ee6-d3c2452f3dbe</name>
+      <tableName>OFFER</tableName>
+      <primaryKey>OFFERID</primaryKey>
+      <isUIDTable v="true" />
+    </linkInformation>
+  </linkInformation>
+</entity>
diff --git a/entity/Offer_entity/entityfields/currency/possibleItemsProcess.js b/entity/Offer_entity/entityfields/currency/possibleItemsProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9720030d0928dab40dc10c2f915247352dfd9903
--- /dev/null
+++ b/entity/Offer_entity/entityfields/currency/possibleItemsProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Keyword_lib");
+
+var kwdUtils, items;
+
+kwdUtils = new KeywordUtils();
+items = kwdUtils.getStandardArray("CURRENCY");
+result.object(items);
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/date_edit/valueProcess.js b/entity/Offer_entity/entityfields/date_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..00e95d744eab3b281e0f6ae5ee325cee91419534
--- /dev/null
+++ b/entity/Offer_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/Offer_entity/entityfields/date_new/valueProcess.js b/entity/Offer_entity/entityfields/date_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7ace62531432fbfb08b15fc33e25d271dc34bd6a
--- /dev/null
+++ b/entity/Offer_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/Offer_entity/entityfields/image/valueProcess.js b/entity/Offer_entity/entityfields/image/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f0d0bb6a8a1229845c50e171b17e7ec651385736
--- /dev/null
+++ b/entity/Offer_entity/entityfields/image/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.vars");
+import("system.result");
+import("Keyword_lib");
+
+var KeywUtils = new KeywordUtils();
+
+result.string("TEXT:" + KeywUtils.getViewValue("OFFER.STATUS", vars.getString("$field.STATUS")) );
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/language/possibleItemsProcess.js b/entity/Offer_entity/entityfields/language/possibleItemsProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..26992f2c6cfc67f4cbfae11030af30b34b7c553d
--- /dev/null
+++ b/entity/Offer_entity/entityfields/language/possibleItemsProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Keyword_lib");
+
+var kwdUtils, items;
+
+kwdUtils = new KeywordUtils();
+items = kwdUtils.getStandardArray("LANGUAGE");
+result.object(items);
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/offercode/onValidation.js b/entity/Offer_entity/entityfields/offercode/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..7dc708a6c7f89ce9c3ee25c515090e14bcdc4242
--- /dev/null
+++ b/entity/Offer_entity/entityfields/offercode/onValidation.js
@@ -0,0 +1,11 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+import("Offer_lib");
+
+var OfferUtils = new OfferUtils();
+
+if( !OfferUtils.validateOfferNumber(vars.get("$local.value")) )
+{
+    result.string(OfferUtils.getOfferNumberValidationFailString());
+}
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/offercode/valueProcess.js b/entity/Offer_entity/entityfields/offercode/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..05581ec804c4ae88d831274152f6242f692357e3
--- /dev/null
+++ b/entity/Offer_entity/entityfields/offercode/valueProcess.js
@@ -0,0 +1,11 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+import("Offer_lib");
+
+if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
+{
+    var OfferUtils = new OfferUtils();
+    
+    result.string( OfferUtils.getNextOfferNumber() );
+}
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/offerdate/valueProcess.js b/entity/Offer_entity/entityfields/offerdate/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..af2c1f09cc605dfe6664dd0c9829026fc6785993
--- /dev/null
+++ b/entity/Offer_entity/entityfields/offerdate/valueProcess.js
@@ -0,0 +1,12 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+import("Date_lib");
+
+if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == "")
+{
+    var DateUtils = new DateUtils();
+    result.string(DateUtils.getTodayUTC());
+}
+else
+    result.string(vars.get("$this.value"));
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/offerid/valueProcess.js b/entity/Offer_entity/entityfields/offerid/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..5be18c39832eee52e38b7147961d7db4bab5a588
--- /dev/null
+++ b/entity/Offer_entity/entityfields/offerid/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.util");
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
+    result.string(util.getNewUUID());
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/probability/possibleItemsProcess.js b/entity/Offer_entity/entityfields/probability/possibleItemsProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..21b13505b4df01227f958d618137e2f2f36030bd
--- /dev/null
+++ b/entity/Offer_entity/entityfields/probability/possibleItemsProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Keyword_lib");
+
+var kwdUtils, items;
+
+kwdUtils = new KeywordUtils();
+items = kwdUtils.getStandardArray("OFFER.PROBABILITY");
+result.object(items);
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/status/possibleItemsProcess.js b/entity/Offer_entity/entityfields/status/possibleItemsProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..5eab809f3ab08cb692f1b3602a2861f1f57edd30
--- /dev/null
+++ b/entity/Offer_entity/entityfields/status/possibleItemsProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Keyword_lib");
+
+var kwdUtils, items;
+
+kwdUtils = new KeywordUtils();
+items = kwdUtils.getStandardArray("OFFER.STATUS");
+result.object(items);
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/user_edit/valueProcess.js b/entity/Offer_entity/entityfields/user_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..67c86b14ca987054658978c88cecf6bd03fa44af
--- /dev/null
+++ b/entity/Offer_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/Offer_entity/entityfields/user_new/valueProcess.js b/entity/Offer_entity/entityfields/user_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..81966a3fbcd9b3cf25a186c93baa1928abc9d6d2
--- /dev/null
+++ b/entity/Offer_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/Org_entity/Org_entity.aod b/entity/Org_entity/Org_entity.aod
index a25d34b1f522f29e604a9a3332c58ac4c048e212..4807ae7a89ab1c194c3a78b40d896af4f3b64b96 100644
--- a/entity/Org_entity/Org_entity.aod
+++ b/entity/Org_entity/Org_entity.aod
@@ -112,7 +112,9 @@
       <tableName>RELATION</tableName>
       <columnName>STATUS</columnName>
       <caption>Status</caption>
+      <contentType>TEXT</contentType>
       <possibleItemsProcess>%aditoprj%/entity/Org_entity/entityfields/status/possibleItemsProcess.js</possibleItemsProcess>
+      <searchable v="false" />
     </entityField>
     <entityField>
       <name>REL_USER_EDIT</name>
@@ -133,6 +135,7 @@
       <columnName>TYPE</columnName>
       <caption>Type</caption>
       <possibleItemsProcess>%aditoprj%/entity/Org_entity/entityfields/type/possibleItemsProcess.js</possibleItemsProcess>
+      <searchable v="false" />
     </entityField>
     <entityOutgoingField>
       <name>OrgHistory_dfo</name>
@@ -202,6 +205,12 @@
           <fieldName>ProductOrg_dfo</fieldName>
           <isOutgoing v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>a6e1d9a2-9079-4415-b56f-865df5170d5e</name>
+          <entityName>Salesproject_entity</entityName>
+          <fieldName>SalesprojectOrg_dfo</fieldName>
+          <isOutgoing v="false" />
+        </entityDependency>
       </dependencies>
     </entityIncomingField>
     <entityOutgoingField>
@@ -240,7 +249,7 @@
       <dependency>
         <name>dependency</name>
         <entityName>Comm_entity</entityName>
-        <fieldName>OrgComm_dfi</fieldName>
+        <fieldName>#INCOMING</fieldName>
       </dependency>
       <children>
         <entityParameter>
@@ -298,6 +307,9 @@
         </entityParameter>
       </children>
     </entityOutgoingField>
+    <entityIncomingField>
+      <name>#INCOMING</name>
+    </entityIncomingField>
   </entityFields>
   <linkInformation>
     <linkInformation>
diff --git a/entity/Pers_entity/Pers_entity.aod b/entity/Pers_entity/Pers_entity.aod
index 6d8444aca4919c4a640f9d29c87a6e64fe5851dd..76e44c8617ee98456fd3d45a15c8cb972b1d94e7 100644
--- a/entity/Pers_entity/Pers_entity.aod
+++ b/entity/Pers_entity/Pers_entity.aod
@@ -3,14 +3,14 @@
   <name>Pers_entity</name>
   <title>Contact</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <alias>Data_alias</alias>
-  <fromClauseProcess>%aditoprj%/entity/Pers_entity/fromClauseProcess.js</fromClauseProcess>
-  <conditionProcess>%aditoprj%/entity/Pers_entity/conditionProcess.js</conditionProcess>
   <recordContainerType>DB</recordContainerType>
   <caption>Contact</caption>
   <captionProcess>%aditoprj%/entity/Pers_entity/captionProcess.js</captionProcess>
   <iconId>VAADIN:USERS</iconId>
   <imageProcess>%aditoprj%/entity/Pers_entity/imageProcess.js</imageProcess>
+  <alias>Data_alias</alias>
+  <fromClauseProcess>%aditoprj%/entity/Pers_entity/fromClauseProcess.js</fromClauseProcess>
+  <conditionProcess>%aditoprj%/entity/Pers_entity/conditionProcess.js</conditionProcess>
   <entityFields>
     <entityField>
       <name>DATEOFBIRTH</name>
@@ -227,7 +227,7 @@
       <dependency>
         <name>dependency</name>
         <entityName>Comm_entity</entityName>
-        <fieldName>PersComm_dfi</fieldName>
+        <fieldName>#INCOMING</fieldName>
       </dependency>
       <children>
         <entityParameter>
@@ -292,7 +292,7 @@
       <dependency>
         <name>dependency</name>
         <entityName>Comm_entity</entityName>
-        <fieldName>PersComm_dfi</fieldName>
+        <fieldName>#INCOMING</fieldName>
       </dependency>
       <children>
         <entityParameter>
@@ -312,7 +312,7 @@
       <dependency>
         <name>dependency</name>
         <entityName>Comm_entity</entityName>
-        <fieldName>PersComm_dfi</fieldName>
+        <fieldName>#INCOMING</fieldName>
       </dependency>
       <children>
         <entityParameter>
@@ -332,7 +332,7 @@
       <dependency>
         <name>dependency</name>
         <entityName>Comm_entity</entityName>
-        <fieldName>PersComm_dfi</fieldName>
+        <fieldName>#INCOMING</fieldName>
       </dependency>
       <children>
         <entityParameter>
@@ -389,6 +389,9 @@
         <fieldName>Gender_dfi</fieldName>
       </dependency>
     </entityOutgoingField>
+    <entityIncomingField>
+      <name>#INCOMING</name>
+    </entityIncomingField>
   </entityFields>
   <linkInformation>
     <linkInformation>
diff --git a/entity/Pers_entity/entityfields/orgname/onValueChange.js b/entity/Pers_entity/entityfields/orgname/onValueChange.js
index fce9fb549efd4d46f4b6a0626a31665f943ac66c..5829235884fae6d8311f1e95876d9fa0f539da6f 100644
--- a/entity/Pers_entity/entityfields/orgname/onValueChange.js
+++ b/entity/Pers_entity/entityfields/orgname/onValueChange.js
@@ -9,7 +9,7 @@ logging.log("value change -> " + org_id);
 
 if(org_id != '')
 {
-    neon.setFieldValue("$field.ORG_ID", org_id);            
+    vars.set("$field.ORG_ID", org_id);            
 
     var org_name = db.cell("select NAME from ORG where ORGID = '" + org_id + "'");
     vars.set("$image.lookup_orgname", org_name);
diff --git a/entity/Product_entity/Product_entity.aod b/entity/Product_entity/Product_entity.aod
index aa87c91ce0b841ec76f18e4affe47fd9a319f042..02d326e17c0fcd179f2cdcd9f38317894c43f969 100644
--- a/entity/Product_entity/Product_entity.aod
+++ b/entity/Product_entity/Product_entity.aod
@@ -3,9 +3,10 @@
   <name>Product_entity</name>
   <title>Product</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <alias>Data_alias</alias>
   <recordContainerType>DB</recordContainerType>
   <caption>Product</caption>
+  <iconId>VAADIN:HAMMER</iconId>
+  <alias>Data_alias</alias>
   <entityFields>
     <entityField>
       <name>ADVERTISING</name>
@@ -59,7 +60,7 @@
       <name>PRODUCTCODE</name>
       <tableName>PRODUCT</tableName>
       <columnName>PRODUCTCODE</columnName>
-      <caption>Product no.</caption>
+      <caption>Product number</caption>
       <mandatory v="true" />
       <onValidation>%aditoprj%/entity/Product_entity/entityfields/productcode/onValidation.js</onValidation>
     </entityField>
@@ -131,10 +132,6 @@
         </entityDependency>
       </dependencies>
     </entityIncomingField>
-    <entityField>
-      <name>STOCKCOUNT</name>
-      <caption>Stock</caption>
-    </entityField>
     <entityParameter>
       <name>OrgId_param</name>
       <expose v="true" />
@@ -142,14 +139,6 @@
       <mandatory v="false" />
       <description>PARAMETER</description>
     </entityParameter>
-    <entityField>
-      <name>currentPurchasePrice</name>
-      <caption>Curr. purchase price</caption>
-    </entityField>
-    <entityField>
-      <name>currentSalesPrice</name>
-      <caption>Curr. sales price</caption>
-    </entityField>
     <entityOutgoingField>
       <name>ProductProductprice_dfo</name>
       <title>Price list</title>
@@ -184,6 +173,7 @@
       <title>Stock</title>
       <fieldType>DEPENDENCY_OUT</fieldType>
       <caption>Stock</caption>
+      <selectionMode>SINGLE</selectionMode>
       <dependency>
         <name>dependency</name>
         <entityName>Stock_entity</entityName>
@@ -196,6 +186,47 @@
         </entityParameter>
       </children>
     </entityOutgoingField>
+    <entityField>
+      <name>IMAGE</name>
+      <contentType>IMAGE</contentType>
+      <valueProcess>%aditoprj%/entity/Product_entity/entityfields/image/valueProcess.js</valueProcess>
+    </entityField>
+    <entityOutgoingField>
+      <name>ProductStockCount_dfo</name>
+      <title>Stock</title>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <caption>Stock</caption>
+      <state>READONLY</state>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Stock_entity</entityName>
+        <fieldName>ProductStock_dfi</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ProductId_param</name>
+          <code>%aditoprj%/entity/Product_entity/entityfields/productstockcount_dfo/children/productid_param/code.js</code>
+        </entityParameter>
+      </children>
+    </entityOutgoingField>
+    <entityOutgoingField>
+      <name>ProductProductpriceCurr_dfo</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Productprice_entity</entityName>
+        <fieldName>ProductProductprice_dfi</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ProductId_param</name>
+          <code>%aditoprj%/entity/Product_entity/entityfields/productproductpricecurr_dfo/children/productid_param/code.js</code>
+        </entityParameter>
+      </children>
+    </entityOutgoingField>
+    <entityIncomingField>
+      <name>#INCOMING</name>
+    </entityIncomingField>
   </entityFields>
   <linkInformation>
     <linkInformation>
diff --git a/entity/Product_entity/entityfields/date_new/valueProcess.js b/entity/Product_entity/entityfields/date_new/valueProcess.js
index eedddb3cf02507bf4da985cf9db27f79c8468b55..abfd322661115639b35d528163d98e4112b15eaa 100644
--- a/entity/Product_entity/entityfields/date_new/valueProcess.js
+++ b/entity/Product_entity/entityfields/date_new/valueProcess.js
@@ -1,4 +1,3 @@
-import("system.logging");
 import("system.vars");
 import("system.result");
 import("system.neon");
diff --git a/entity/Product_entity/entityfields/image/valueProcess.js b/entity/Product_entity/entityfields/image/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a47886f94ef46ca919ba00ce306f3d5fe9d96ec9
--- /dev/null
+++ b/entity/Product_entity/entityfields/image/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.vars");
+import("system.result");
+import("Keyword_lib");
+
+var KeywUtils = new KeywordUtils();
+
+result.string("TEXT:" + KeywUtils.getViewValue("GROUPCODE", vars.getString("$field.GROUPCODEID")) );
\ No newline at end of file
diff --git a/entity/Product_entity/entityfields/productproductpricecurr_dfo/children/productid_param/code.js b/entity/Product_entity/entityfields/productproductpricecurr_dfo/children/productid_param/code.js
new file mode 100644
index 0000000000000000000000000000000000000000..24f19f37786781bff6661183f3fcd8ae8d1efb45
--- /dev/null
+++ b/entity/Product_entity/entityfields/productproductpricecurr_dfo/children/productid_param/code.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.PRODUCTID"));
\ No newline at end of file
diff --git a/entity/Product_entity/entityfields/productstockcount_dfo/children/productid_param/code.js b/entity/Product_entity/entityfields/productstockcount_dfo/children/productid_param/code.js
new file mode 100644
index 0000000000000000000000000000000000000000..24f19f37786781bff6661183f3fcd8ae8d1efb45
--- /dev/null
+++ b/entity/Product_entity/entityfields/productstockcount_dfo/children/productid_param/code.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.PRODUCTID"));
\ No newline at end of file
diff --git a/entity/Productprice_entity/Productprice_entity.aod b/entity/Productprice_entity/Productprice_entity.aod
index 1358998db1fe92d2b2a2ba7af6fad48ca199b56d..0ab83ab71f67b32c62d0a0994004dc3b1f75b7cc 100644
--- a/entity/Productprice_entity/Productprice_entity.aod
+++ b/entity/Productprice_entity/Productprice_entity.aod
@@ -4,6 +4,7 @@
   <title>Price list</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <alias>Data_alias</alias>
+  <conditionProcess>%aditoprj%/entity/Productprice_entity/conditionProcess.js</conditionProcess>
   <recordContainerType>DB</recordContainerType>
   <caption>Price list</caption>
   <entityFields>
@@ -45,15 +46,16 @@
       <tableName>PRODUCTPRICE</tableName>
       <columnName>FROMQUANTITY</columnName>
       <caption>From no. of units</caption>
-      <contentType>NUMBER</contentType>
+      <contentType>TEXT</contentType>
       <outputFormat>#,##0</outputFormat>
+      <state>AUTO</state>
     </entityField>
     <entityField>
       <name>PRICE</name>
       <tableName>PRODUCTPRICE</tableName>
       <columnName>PRICE</columnName>
       <caption>Price</caption>
-      <contentType>NUMBER</contentType>
+      <contentType>TEXT</contentType>
       <outputFormat>#,##0.00</outputFormat>
       <mandatory v="true" />
     </entityField>
@@ -69,9 +71,10 @@
       <columnName>PRODUCT_ID</columnName>
       <caption>Product name</caption>
       <linkedContext>Product_context</linkedContext>
-      <mandatory v="true" />
+      <mandatory v="false" />
       <outgoingField>ProductpriceProduct_dfo</outgoingField>
       <possibleItemsProcess>%aditoprj%/entity/Productprice_entity/entityfields/product_id/possibleItemsProcess.js</possibleItemsProcess>
+      <state>AUTO</state>
       <valueProcess>%aditoprj%/entity/Productprice_entity/entityfields/product_id/valueProcess.js</valueProcess>
       <fieldIdProcess>%aditoprj%/entity/Productprice_entity/entityfields/product_id/fieldIdProcess.js</fieldIdProcess>
     </entityField>
@@ -80,6 +83,7 @@
       <tableName>PRODUCTPRICE</tableName>
       <columnName>RELATION_ID</columnName>
       <caption>Company</caption>
+      <valueProcess>%aditoprj%/entity/Productprice_entity/entityfields/relation_id/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>USER_EDIT</name>
@@ -117,7 +121,7 @@
       <tableName>PRODUCTPRICE</tableName>
       <columnName>VAT</columnName>
       <caption>VAT</caption>
-      <contentType>NUMBER</contentType>
+      <contentType>TEXT</contentType>
       <outputFormat>#,##0.00</outputFormat>
       <mandatory v="true" />
     </entityField>
@@ -139,6 +143,12 @@
           <fieldName>ProductProductprice_dfo</fieldName>
           <isOutgoing v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>5a15f01e-07eb-49e4-85c7-9ec643d65627</name>
+          <entityName>Product_entity</entityName>
+          <fieldName>ProductProductpriceCurr_dfo</fieldName>
+          <isOutgoing v="false" />
+        </entityDependency>
       </dependencies>
     </entityIncomingField>
     <entityParameter>
@@ -153,6 +163,7 @@
       <caption>Price list / Company</caption>
       <possibleItemsProcess>%aditoprj%/entity/Productprice_entity/entityfields/pricelist_relation/possibleItemsProcess.js</possibleItemsProcess>
       <valueProcess>%aditoprj%/entity/Productprice_entity/entityfields/pricelist_relation/valueProcess.js</valueProcess>
+      <onValidation>%aditoprj%/entity/Productprice_entity/entityfields/pricelist_relation/onValidation.js</onValidation>
       <onValueChange>%aditoprj%/entity/Productprice_entity/entityfields/pricelist_relation/onValueChange.js</onValueChange>
     </entityField>
     <entityField>
@@ -206,6 +217,28 @@
         <fieldName>Product_dfi</fieldName>
       </dependency>
     </entityOutgoingField>
+    <entityField>
+      <name>IMAGE</name>
+      <contentType>IMAGE</contentType>
+      <valueProcess>%aditoprj%/entity/Productprice_entity/entityfields/image/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>currentPurchasePrice</name>
+      <caption>Curr. sales price</caption>
+      <contentType>NUMBER</contentType>
+      <outputFormat>#,##0.00 €</outputFormat>
+      <valueProcess>%aditoprj%/entity/Productprice_entity/entityfields/currentpurchaseprice/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>currentSalesPrice</name>
+      <caption>Curr. sales price</caption>
+      <contentType>NUMBER</contentType>
+      <outputFormat>#,##0.00 €</outputFormat>
+      <valueProcess>%aditoprj%/entity/Productprice_entity/entityfields/currentsalesprice/valueProcess.js</valueProcess>
+    </entityField>
+    <entityIncomingField>
+      <name>#INCOMING</name>
+    </entityIncomingField>
   </entityFields>
   <linkInformation>
     <linkInformation>
diff --git a/entity/Productprice_entity/conditionProcess.js b/entity/Productprice_entity/conditionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c09f20de054b7d605cd8eebe42b056124cb76a9b
--- /dev/null
+++ b/entity/Productprice_entity/conditionProcess.js
@@ -0,0 +1,10 @@
+import("system.logging");
+import("system.result");
+import("system.vars");
+
+if(vars.exists("$param.ProductId_param") && vars.get("$param.ProductId_param") != "")
+    result.string("PRODUCTPRICE.PRODUCT_ID = ('" + vars.get("$param.ProductId_param") + "')");  
+else if(vars.exists("$param.RelID_param") && vars.get("$param.RelID_param") != "")
+    result.string("PRODUCTPRICE.RELATION_ID = ('" + vars.get("$param.RelID_param") + "')");  
+else
+    result.string("1 = 2");
\ No newline at end of file
diff --git a/entity/Productprice_entity/entityfields/buysell/mandatoryProcess.js b/entity/Productprice_entity/entityfields/buysell/mandatoryProcess.js
index bc886dd36565a2844d6801b8843fa78e7e6e0cf1..7808bc1144567b08f53c71a2934533fbb28bd695 100644
--- a/entity/Productprice_entity/entityfields/buysell/mandatoryProcess.js
+++ b/entity/Productprice_entity/entityfields/buysell/mandatoryProcess.js
@@ -2,8 +2,6 @@ import("system.logging");
 import("system.vars");
 import("system.result");
 
-logging.log("#####ProductId_param:" + vars.get("$param.ProductId_param"));
-
 if(vars.exists("$param.ProductId_param") && vars.get("$param.ProductId_param") != "")
 {
     result.string("true");
diff --git a/entity/Productprice_entity/entityfields/currentpurchaseprice/valueProcess.js b/entity/Productprice_entity/entityfields/currentpurchaseprice/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..352a05d657d2c683e87af40ff54635c11cf97a38
--- /dev/null
+++ b/entity/Productprice_entity/entityfields/currentpurchaseprice/valueProcess.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("system.vars");
+import("Product_lib");
+
+if(vars.exists("$param.ProductId_param") && vars.get("$param.ProductId_param") != "")
+{
+    var ProductUtils = new ProductUtils();
+
+    result.string( ProductUtils.getCurrentProductPrice(vars.get("$param.ProductId_param"), "PP") );
+}
\ No newline at end of file
diff --git a/entity/Productprice_entity/entityfields/currentsalesprice/valueProcess.js b/entity/Productprice_entity/entityfields/currentsalesprice/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..efdb4d2a649edc93f3de5c27f3aaa6c476443232
--- /dev/null
+++ b/entity/Productprice_entity/entityfields/currentsalesprice/valueProcess.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("system.vars");
+import("Product_lib");
+
+if(vars.exists("$param.ProductId_param") && vars.get("$param.ProductId_param") != "")
+{
+    var ProductUtils = new ProductUtils();
+
+    result.string( ProductUtils.getCurrentProductPrice(vars.get("$param.ProductId_param"), "SP") );
+}
\ No newline at end of file
diff --git a/entity/Productprice_entity/entityfields/image/valueProcess.js b/entity/Productprice_entity/entityfields/image/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..1a61d32b892076cb93d6b4a4faeec1cf026a9ea8
--- /dev/null
+++ b/entity/Productprice_entity/entityfields/image/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+import("Keyword_lib");
+
+result.string("TEXT:" + vars.get("$field.BUYSELL") );
\ No newline at end of file
diff --git a/entity/Productprice_entity/entityfields/pricelist_relation/onValidation.js b/entity/Productprice_entity/entityfields/pricelist_relation/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/entity/Productprice_entity/entityfields/pricelist_relation/onValueChange.js b/entity/Productprice_entity/entityfields/pricelist_relation/onValueChange.js
index d8c3dba368e8d5d48a48b464b716b452b29459ab..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- a/entity/Productprice_entity/entityfields/pricelist_relation/onValueChange.js
+++ b/entity/Productprice_entity/entityfields/pricelist_relation/onValueChange.js
@@ -1,4 +0,0 @@
-//import("system.neon");
-//import("system.vars");
-//
-//neon.setFieldValue("$field.PRICELIST", vars.get("$local.value"));
\ No newline at end of file
diff --git a/entity/Productprice_entity/entityfields/pricelist_relation/valueProcess.js b/entity/Productprice_entity/entityfields/pricelist_relation/valueProcess.js
index 395f1ad980fd3e807df2cf9b6aeb3080d45b5820..3f9089e29c49884f47876b8d9a789ac01df256f0 100644
--- a/entity/Productprice_entity/entityfields/pricelist_relation/valueProcess.js
+++ b/entity/Productprice_entity/entityfields/pricelist_relation/valueProcess.js
@@ -6,7 +6,7 @@ var kewUtils = new KeywordUtils();
 
 var rel = vars.get("$field.RELATION_ID");
 
-if(rel != null)
+if(rel != "")
 {
     result.string("Firma");//TODO: Org/pers Name
 }
diff --git a/entity/Productprice_entity/entityfields/relation_id/valueProcess.js b/entity/Productprice_entity/entityfields/relation_id/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..54901ac82befef8000f73792d140b349d01fbbb0
--- /dev/null
+++ b/entity/Productprice_entity/entityfields/relation_id/valueProcess.js
@@ -0,0 +1,10 @@
+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") != "")
+        result.string(vars.get("$param.RelID_param"));    
+}
+
diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..2398361961635ff3eb850c159d96d34527f31ea7
--- /dev/null
+++ b/entity/Salesproject_entity/Salesproject_entity.aod
@@ -0,0 +1,147 @@
+<?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>Salesproject_entity</name>
+  <title>Salesproject</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <alias>Data_alias</alias>
+  <recordContainerType>DB</recordContainerType>
+  <caption>Salesproject</caption>
+  <iconId>VAADIN:FILTER</iconId>
+  <entityFields>
+    <entityIncomingField>
+      <name>#INCOMING</name>
+    </entityIncomingField>
+    <entityField>
+      <name>DATE_EDIT</name>
+      <tableName>SALESPROJECT</tableName>
+      <columnName>DATE_EDIT</columnName>
+      <contentType>DATE</contentType>
+      <outputFormat>yyyy-MM-dd&amp;apos;T&amp;apos;HH:mm:ssZ</outputFormat>
+      <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/date_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_NEW</name>
+      <tableName>SALESPROJECT</tableName>
+      <columnName>DATE_NEW</columnName>
+      <contentType>DATE</contentType>
+      <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/date_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>ENDDATE</name>
+      <tableName>SALESPROJECT</tableName>
+      <columnName>ENDDATE</columnName>
+      <caption>Rollout</caption>
+      <contentType>DATE</contentType>
+      <resolution>DAY</resolution>
+      <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/enddate/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>ESTIMATION</name>
+      <tableName>SALESPROJECT</tableName>
+      <columnName>ESTIMATION</columnName>
+      <caption>Estimation</caption>
+    </entityField>
+    <entityField>
+      <name>ESTIMATIONVALUE</name>
+      <tableName>SALESPROJECT</tableName>
+      <columnName>ESTIMATIONVALUE</columnName>
+    </entityField>
+    <entityField>
+      <name>INFO</name>
+      <tableName>SALESPROJECT</tableName>
+      <columnName>INFO</columnName>
+      <caption>Information</caption>
+    </entityField>
+    <entityField>
+      <name>PHASE</name>
+      <tableName>SALESPROJECT</tableName>
+      <columnName>PHASE</columnName>
+      <caption>Phase</caption>
+      <mandatory v="true" />
+      <possibleItemsProcess>%aditoprj%/entity/Salesproject_entity/entityfields/phase/possibleItemsProcess.js</possibleItemsProcess>
+    </entityField>
+    <entityField>
+      <name>PROJECTCODE</name>
+      <tableName>SALESPROJECT</tableName>
+      <columnName>PROJECTCODE</columnName>
+      <caption>Project number</caption>
+      <state>READONLY</state>
+      <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/projectcode/valueProcess.js</valueProcess>
+      <onValidation>%aditoprj%/entity/Salesproject_entity/entityfields/projectcode/onValidation.js</onValidation>
+      <onValueChange>%aditoprj%/entity/Salesproject_entity/entityfields/projectcode/onValueChange.js</onValueChange>
+    </entityField>
+    <entityField>
+      <name>PROJECTTITLE</name>
+      <tableName>SALESPROJECT</tableName>
+      <columnName>PROJECTTITLE</columnName>
+      <caption>Project title</caption>
+      <mandatory v="true" />
+    </entityField>
+    <entityField>
+      <name>RELATION_ID</name>
+      <tableName>SALESPROJECT</tableName>
+      <columnName>RELATION_ID</columnName>
+      <caption>Company</caption>
+      <mandatory v="true" />
+    </entityField>
+    <entityField>
+      <name>SALESPROJECTID</name>
+      <tableName>SALESPROJECT</tableName>
+      <columnName>SALESPROJECTID</columnName>
+      <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectid/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>STARTDATE</name>
+      <tableName>SALESPROJECT</tableName>
+      <columnName>STARTDATE</columnName>
+      <caption>Project start</caption>
+      <contentType>DATE</contentType>
+      <resolution>DAY</resolution>
+      <mandatory v="true" />
+      <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/startdate/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>STATUS</name>
+      <tableName>SALESPROJECT</tableName>
+      <columnName>STATUS</columnName>
+      <caption>Status</caption>
+      <mandatory v="true" />
+      <possibleItemsProcess>%aditoprj%/entity/Salesproject_entity/entityfields/status/possibleItemsProcess.js</possibleItemsProcess>
+    </entityField>
+    <entityField>
+      <name>USER_EDIT</name>
+      <tableName>SALESPROJECT</tableName>
+      <columnName>USER_EDIT</columnName>
+      <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/user_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_NEW</name>
+      <tableName>SALESPROJECT</tableName>
+      <columnName>USER_NEW</columnName>
+      <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/user_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>VOLUME</name>
+      <tableName>SALESPROJECT</tableName>
+      <columnName>VOLUME</columnName>
+      <caption>Volume</caption>
+    </entityField>
+    <entityOutgoingField>
+      <name>SalesprojectOrg_dfo</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Org_entity</entityName>
+        <fieldName>Org_dfi</fieldName>
+      </dependency>
+    </entityOutgoingField>
+  </entityFields>
+  <linkInformation>
+    <linkInformation>
+      <name>a343a42f-d810-492e-a93f-3ffcab9a88bd</name>
+      <tableName>SALESPROJECT</tableName>
+      <primaryKey>SALESPROJECTID</primaryKey>
+      <isUIDTable v="true" />
+    </linkInformation>
+  </linkInformation>
+</entity>
diff --git a/entity/Salesproject_entity/entityfields/date_edit/valueProcess.js b/entity/Salesproject_entity/entityfields/date_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..00e95d744eab3b281e0f6ae5ee325cee91419534
--- /dev/null
+++ b/entity/Salesproject_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/Salesproject_entity/entityfields/date_new/valueProcess.js b/entity/Salesproject_entity/entityfields/date_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7ace62531432fbfb08b15fc33e25d271dc34bd6a
--- /dev/null
+++ b/entity/Salesproject_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/Salesproject_entity/entityfields/enddate/valueProcess.js b/entity/Salesproject_entity/entityfields/enddate/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b27871853b658ad34b7de4e3e674d0a627c1617b
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/enddate/valueProcess.js
@@ -0,0 +1,12 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+import("Date_lib");
+
+if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == "")
+{
+    var DateUtils = new DateUtils();
+    result.string(DateUtils.getDateIncrementedByYears(DateUtils.getTodayUTC(), 1));
+}
+else
+    result.string(vars.get("$this.value"));
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/phase/possibleItemsProcess.js b/entity/Salesproject_entity/entityfields/phase/possibleItemsProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9d12c334f8a0626defebf0eeb2c31f6602a56477
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/phase/possibleItemsProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Keyword_lib");
+
+var kwdUtils, items;
+
+kwdUtils = new KeywordUtils();
+items = kwdUtils.getStandardArray("SALESPROJECT.PHASE");
+result.object(items);
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/projectcode/onValidation.js b/entity/Salesproject_entity/entityfields/projectcode/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..75b9fcc84cc451463b73ba313b7d9b08c154fc24
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/projectcode/onValidation.js
@@ -0,0 +1,11 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+import("Salesproject_lib");
+
+var SalesprojectUtils = new SalesprojectUtils();
+
+if( !SalesprojectUtils.validateProjectNumber(vars.get("$local.value")) )
+{
+    result.string(SalesprojectUtils.getProjectNumberValidationFailString());
+}
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/projectcode/onValueChange.js b/entity/Salesproject_entity/entityfields/projectcode/onValueChange.js
new file mode 100644
index 0000000000000000000000000000000000000000..937237a494b75ed2ccdf11605a94a9d9abcf4418
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/projectcode/onValueChange.js
@@ -0,0 +1,9 @@
+import("system.vars");
+import("system.result");
+import("Salesproject_lib");
+
+var SalesprojectUtils = new SalesprojectUtils();
+if( !SalesprojectUtils.validateProjectNumber(vars.get("$local.value")) )
+{
+    vars.set("$field.PROJECTCODE", SalesprojectUtils.getNextProjectNumber());
+}
diff --git a/entity/Salesproject_entity/entityfields/projectcode/valueProcess.js b/entity/Salesproject_entity/entityfields/projectcode/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..ae603c5b65c7d5a626ec4896db39c8e1fecfdeb8
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/projectcode/valueProcess.js
@@ -0,0 +1,11 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+import("Salesproject_lib");
+
+if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
+{
+    var SalesprojectUtils = new SalesprojectUtils();
+    
+    result.string( SalesprojectUtils.getNextProjectNumber() );
+}
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/salesprojectid/valueProcess.js b/entity/Salesproject_entity/entityfields/salesprojectid/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..5be18c39832eee52e38b7147961d7db4bab5a588
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/salesprojectid/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.util");
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
+    result.string(util.getNewUUID());
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/startdate/valueProcess.js b/entity/Salesproject_entity/entityfields/startdate/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..af2c1f09cc605dfe6664dd0c9829026fc6785993
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/startdate/valueProcess.js
@@ -0,0 +1,12 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+import("Date_lib");
+
+if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == "")
+{
+    var DateUtils = new DateUtils();
+    result.string(DateUtils.getTodayUTC());
+}
+else
+    result.string(vars.get("$this.value"));
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/status/possibleItemsProcess.js b/entity/Salesproject_entity/entityfields/status/possibleItemsProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b6e8809f0d24c7f2ce8732b420a058e8c5229e5a
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/status/possibleItemsProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Keyword_lib");
+
+var kwdUtils, items;
+
+kwdUtils = new KeywordUtils();
+items = kwdUtils.getStandardArray("SALESPROJECT.STATUS");
+result.object(items);
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/user_edit/valueProcess.js b/entity/Salesproject_entity/entityfields/user_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..67c86b14ca987054658978c88cecf6bd03fa44af
--- /dev/null
+++ b/entity/Salesproject_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/Salesproject_entity/entityfields/user_new/valueProcess.js b/entity/Salesproject_entity/entityfields/user_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..81966a3fbcd9b3cf25a186c93baa1928abc9d6d2
--- /dev/null
+++ b/entity/Salesproject_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/Social_entity/Social_entity.aod b/entity/Social_entity/Social_entity.aod
index ccdd6b21697e049fb4c55bab0e456b9dab97d9b4..787822ab61170dafd42eb8cb733ed51144a495d4 100644
--- a/entity/Social_entity/Social_entity.aod
+++ b/entity/Social_entity/Social_entity.aod
@@ -3,14 +3,14 @@
   <name>Social_entity</name>
   <title>Social</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <recordContainerType>NONE</recordContainerType>
+  <caption>Social Media</caption>
   <indexGroup></indexGroup>
   <patternExtensionProcess></patternExtensionProcess>
   <fields>
     <element>UID</element>
   </fields>
   <contentProcess>%aditoprj%/entity/Social_entity/contentProcess.js</contentProcess>
-  <recordContainerType>NONE</recordContainerType>
-  <caption>Social Media</caption>
   <entityFields>
     <entityField>
       <name>TWITTER_TIMELINE</name>
@@ -35,7 +35,10 @@
       <name>Account_param</name>
       <title>Benutzer</title>
       <expose v="true" />
-      <description>PARAMETER</description>
+      <description>Benutzer</description>
     </entityParameter>
+    <entityIncomingField>
+      <name>#INCOMING</name>
+    </entityIncomingField>
   </entityFields>
 </entity>
diff --git a/entity/Stock_entity/Stock_entity.aod b/entity/Stock_entity/Stock_entity.aod
index 695e012d5449a2af9b25969fc5ca7b4f0be9b671..72a126bb04dd0ff96c22a297fea745d32c5cae08 100644
--- a/entity/Stock_entity/Stock_entity.aod
+++ b/entity/Stock_entity/Stock_entity.aod
@@ -1,10 +1,12 @@
 <?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>Stock_entity</name>
+  <title>Stock</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <alias>Data_alias</alias>
   <conditionProcess>%aditoprj%/entity/Stock_entity/conditionProcess.js</conditionProcess>
   <recordContainerType>DB</recordContainerType>
+  <caption>Stock</caption>
   <entityFields>
     <entityField>
       <name>DATE_EDIT</name>
@@ -29,6 +31,7 @@
       <caption>Date</caption>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
+      <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/Stock_entity/entityfields/entrydate/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
@@ -37,6 +40,7 @@
       <columnName>IN_OUT</columnName>
       <caption>I / O</caption>
       <contentType>TEXT</contentType>
+      <mandatory v="true" />
       <possibleItemsProcess>%aditoprj%/entity/Stock_entity/entityfields/in_out/possibleItemsProcess.js</possibleItemsProcess>
     </entityField>
     <entityField>
@@ -49,9 +53,10 @@
       <name>QUANTITY</name>
       <tableName>STOCK</tableName>
       <columnName>QUANTITY</columnName>
-      <caption>Menge</caption>
-      <contentType>NUMBER</contentType>
-      <outputFormat></outputFormat>
+      <caption>Quantity</caption>
+      <contentType>TEXT</contentType>
+      <outputFormat>#.##0</outputFormat>
+      <mandatory v="true" />
     </entityField>
     <entityField>
       <name>REFNUMBER</name>
@@ -82,14 +87,9 @@
       <tableName>STOCK</tableName>
       <columnName>WAREHOUSE</columnName>
       <caption>Warehouse</caption>
+      <mandatory v="true" />
       <possibleItemsProcess>%aditoprj%/entity/Stock_entity/entityfields/warehouse/possibleItemsProcess.js</possibleItemsProcess>
     </entityField>
-    <entityParameter>
-      <name>ProductId_param</name>
-      <expose v="true" />
-      <triggerRecalculation v="true" />
-      <description>PARAMETER</description>
-    </entityParameter>
     <entityIncomingField>
       <name>ProductStock_dfi</name>
       <fieldType>DEPENDENCY_IN</fieldType>
@@ -100,8 +100,35 @@
           <fieldName>ProductStock_dfo</fieldName>
           <isOutgoing v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>e6168337-2f0b-4135-be16-1a4fd1c2ff65</name>
+          <entityName>Product_entity</entityName>
+          <fieldName>ProductStockCount_dfo</fieldName>
+          <isOutgoing v="false" />
+        </entityDependency>
       </dependencies>
     </entityIncomingField>
+    <entityField>
+      <name>IMAGE</name>
+      <contentType>IMAGE</contentType>
+      <valueProcess>%aditoprj%/entity/Stock_entity/entityfields/image/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>STOCKCOUNT</name>
+      <caption>Stock</caption>
+      <state>READONLY</state>
+      <valueProcess>%aditoprj%/entity/Stock_entity/entityfields/stockcount/valueProcess.js</valueProcess>
+    </entityField>
+    <entityParameter>
+      <name>ProductId_param</name>
+      <code>%aditoprj%/entity/Stock_entity/entityfields/productid_param/code.js</code>
+      <expose v="true" />
+      <triggerRecalculation v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityIncomingField>
+      <name>#INCOMING</name>
+    </entityIncomingField>
   </entityFields>
   <linkInformation>
     <linkInformation>
diff --git a/entity/Stock_entity/conditionProcess.js b/entity/Stock_entity/conditionProcess.js
index 35ef2ecc7bdabe34ed689e2db72553356afde5a4..8f62c84c72d9a943b4126f099d63198be98d4d7f 100644
--- a/entity/Stock_entity/conditionProcess.js
+++ b/entity/Stock_entity/conditionProcess.js
@@ -2,7 +2,7 @@ import("system.logging");
 import("system.result");
 import("system.vars");
 
-if(vars.exists("$param.ProductId_param") && vars.get("$param.ProductId_param") != null)
-    result.string("STOCK.PRODUCT_ID = ('" + vars.getString("$param.ProductId_param") + "')");  
+if(vars.exists("$param.ProductId_param") && vars.get("$param.ProductId_param") != "")
+    result.string("STOCK.PRODUCT_ID = ('" + vars.get("$param.ProductId_param") + "')");  
 else
     result.string("1 = 2");  
\ No newline at end of file
diff --git a/entity/Stock_entity/entityfields/image/valueProcess.js b/entity/Stock_entity/entityfields/image/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..0693b6bd4810fe8d10495205a0383559738d533a
--- /dev/null
+++ b/entity/Stock_entity/entityfields/image/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.translate");
+import("system.vars");
+import("system.result");
+import("Keyword_lib");
+
+result.string("TEXT:" + (vars.get("$field.IN_OUT") == "1" ? translate.text("IN") : translate.text("OUT") ) );
\ No newline at end of file
diff --git a/entity/Stock_entity/entityfields/product_id/valueProcess.js b/entity/Stock_entity/entityfields/product_id/valueProcess.js
index 4428a4ab94878205e5ce66644189ed3cb07b2e1b..2798b0e797a691c3707a4fa363b1e1fc58a00a71 100644
--- a/entity/Stock_entity/entityfields/product_id/valueProcess.js
+++ b/entity/Stock_entity/entityfields/product_id/valueProcess.js
@@ -6,5 +6,4 @@ if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
 {
     if(vars.exists("$param.ProductId_param") && vars.get("$param.ProductId_param") != null && vars.get("$param.ProductId_param") != "")
         result.string(vars.getString("$param.ProductId_param"));    
-}
-
+}
\ No newline at end of file
diff --git a/entity/Stock_entity/entityfields/productid_param/code.js b/entity/Stock_entity/entityfields/productid_param/code.js
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/entity/Stock_entity/entityfields/stockcount/valueProcess.js b/entity/Stock_entity/entityfields/stockcount/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..d5de29c8e34a1b58595736e30155324f168ff5b5
--- /dev/null
+++ b/entity/Stock_entity/entityfields/stockcount/valueProcess.js
@@ -0,0 +1,11 @@
+import("system.logging");
+import("system.result");
+import("system.vars");
+import("Product_lib");
+
+if(vars.exists("$param.ProductId_param") && vars.get("$param.ProductId_param") != "")
+{
+    var ProductUtils = new ProductUtils();
+
+    result.string( ProductUtils.getStockCount(vars.get("$param.ProductId_param")) );
+}
\ No newline at end of file
diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
index 85d20120736b91a257c334746d86e346629f15a5..5e43abff3ddafb88a73b99484943b6f106692fe7 100644
--- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
+++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
@@ -534,6 +534,132 @@
     <entry>
       <key>The product number already exists!</key>
     </entry>
+    <entry>
+      <key>Quantity</key>
+    </entry>
+    <entry>
+      <key>Current purchase/sales price</key>
+    </entry>
+    <entry>
+      <key>Salesproject</key>
+    </entry>
+    <entry>
+      <key>Rollout</key>
+    </entry>
+    <entry>
+      <key>Estimation</key>
+    </entry>
+    <entry>
+      <key>Phase</key>
+    </entry>
+    <entry>
+      <key>Product number</key>
+    </entry>
+    <entry>
+      <key>Project number</key>
+    </entry>
+    <entry>
+      <key>Project title</key>
+    </entry>
+    <entry>
+      <key>Project start</key>
+    </entry>
+    <entry>
+      <key>Volume</key>
+    </entry>
+    <entry>
+      <key>The project number already exists!</key>
+    </entry>
+    <entry>
+      <key>Partial order</key>
+    </entry>
+    <entry>
+      <key>Open</key>
+    </entry>
+    <entry>
+      <key>Lost</key>
+    </entry>
+    <entry>
+      <key>Order</key>
+    </entry>
+    <entry>
+      <key>Postponed</key>
+    </entry>
+    <entry>
+      <key>Aborted</key>
+    </entry>
+    <entry>
+      <key>Negotiation</key>
+    </entry>
+    <entry>
+      <key>Workshop</key>
+    </entry>
+    <entry>
+      <key>Presentation preparation</key>
+    </entry>
+    <entry>
+      <key>Waiting for request</key>
+    </entry>
+    <entry>
+      <key>Specifications in progress</key>
+    </entry>
+    <entry>
+      <key>Project decision</key>
+    </entry>
+    <entry>
+      <key>Lead</key>
+    </entry>
+    <entry>
+      <key>Presentation postprocessing</key>
+    </entry>
+    <entry>
+      <key>Statement given</key>
+    </entry>
+    <entry>
+      <key>Total net</key>
+    </entry>
+    <entry>
+      <key>Offer</key>
+    </entry>
+    <entry>
+      <key>Offer number</key>
+    </entry>
+    <entry>
+      <key>Probability</key>
+    </entry>
+    <entry>
+      <key>Total VAT</key>
+    </entry>
+    <entry>
+      <key>Person / Firma</key>
+    </entry>
+    <entry>
+      <key>The offer number already exists!</key>
+    </entry>
+    <entry>
+      <key>0 %</key>
+    </entry>
+    <entry>
+      <key>75 %</key>
+    </entry>
+    <entry>
+      <key>100 %</key>
+    </entry>
+    <entry>
+      <key>25 %</key>
+    </entry>
+    <entry>
+      <key>50 %</key>
+    </entry>
+    <entry>
+      <key>Won</key>
+    </entry>
+    <entry>
+      <key>Checked</key>
+    </entry>
+    <entry>
+      <key>Sent</key>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
   <sqlModels>
diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
index bc03fe3d3286cee471e2507af28e1cb27808eecd..527dfbf9421c7be5b41f317d79c2a6f8dd19bef6 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -69,6 +69,10 @@
       <key>Incoming</key>
       <value>Eingehend</value>
     </entry>
+    <entry>
+      <key>Current purchase/sales price</key>
+      <value>akt. EK-/VK-Preis</value>
+    </entry>
     <entry>
       <key>Active</key>
       <value>Aktiv</value>
@@ -123,6 +127,7 @@
     </entry>
     <entry>
       <key>[%0]the given keyword \&amp;quot;%1\&amp;quot; has no match with the possible keywordlist</key>
+      <value></value>
     </entry>
     <entry>
       <key>Histories</key>
@@ -670,10 +675,6 @@
       <key>OUT</key>
       <value>AUS</value>
     </entry>
-    <entry>
-      <key>Menge</key>
-      <value>Quantity</value>
-    </entry>
     <entry>
       <key>Warehouse</key>
       <value>Lager</value>
@@ -702,6 +703,167 @@
       <key>The product number already exists!</key>
       <value>Die Produktnummer existiert bereits!</value>
     </entry>
+    <entry>
+      <key>Quantity</key>
+      <value>Menge</value>
+    </entry>
+    <entry>
+      <key>Menge</key>
+    </entry>
+    <entry>
+      <key>Salesproject</key>
+      <value>Vertriebsprojekt</value>
+    </entry>
+    <entry>
+      <key>Rollout</key>
+      <value>Roll Out</value>
+    </entry>
+    <entry>
+      <key>Estimation</key>
+      <value>Einschätzung</value>
+    </entry>
+    <entry>
+      <key>Phase</key>
+      <value>Phase</value>
+    </entry>
+    <entry>
+      <key>Product number</key>
+      <value>Produktnummer</value>
+    </entry>
+    <entry>
+      <key>Project number</key>
+      <value>Projektnummer</value>
+    </entry>
+    <entry>
+      <key>Project title</key>
+      <value>Projekttitel</value>
+    </entry>
+    <entry>
+      <key>Project start</key>
+      <value>Projektstart</value>
+    </entry>
+    <entry>
+      <key>Volume</key>
+      <value>Volumen</value>
+    </entry>
+    <entry>
+      <key>The project number already exists!</key>
+      <value>Die Projektnummer existiert bereits!</value>
+    </entry>
+    <entry>
+      <key>Partial order</key>
+      <value>Teilauftrag</value>
+    </entry>
+    <entry>
+      <key>Open</key>
+      <value>Offen</value>
+    </entry>
+    <entry>
+      <key>Lost</key>
+      <value>Verloren</value>
+    </entry>
+    <entry>
+      <key>Order</key>
+      <value>Auftrag</value>
+    </entry>
+    <entry>
+      <key>Postponed</key>
+      <value>Vertagt</value>
+    </entry>
+    <entry>
+      <key>Aborted</key>
+      <value>Abgebrochen</value>
+    </entry>
+    <entry>
+      <key>Negotiation</key>
+      <value>Verhandlung</value>
+    </entry>
+    <entry>
+      <key>Workshop</key>
+      <value>Workshop</value>
+    </entry>
+    <entry>
+      <key>Presentation preparation</key>
+      <value>Präsentationsvorbereitung</value>
+    </entry>
+    <entry>
+      <key>Waiting for request</key>
+      <value>Auf Anforderungen warten</value>
+    </entry>
+    <entry>
+      <key>Specifications in progress</key>
+      <value>Lastenheft in Bearbeitung</value>
+    </entry>
+    <entry>
+      <key>Project decision</key>
+      <value>Projektentscheidung</value>
+    </entry>
+    <entry>
+      <key>Lead</key>
+      <value>Lead</value>
+    </entry>
+    <entry>
+      <key>Presentation postprocessing</key>
+      <value>Präsentationsnachbereitung</value>
+    </entry>
+    <entry>
+      <key>Statement given</key>
+      <value>Stellungnahme abgeben</value>
+    </entry>
+    <entry>
+      <key>Total net</key>
+      <value>Betrag netto</value>
+    </entry>
+    <entry>
+      <key>Offer</key>
+      <value>Angebot</value>
+    </entry>
+    <entry>
+      <key>Offer number</key>
+      <value>Angebotsnummer</value>
+    </entry>
+    <entry>
+      <key>Probability</key>
+      <value>Wahrscheinlichkeit</value>
+    </entry>
+    <entry>
+      <key>Total VAT</key>
+      <value>Betrag MWST</value>
+    </entry>
+    <entry>
+      <key>Person / Firma</key>
+    </entry>
+    <entry>
+      <key>The offer number already exists!</key>
+      <value>Die Angebotsnummer existiert bereits!</value>
+    </entry>
+    <entry>
+      <key>0 %</key>
+    </entry>
+    <entry>
+      <key>75 %</key>
+    </entry>
+    <entry>
+      <key>100 %</key>
+    </entry>
+    <entry>
+      <key>25 %</key>
+    </entry>
+    <entry>
+      <key>50 %</key>
+    </entry>
+    <entry>
+      <key>Won</key>
+      <value>Gewonnen</value>
+    </entry>
+    <entry>
+      <key>Checked</key>
+      <value>Geprüft</value>
+    </entry>
+    <entry>
+      <key>Sent</key>
+      <value>Versendet</value>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
 </language>
diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
index 23910819b7db0dd862c99b52ddf2abd4e359c637..d2c0fea4788260cbf74454c9a94957af8113deee 100644
--- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
+++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
@@ -542,6 +542,132 @@
     <entry>
       <key>The product number already exists!</key>
     </entry>
+    <entry>
+      <key>Quantity</key>
+    </entry>
+    <entry>
+      <key>Current purchase/sales price</key>
+    </entry>
+    <entry>
+      <key>Salesproject</key>
+    </entry>
+    <entry>
+      <key>Rollout</key>
+    </entry>
+    <entry>
+      <key>Estimation</key>
+    </entry>
+    <entry>
+      <key>Phase</key>
+    </entry>
+    <entry>
+      <key>Product number</key>
+    </entry>
+    <entry>
+      <key>Project number</key>
+    </entry>
+    <entry>
+      <key>Project title</key>
+    </entry>
+    <entry>
+      <key>Project start</key>
+    </entry>
+    <entry>
+      <key>Volume</key>
+    </entry>
+    <entry>
+      <key>The project number already exists!</key>
+    </entry>
+    <entry>
+      <key>Partial order</key>
+    </entry>
+    <entry>
+      <key>Open</key>
+    </entry>
+    <entry>
+      <key>Lost</key>
+    </entry>
+    <entry>
+      <key>Order</key>
+    </entry>
+    <entry>
+      <key>Postponed</key>
+    </entry>
+    <entry>
+      <key>Aborted</key>
+    </entry>
+    <entry>
+      <key>Negotiation</key>
+    </entry>
+    <entry>
+      <key>Workshop</key>
+    </entry>
+    <entry>
+      <key>Presentation preparation</key>
+    </entry>
+    <entry>
+      <key>Waiting for request</key>
+    </entry>
+    <entry>
+      <key>Specifications in progress</key>
+    </entry>
+    <entry>
+      <key>Project decision</key>
+    </entry>
+    <entry>
+      <key>Lead</key>
+    </entry>
+    <entry>
+      <key>Presentation postprocessing</key>
+    </entry>
+    <entry>
+      <key>Statement given</key>
+    </entry>
+    <entry>
+      <key>Total net</key>
+    </entry>
+    <entry>
+      <key>Offer</key>
+    </entry>
+    <entry>
+      <key>Offer number</key>
+    </entry>
+    <entry>
+      <key>Probability</key>
+    </entry>
+    <entry>
+      <key>Total VAT</key>
+    </entry>
+    <entry>
+      <key>Person / Firma</key>
+    </entry>
+    <entry>
+      <key>The offer number already exists!</key>
+    </entry>
+    <entry>
+      <key>0 %</key>
+    </entry>
+    <entry>
+      <key>75 %</key>
+    </entry>
+    <entry>
+      <key>100 %</key>
+    </entry>
+    <entry>
+      <key>25 %</key>
+    </entry>
+    <entry>
+      <key>50 %</key>
+    </entry>
+    <entry>
+      <key>Won</key>
+    </entry>
+    <entry>
+      <key>Checked</key>
+    </entry>
+    <entry>
+      <key>Sent</key>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
 </language>
diff --git a/neonContext/Offer_context/Offer_context.aod b/neonContext/Offer_context/Offer_context.aod
new file mode 100644
index 0000000000000000000000000000000000000000..77b1dfe024bd7940849b34e8081f49894c0e8cab
--- /dev/null
+++ b/neonContext/Offer_context/Offer_context.aod
@@ -0,0 +1,28 @@
+<?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>Offer_context</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <mainview>OfferMain_view</mainview>
+  <filterview>OfferFilter_view</filterview>
+  <editview>OfferEdit_view</editview>
+  <preview>OfferPreview_view</preview>
+  <entity>Offer_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>1dd0290d-b820-4a3b-ada7-1850025ca914</name>
+      <view>OfferFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>08b180ed-7983-4675-9be4-2b55467c713c</name>
+      <view>OfferMain_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>4ed03135-fe7e-4413-8272-c64ad5f3287d</name>
+      <view>OfferEdit_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>c7f456ce-a141-436b-ad4b-7007a95eae04</name>
+      <view>OfferPreview_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonContext/Org_context/Org_context.aod b/neonContext/Org_context/Org_context.aod
index c9a5b204f3b4e4a97f86b3e8ae7509fd265c4ca3..388b6446c3b02f5ddfd7f0726af591ea0854193c 100644
--- a/neonContext/Org_context/Org_context.aod
+++ b/neonContext/Org_context/Org_context.aod
@@ -9,6 +9,7 @@
   <filterview>OrgFilter_view</filterview>
   <editview>OrgEdit_view</editview>
   <preview>OrgPreview_view</preview>
+  <lookupview>OrgFilter_view</lookupview>
   <entity>Org_entity</entity>
   <references>
     <neonViewReference>
diff --git a/neonContext/Productprice_context/Productprice_context.aod b/neonContext/Productprice_context/Productprice_context.aod
index 9b7a23a449810d5f92adf19ec7f5b361d8c19a3d..14c5eb885dd305a50e6d639ec64a42c370ac9648 100644
--- a/neonContext/Productprice_context/Productprice_context.aod
+++ b/neonContext/Productprice_context/Productprice_context.aod
@@ -18,5 +18,9 @@
       <name>d1c8b084-a20b-49ae-88fe-7a578396d4a5</name>
       <view>ProductpriceRelation_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>d6d23301-5660-4938-b6a3-683dc096baac</name>
+      <view>ProductpriceCurrent_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/Salesproject_context/Salesproject_context.aod b/neonContext/Salesproject_context/Salesproject_context.aod
new file mode 100644
index 0000000000000000000000000000000000000000..4619a612976d4d83265083082193f6db41bd2b5e
--- /dev/null
+++ b/neonContext/Salesproject_context/Salesproject_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>Salesproject_context</name>
+  <title>Salesproject</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <mainview>SalesprojectMain_view</mainview>
+  <filterview>SalesprojectFilter_view</filterview>
+  <editview>SalesprojectEdit_view</editview>
+  <preview>SalesprojectPreview_view</preview>
+  <entity>Salesproject_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>a791a80d-ecec-43e3-b168-633e411835c2</name>
+      <view>SalesprojectPreview_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>0d053d4a-a946-417f-a6f7-95e22b9a7cae</name>
+      <view>SalesprojectMain_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>fe6fb9fc-4e7c-49d6-a452-e022b55cbc55</name>
+      <view>SalesprojectFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>c35cc718-94a8-43cf-afe4-f02d251d4e9f</name>
+      <view>SalesprojectEdit_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonContext/Stock_context/Stock_context.aod b/neonContext/Stock_context/Stock_context.aod
index f9bebb231c0b9f33062ef3c1a625a32bb332149f..8e7d6f4c576e5ada61c48ed004ffab467bffa64a 100644
--- a/neonContext/Stock_context/Stock_context.aod
+++ b/neonContext/Stock_context/Stock_context.aod
@@ -1,6 +1,7 @@
 <?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>Stock_context</name>
+  <title>Stock</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterview>StockFilter_view</filterview>
   <editview>StockEdit_view</editview>
@@ -14,5 +15,9 @@
       <name>29d6a038-220f-411c-95ac-335e6779b1fa</name>
       <view>StockEdit_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>e2028340-f80f-4b43-8f44-d88e5ea03f62</name>
+      <view>StockCount_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonDashboard/Vertriebsdashboard/Vertriebsdashboard.aod b/neonDashboard/Vertriebsdashboard/Vertriebsdashboard.aod
index 1b3afa1d1e15c5fbcd73d24c5e91ff919e2198e9..8f01de2d20ab81e587c3cfe261f3b67dc59426c2 100644
--- a/neonDashboard/Vertriebsdashboard/Vertriebsdashboard.aod
+++ b/neonDashboard/Vertriebsdashboard/Vertriebsdashboard.aod
@@ -1,86 +1,34 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <neonDashboard 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/neonDashboard/1.0.0">
   <name>Vertriebsdashboard</name>
-  <title>Salesdashboard</title>
+  <title>Vertriebsdashboard</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <icon>NEON:PUZZLE</icon>
+  <icon>NEON:LOGO_A</icon>
   <dashboardType>PUBLIC</dashboardType>
   <defaultDashlets>
     <neonDashlet>
-      <name>859bc9bc-17be-4ce9-91a0-0b3720bf31ea</name>
+      <name>Dashlet</name>
       <viewName>TwitterTimeline_view</viewName>
       <configName>AditoTwitterDashlet</configName>
+      <title>Aditonews</title>
       <uiConfiguration>
         <name>uiConfiguration</name>
-        <x v="0" />
-        <y v="0" />
+        <xPos v="0" />
+        <yPos v="0" />
         <colspan v="1" />
-        <rowspan v="8" />
+        <rowspan v="7" />
       </uiConfiguration>
     </neonDashlet>
     <neonDashlet>
-      <name>51770c1a-b470-4a60-ba70-8ab1eac69502</name>
+      <name>Dashlet3</name>
       <viewName>FacebookTimeline_view</viewName>
       <configName>AditoFacebookDashlet</configName>
+      <title>Adito FB</title>
       <uiConfiguration>
         <name>uiConfiguration</name>
-        <x v="1" />
-        <y v="0" />
-        <colspan v="1" />
-        <rowspan v="4" />
-      </uiConfiguration>
-    </neonDashlet>
-    <neonDashlet>
-      <name>3b610152-cd0b-47ba-8587-e190757e1916</name>
-      <viewName>TwitterTimeline_view</viewName>
-      <configName>TwitterDashletConfig</configName>
-      <title>Frank</title>
-      <requiresConfiguration v="false" />
-      <uiConfiguration>
-        <name>uiConfiguration</name>
-        <x v="2" />
-        <y v="0" />
-        <colspan v="1" />
-        <rowspan v="4" />
-      </uiConfiguration>
-      <parameters>
-        <neonDashletParameter>
-          <name>Account_param</name>
-          <value>fkullm</value>
-        </neonDashletParameter>
-      </parameters>
-    </neonDashlet>
-    <neonDashlet>
-      <name>0fcb3a5b-192b-4f1d-9720-e3c993108ff1</name>
-      <viewName>FacebookTimeline_view</viewName>
-      <configName>FacebookDashletConfig</configName>
-      <title>Microsoft News</title>
-      <requiresConfiguration v="false" />
-      <uiConfiguration>
-        <name>uiConfiguration</name>
-        <x v="2" />
-        <y v="8" />
-        <colspan v="1" />
-        <rowspan v="4" />
-      </uiConfiguration>
-      <parameters>
-        <neonDashletParameter>
-          <name>Account_param</name>
-          <value>microsoft</value>
-        </neonDashletParameter>
-      </parameters>
-    </neonDashlet>
-    <neonDashlet>
-      <name>e6354df0-189f-4f1f-960f-f15e66fe42df</name>
-      <viewName>PersFilter_view</viewName>
-      <configName>MyContactsDashlet</configName>
-      <title>Kontakte</title>
-      <requiresConfiguration v="false" />
-      <uiConfiguration>
-        <name>uiConfiguration</name>
-        <x v="0" />
-        <y v="12" />
-        <colspan v="1" />
+        <xPos v="1" />
+        <yPos v="0" />
+        <colspan v="2" />
         <rowspan v="4" />
       </uiConfiguration>
     </neonDashlet>
diff --git a/neonView/AppointmentEdit_view/AppointmentEdit_view.aod b/neonView/AppointmentEdit_view/AppointmentEdit_view.aod
index 525b48c9d93d61466c94b128a58cfd3713662863..a80f04ceffa196310967e8a535a745851e961642 100644
--- a/neonView/AppointmentEdit_view/AppointmentEdit_view.aod
+++ b/neonView/AppointmentEdit_view/AppointmentEdit_view.aod
@@ -14,13 +14,14 @@
       <descriptionField>DESCRIPTION</descriptionField>
       <beginField>BEGIN</beginField>
       <endField>END</endField>
-      <affectedUsersField>ATTENDEES</affectedUsersField>
       <attendeesField>ATTENDEES</attendeesField>
       <privateField>CLASSIFICATION</privateField>
       <statusField>STATUS</statusField>
       <locationField>LOCATION</locationField>
       <categoriesField>CATEGORIES</categoriesField>
       <alldayField>ALLDAY</alldayField>
+      <transparencyField>TRANSPARENCY</transparencyField>
+      <favoriteActionGroup1>PartStatActionGroup</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
     </appointmentEditViewTemplate>
   </children>
diff --git a/neonView/AppointmentPreview_view/AppointmentPreview_view.aod b/neonView/AppointmentPreview_view/AppointmentPreview_view.aod
index a9dc4938e3526192978bbaa4bfb1627a696f95ba..1a532790b8f9277ff1a89f47d72a9a420991e996 100644
--- a/neonView/AppointmentPreview_view/AppointmentPreview_view.aod
+++ b/neonView/AppointmentPreview_view/AppointmentPreview_view.aod
@@ -12,12 +12,16 @@
       <name>AppointmentPreviewTemplate</name>
       <summaryField>SUMMARY</summaryField>
       <descriptionField>DESCRIPTION</descriptionField>
+      <beginField>BEGIN</beginField>
+      <endField>END</endField>
       <periodField>STARTEND</periodField>
       <attendeesField>ATTENDEES</attendeesField>
       <privateField>CLASSIFICATION</privateField>
+      <transparencyField>TRANSPARENCY</transparencyField>
       <statusField>STATUS</statusField>
       <locationField>LOCATION</locationField>
       <categoriesField>CATEGORIES</categoriesField>
+      <favoriteActionGroup1>PartStatActionGroup</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
     </appointmentPreviewViewTemplate>
   </children>
diff --git a/neonView/ContractFilter_view/ContractFilter_view.aod b/neonView/ContractFilter_view/ContractFilter_view.aod
index 7942908de6fd88691087e561547da7cef94c2b91..ed763f0e58bd15c10ccfaf7c4a101d5fe1333ddb 100644
--- a/neonView/ContractFilter_view/ContractFilter_view.aod
+++ b/neonView/ContractFilter_view/ContractFilter_view.aod
@@ -12,6 +12,10 @@
       <name>Table_template</name>
       <entityField>#ENTITY</entityField>
       <columns>
+        <neonTableColumn>
+          <name>67ceacc5-6238-496a-9bc6-ccc52ce91cd3</name>
+          <entityField>IMAGE</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>1a610a45-8c8c-48d4-bc0b-905655afa016</name>
           <entityField>CONTRACTCODE</entityField>
diff --git a/neonView/OfferEdit_view/OfferEdit_view.aod b/neonView/OfferEdit_view/OfferEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..fc6c2ad73511b9fbd4d8510cbf2ccb4c47bdedce
--- /dev/null
+++ b/neonView/OfferEdit_view/OfferEdit_view.aod
@@ -0,0 +1,47 @@
+<?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>OfferEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>OfferEdit_generic</name>
+      <editMode v="true" />
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>20a42587-69dd-4b8e-9a2e-3f7e8717b6ee</name>
+          <entityField>OFFERCODE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>e95c7a5d-3931-4637-a759-c034ae5eb81d</name>
+          <entityField>RELATION_ID</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>768683f3-08c8-4e85-bb4c-7e5c74a8dec0</name>
+          <entityField>OFFERDATE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>ca883d2e-f391-4681-b9f7-72040d4b9669</name>
+          <entityField>LANGUAGE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>ce72d9f3-66ce-4a5e-a5af-c3a82520141d</name>
+          <entityField>PROBABILITY</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>767a9e6e-596b-4903-aa86-7bc0f66cd037</name>
+          <entityField>STATUS</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>64cb7376-3a7c-4ce9-99e8-e70bc91b41d0</name>
+          <entityField>CURRENCY</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/OfferFilter_view/OfferFilter_view.aod b/neonView/OfferFilter_view/OfferFilter_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..c50ceb2b9db62cdfe9a7983e9e58365f3c6ecf2c
--- /dev/null
+++ b/neonView/OfferFilter_view/OfferFilter_view.aod
@@ -0,0 +1,42 @@
+<?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>OfferFilter_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>OfferFilter_template</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTableColumn>
+          <name>60b83daa-9349-4bef-94d8-5f1fc350da59</name>
+          <entityField>OFFERCODE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>2e926750-d1db-4cb0-8fd9-f930ed7f0252</name>
+          <entityField>RELATION_ID</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>443c8480-5676-43a3-9617-f86dae39c960</name>
+          <entityField>OFFERDATE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>6f55da1e-281c-44ba-ab97-729b75516c32</name>
+          <entityField>NET</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>a0e5fc8f-ce4f-4a79-902d-27f3e3ad2a3d</name>
+          <entityField>CURRENCY</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>24440d2f-cb7a-4a5f-9d54-b1cd130908c8</name>
+          <entityField>PROBABILITY</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/OfferMain_view/OfferMain_view.aod b/neonView/OfferMain_view/OfferMain_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..957c32ed2fa1d4b5e637b5f1a4551172b5db9d8c
--- /dev/null
+++ b/neonView/OfferMain_view/OfferMain_view.aod
@@ -0,0 +1,18 @@
+<?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>OfferMain_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <masterSlaveLayout>
+      <name>layout</name>
+      <master>5b93621b-c597-4ee8-88d5-3075e3890eb5</master>
+    </masterSlaveLayout>
+  </layout>
+  <children>
+    <neonViewReference>
+      <name>5b93621b-c597-4ee8-88d5-3075e3890eb5</name>
+      <entityField>#ENTITY</entityField>
+      <view>OfferPreview_view</view>
+    </neonViewReference>
+  </children>
+</neonView>
diff --git a/neonView/OfferPreview_view/OfferPreview_view.aod b/neonView/OfferPreview_view/OfferPreview_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..d639c0b4f7c4d5134e511749ef64ff9f3b97b0f3
--- /dev/null
+++ b/neonView/OfferPreview_view/OfferPreview_view.aod
@@ -0,0 +1,58 @@
+<?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>OfferPreview_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <cardViewTemplate>
+      <name>OfferHeader_template</name>
+      <iconField>IMAGE</iconField>
+      <titleField>OFFERCODE</titleField>
+      <descriptionField>RELATION_ID</descriptionField>
+      <entityField>#ENTITY</entityField>
+    </cardViewTemplate>
+    <genericViewTemplate>
+      <name>Offer_generic</name>
+      <showDrawer v="true" />
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>b120a564-fb97-4ae3-bd3e-13ce25d97834</name>
+          <entityField>OFFERDATE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>42befe2f-40c0-4674-b0b1-70ae5523f861</name>
+          <entityField>STATUS</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>7a145c84-dc49-4af2-870f-44960dd89d12</name>
+          <entityField>LANGUAGE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>9e876b07-3029-42fe-a1e7-5c19b845e50d</name>
+          <entityField>NET</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>cd72899a-69b2-4fe2-bf58-4fb9f594324e</name>
+          <entityField>VAT</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>16d38881-d3d3-4c4d-9f23-39d60eadce8d</name>
+          <entityField>CURRENCY</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>037889c4-136c-4e9e-b8e2-ff4f13af13c1</name>
+          <entityField>PROBABILITY</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>3317b73e-68e8-41a8-a678-89c7c7c8513e</name>
+          <entityField>SALESPROJECT_ID</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/PersMain_view/PersMain_view.aod b/neonView/PersMain_view/PersMain_view.aod
index 5aae7090e565a1e7200796fc9c02144c91700caa..5f77bdaab1821fb500a21fa9c0a13b65fe54691b 100644
--- a/neonView/PersMain_view/PersMain_view.aod
+++ b/neonView/PersMain_view/PersMain_view.aod
@@ -19,10 +19,5 @@
       <entityField>PersHistory_dfo</entityField>
       <view>HistoryFilter_view</view>
     </neonViewReference>
-    <neonViewReference>
-      <name>fa0dc2e9-15c8-4f70-859a-7ab35bcc4f3c</name>
-      <entityField>PersPricelist_dfo</entityField>
-      <view>ProductpriceRelation_view</view>
-    </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/ProductFilter_view/ProductFilter_view.aod b/neonView/ProductFilter_view/ProductFilter_view.aod
index 946718cd876b8f54211292678ada6032fcc9d35e..0707b56301c52a1a110a56bf13ed26c4ebcfdac1 100644
--- a/neonView/ProductFilter_view/ProductFilter_view.aod
+++ b/neonView/ProductFilter_view/ProductFilter_view.aod
@@ -12,6 +12,10 @@
       <name>Table_template</name>
       <entityField>#ENTITY</entityField>
       <columns>
+        <neonTableColumn>
+          <name>bf58edbf-0708-41a7-a092-ebc87a60c3c2</name>
+          <entityField>IMAGE</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>346eab87-8fea-4828-8ea6-86af61f973ce</name>
           <entityField>GROUPCODEID</entityField>
diff --git a/neonView/ProductPreview_view/ProductPreview_view.aod b/neonView/ProductPreview_view/ProductPreview_view.aod
index 612ead7d150247d474b6b7bebab125e1216a0a3c..77430189389f1bbbf030819e90667bb6bf17ab14 100644
--- a/neonView/ProductPreview_view/ProductPreview_view.aod
+++ b/neonView/ProductPreview_view/ProductPreview_view.aod
@@ -10,6 +10,7 @@
   <children>
     <cardViewTemplate>
       <name>ProductHeader_template</name>
+      <iconField>IMAGE</iconField>
       <titleField>PRODUCTCODE</titleField>
       <descriptionField>GROUPCODEID</descriptionField>
       <entityField>#ENTITY</entityField>
@@ -43,19 +44,17 @@
           <name>ba604dc5-06b2-44f2-a9b3-c4c3adb9f8f8</name>
           <entityField>MINSTOCK</entityField>
         </entityFieldLink>
-        <entityFieldLink>
-          <name>3802b031-10fc-4694-8e06-71d0033ae351</name>
-          <entityField>STOCKCOUNT</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>bcf1cada-cb5b-4012-85d1-544eabc5b86d</name>
-          <entityField>currentPurchasePrice</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>4ef15389-761a-40e6-8774-f7145ace5c12</name>
-          <entityField>currentSalesPrice</entityField>
-        </entityFieldLink>
       </fields>
     </genericViewTemplate>
+    <neonViewReference>
+      <name>675883fa-d384-464b-9a9b-52dd9cb0f249</name>
+      <entityField>ProductStockCount_dfo</entityField>
+      <view>StockCount_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>297942d3-d87d-4813-96b0-7fa1bb58a9cf</name>
+      <entityField>ProductProductpriceCurr_dfo</entityField>
+      <view>ProductpriceCurrent_view</view>
+    </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/ProductpriceCurrent_view/ProductpriceCurrent_view.aod b/neonView/ProductpriceCurrent_view/ProductpriceCurrent_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..fcd91b34fcd98c29b4e6b67f64e89c155dc4d644
--- /dev/null
+++ b/neonView/ProductpriceCurrent_view/ProductpriceCurrent_view.aod
@@ -0,0 +1,28 @@
+<?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>ProductpriceCurrent_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>Generic</name>
+      <showDrawer v="true" />
+      <drawerCaption>Current purchase/sales price</drawerCaption>
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>8775da33-ac67-474f-b3cc-43f848d805aa</name>
+          <entityField>currentPurchasePrice</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>7ea07988-e3f6-4540-bdb2-4e34cf3211be</name>
+          <entityField>currentSalesPrice</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod b/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod
index c3b1ebfd15c231d4f665ba9a71237d80b848ff95..1c56c25712bcf4b6c50bad7737801cbf34810b61 100644
--- a/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod
+++ b/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod
@@ -14,6 +14,10 @@
       <autoNewRow v="true" />
       <entityField>#ENTITY</entityField>
       <columns>
+        <neonTableColumn>
+          <name>44311686-a24a-4cf0-87a0-6e354b3f457a</name>
+          <entityField>IMAGE</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>695ce7be-d738-48a9-833d-e8815c6eff74</name>
           <entityField>Pricelist_Relation</entityField>
diff --git a/neonView/ProductpriceRelation_view/ProductpriceRelation_view.aod b/neonView/ProductpriceRelation_view/ProductpriceRelation_view.aod
index f9b2431be4c67d072640199adea97c97900f99b1..3d65425be7d9285d965e27d67589c0b096c87e43 100644
--- a/neonView/ProductpriceRelation_view/ProductpriceRelation_view.aod
+++ b/neonView/ProductpriceRelation_view/ProductpriceRelation_view.aod
@@ -14,6 +14,10 @@
       <autoNewRow v="true" />
       <entityField>#ENTITY</entityField>
       <columns>
+        <neonTableColumn>
+          <name>bc7ca35e-c454-4cc0-9b2e-0656e03f1f65</name>
+          <entityField>IMAGE</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>0b2271ca-f55f-4339-b63f-f6f95d1d18e6</name>
           <entityField>PRODUCT_GROUPCODEID</entityField>
diff --git a/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod b/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..18c48ce098c04d4bfc50ecbb1beb86850fe80186
--- /dev/null
+++ b/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod
@@ -0,0 +1,59 @@
+<?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>SalesprojectEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>SalesprojectEdit_generic</name>
+      <editMode v="true" />
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>2bc931ef-03f4-4812-b75f-70070c3dc849</name>
+          <entityField>PROJECTTITLE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>a68c2b51-4b0d-46b0-b97e-dc87d168cf0a</name>
+          <entityField>PROJECTCODE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>d0a2027b-1796-4c5c-82f5-6fdb8f178ab5</name>
+          <entityField>RELATION_ID</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>ceaa6824-a100-4552-a3a7-50a84faadaf9</name>
+          <entityField>INFO</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>218a0751-9a53-4639-9d79-f9463f399b93</name>
+          <entityField>STATUS</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>c00b2121-c44d-41a1-8c32-e2339b4dd234</name>
+          <entityField>PHASE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>13ad6d3f-3a5d-4385-aae6-c454ab7531f4</name>
+          <entityField>STARTDATE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>ed4308b5-dd5a-49a1-b748-9a2980291d56</name>
+          <entityField>ENDDATE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>5b3c3dc2-4ca5-45c5-96e5-7196a99dcdce</name>
+          <entityField>VOLUME</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>f9332d9d-184b-4044-afaf-5d377fe59072</name>
+          <entityField>ESTIMATION</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..ea47ded94475100f9c2fe86d9c88c01b66cd38dd
--- /dev/null
+++ b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod
@@ -0,0 +1,46 @@
+<?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>SalesprojectFilter_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>SalesprojectFilter_table</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTableColumn>
+          <name>91a153d4-4ede-4ba1-b11e-713e476e77c9</name>
+          <entityField>PROJECTCODE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>9f6b967e-5140-420f-84ca-2273920221bd</name>
+          <entityField>PROJECTTITLE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>fec843c3-f7c0-42c7-8295-50386651edb2</name>
+          <entityField>STARTDATE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>4cc3c3f1-6f86-434d-8d1d-32a965aa76b2</name>
+          <entityField>ENDDATE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>92699fdb-4eea-4ce2-98d2-6cc3f3b7581e</name>
+          <entityField>VOLUME</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>2689fee8-bebb-4d7c-b11e-4a7310664977</name>
+          <entityField>PHASE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>52a851b0-9059-4d57-8ff5-335c819359e8</name>
+          <entityField>STATUS</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..b8ddc1dc4d32f3cd0d3b40406ab297cec4655240
--- /dev/null
+++ b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod
@@ -0,0 +1,10 @@
+<?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>SalesprojectMain_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <masterSlaveLayout>
+      <name>layout</name>
+    </masterSlaveLayout>
+  </layout>
+</neonView>
diff --git a/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod b/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..8262da274e19afb0d1a51c80bc3443f6575aa2fd
--- /dev/null
+++ b/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod
@@ -0,0 +1,10 @@
+<?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>SalesprojectPreview_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+</neonView>
diff --git a/neonView/StockCount_view/StockCount_view.aod b/neonView/StockCount_view/StockCount_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..d1eeff34982abd410f2ed310645ddacba1a3f936
--- /dev/null
+++ b/neonView/StockCount_view/StockCount_view.aod
@@ -0,0 +1,24 @@
+<?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>StockCount_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>Generic</name>
+      <showDrawer v="true" />
+      <drawerCaption>Stock</drawerCaption>
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>fe1e5348-0579-4e2c-8d80-2594db6cfb22</name>
+          <entityField>STOCKCOUNT</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/StockFilter_view/StockFilter_view.aod b/neonView/StockFilter_view/StockFilter_view.aod
index 65c6327aa9c98380282a64c41b0c2e35e3128028..cfd4529e65414b0d92003f7d995b40a9e67da496 100644
--- a/neonView/StockFilter_view/StockFilter_view.aod
+++ b/neonView/StockFilter_view/StockFilter_view.aod
@@ -13,6 +13,10 @@
       <autoNewRow v="true" />
       <entityField>#ENTITY</entityField>
       <columns>
+        <neonTableColumn>
+          <name>c57eed89-267a-4df6-9ac9-e9b5c5e49794</name>
+          <entityField>IMAGE</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>135080e7-1d91-4be2-8bdb-8368e247127d</name>
           <entityField>WAREHOUSE</entityField>
diff --git a/others/db_changes/masterChangelog.xml b/others/db_changes/masterChangelog.xml
index ee76531830eadd8c20d9b6e685bc4fa4e5d4927c..eb33b63d871620479ad58241dfb68b1a4b729026 100644
--- a/others/db_changes/masterChangelog.xml
+++ b/others/db_changes/masterChangelog.xml
@@ -13,7 +13,10 @@
     <include file="struct/create_prod2prod.xml"/>
     <include file="struct/create_productprice.xml"/>
     <include file="struct/create_stock.xml"/>
+    <include file="struct/create_salesproject.xml"/>
+    <include file="struct/create_offer.xml"/>
     <include file="struct/contractChanges.xml"/>
+    <include file="struct/offerChanges.xml"/>
     <include file="struct/productChanges.xml"/>
     <include file="misc/1535533490181_persChanges.xml"/>
     <include file="struct/1535612802325_addressChange.xml"/>
diff --git a/others/db_changes/struct/changeLanguageType.xml b/others/db_changes/struct/changeLanguageType.xml
new file mode 100644
index 0000000000000000000000000000000000000000..77aeb44c5d6f26182eb030495fc83be0ee62534e
--- /dev/null
+++ b/others/db_changes/struct/changeLanguageType.xml
@@ -0,0 +1,7 @@
+<?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="609a8e0d-d104-4cdb-a803-3ac65bb456b3">
+    <modifyDataType tableName="OFFER" columnName="LANGUAGE" newDataType="varchar(5)"/>
+    <modifyDataType tableName="RELATION" columnName="LANGUAGE" newDataType="varchar(5)"/>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/others/db_changes/struct/create_offer.xml b/others/db_changes/struct/create_offer.xml
new file mode 100644
index 0000000000000000000000000000000000000000..45c57d54f220d3459012b137702cee3da3abc86d
--- /dev/null
+++ b/others/db_changes/struct/create_offer.xml
@@ -0,0 +1,30 @@
+<?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="2f02d14b-731b-4e66-a945-af90b2e3b762">
+	<createTable tableName="OFFER">
+		<column name="OFFERID" type="CHAR(36)">
+			<constraints primaryKey="true" primaryKeyName="PK_OFFER_OFFERID"/>
+		</column>   
+                <column name="RELATION_ID" type="CHAR(36)">
+                    <constraints nullable="false"/>
+                </column>                           
+                <column name="SALESPROJECT_ID" type="CHAR(36)"/>
+                <column name="OFFERDATE" type="TIMESTAMP"/>
+                <column name="LANGUAGE" type="INTEGER"/>
+                <column name="OFFERCODE" type="INTEGER"/>
+                <column name="STATUS" type="INTEGER"/>
+                <column name="PROBABILITY" type="INTEGER"/>
+                <column name="NET" type="NUMERIC(14,2)"/>
+                <column name="VAT" type="NUMERIC(14,2)"/>
+                <column name="CURRENCY" type="INTEGER"/>
+		<column name="DATE_EDIT" type="TIMESTAMP"/>
+                <column name="DATE_NEW" type="TIMESTAMP">
+                    <constraints nullable="false"/>
+                </column>
+		<column name="USER_EDIT" type="VARCHAR(50)"/>
+                <column name="USER_NEW" type="VARCHAR(50)">
+                    <constraints nullable="false"/>
+                </column>                                                         
+	</createTable>      
+</changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/others/db_changes/struct/create_salesproject.xml b/others/db_changes/struct/create_salesproject.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3c95b04689af9ccb87e3c8e432ceb7ffcfddff17
--- /dev/null
+++ b/others/db_changes/struct/create_salesproject.xml
@@ -0,0 +1,37 @@
+<?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="52da4775-e669-4633-ac22-3c5a74e44be9">
+        <createTable tableName="SALESPROJECT">
+            
+            <column name="PROJECTCODE" type="INTEGER">
+                <constraints nullable="false" unique="true" uniqueConstraintName="UNIQUE_SALESPROJECT_PROJECTCODE" />
+            </column>
+            <column name="PROJECTTITLE" type="VARCHAR(30)"/>
+            <column name="RELATION_ID" type="CHAR(36)">
+                <constraints nullable="false"/>
+            </column>  
+            <column name="INFO" type="CLOB"/>
+            <column name="STATUS" type="INTEGER"/>
+            <column name="PHASE" type="INTEGER"/>
+            <column name="VOLUME" type="NUMERIC(14,2)"/>
+            <column name="STARTDATE" type="TIMESTAMP"/>
+            <column name="ENDDATE" type="TIMESTAMP"/>
+            <column name="ESTIMATION" type="VARCHAR(50)"/>
+            <column name="ESTIMATIONVALUE" type="INTEGER"/>
+            
+            <column name="SALESPROJECTID" type="CHAR(36)">
+                <constraints primaryKey="true" primaryKeyName="PK_SALESPROJECT_SALESPROJECTID"/>
+            </column>
+            
+            <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"/>
+            
+        </createTable>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/others/db_changes/struct/offerChanges.xml b/others/db_changes/struct/offerChanges.xml
new file mode 100644
index 0000000000000000000000000000000000000000..37adab85f193765f80dd571f224dda328375cf8b
--- /dev/null
+++ b/others/db_changes/struct/offerChanges.xml
@@ -0,0 +1,9 @@
+<?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="27bc9279-0794-436c-9b54-dda05c3c310e">
+        <dropColumn tableName="OFFER" columnName="LANGUAGE"/>
+        <addColumn tableName="OFFER">
+            <column name="LANGUAGE" type="varchar(5)"/>
+        </addColumn>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/process/Appointment_lib/Appointment_lib.aod b/process/Appointment_lib/Appointment_lib.aod
new file mode 100644
index 0000000000000000000000000000000000000000..d7fcc9bd0c6f0dae81adc5716655bb82b743344a
--- /dev/null
+++ b/process/Appointment_lib/Appointment_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>Appointment_lib</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/Appointment_lib/process.js</process>
+</process>
diff --git a/process/Appointment_lib/process.js b/process/Appointment_lib/process.js
new file mode 100644
index 0000000000000000000000000000000000000000..43f7d1b94279811306a1cc3eed25e5cb5fe0c90d
--- /dev/null
+++ b/process/Appointment_lib/process.js
@@ -0,0 +1,74 @@
+import("system.neon");
+import("system.logging");
+import("system.text");
+
+function AppointmentUtils()
+{    
+    
+    /**
+     * Sets the partstat of the current users as given param state
+     * currentUserUri: string currentUserUri
+     * attendees: MSencoded calendarusers
+     * state: sets partstat 
+     */
+    this.setPartStat = function (currentUserUri, attendees, newState)
+    {
+        attendeesDecodedArray = text.decodeMS(attendees);
+        
+        for(var i = 0; i < attendeesDecodedArray.length; i++)
+        {
+            var decoded = text.decodeMS(attendeesDecodedArray[i])       
+            if(decoded[0] ==  currentUserUri)
+            {   
+                var updated = new Array();       
+
+                var isSet = false;
+                for (var j = 0; j < decoded.length; j++)
+                {           
+                    if (decoded[j].substr(0, 9) == "PARTSTAT:")
+                    {
+                        updated.push("PARTSTAT:" + newState);
+                        isSet = true;
+                    }
+                    else
+                    {
+                        updated.push(decoded[j])
+                    }            
+                }
+
+                if (!isSet)
+                {                    
+                   updated.push("PARTSTAT:" + newState);
+                }                                 
+
+                // Updaten Attendees
+                var newAttendees = new Array();
+                for (var x = 0; x < attendeesDecodedArray.length; x++)
+                {
+                     if (text.decodeMS(attendeesDecodedArray[x])[0] == currentUserUri)
+                     {
+                         newAttendees.push(text.encodeMS( updated))
+                     }
+                     else
+                     {
+                        newAttendees.push(attendeesDecodedArray[x])
+                     }
+                }
+               break;
+            }
+        }
+
+        return text.encodeMS(newAttendees);
+    }
+    
+    
+    this.sendExchangedAction = function(event)
+    {
+        if( calendars.getBackendType() == calendars.BACKEND_EXCHANGEWS )
+        {   
+            event["X-ADITO-STATUSACTION"] = "ACCEPT";    // "ACCEPT", "DECLINE", ""
+            event[calendars.AFFECTEDUSERS] = "";
+            calendars.updateEntry(event);
+        }
+    }
+}
\ No newline at end of file
diff --git a/process/Date_lib/process.js b/process/Date_lib/process.js
index fd70a766cc9dbb38afecdc501d0c8d83b79168e4..18a8c5d75a362aa1c4c552ee1cb394267be39062 100644
--- a/process/Date_lib/process.js
+++ b/process/Date_lib/process.js
@@ -1,9 +1,12 @@
 import("system.translate");
+import("system.datetime");
+
 /**
  * provides methods for interactions with dates
  */
 function DateUtils(){
-
+    
+    var that = this;
     /**
      * Validates two date inputs (beginning should always be before the end!)
      * 
@@ -13,11 +16,34 @@ function DateUtils(){
      * @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
+        if (pStart == "" || pStart == null || pEnd == "" || pEnd == null) return null;
         return pStart <= pEnd;
     }
     
     this.getValidationFailString = function(){
         return translate.text("The expiry date must be after the start date!");
     }
+    
+    /**
+     * Delivers the current date at midnight in UTC
+     * 
+     * @result {Number} 
+     */
+    this.getTodayUTC = function(){
+        return datetime.today("UTC");
+    }
+    
+    /**
+     * Delivers the passed date incremented by passed years
+     * 
+     * @param pDate {Number}
+     * @param pYears {Number}
+     * 
+     * @result {Number} date incremented by years
+     */
+    this.getDateIncrementedByYears = function(pDate, pYears){
+        var dateObj = new Date(pDate);
+        
+        return dateObj.setFullYear(dateObj.getFullYear() + pYears);
+    }
 }
\ No newline at end of file
diff --git a/process/Keyword_lib/process.js b/process/Keyword_lib/process.js
index 5a86e8886e47eff2e87bf296b0d76cca698c22b9..7e8781529f62f054c579424e158129a7a7a8a0c9 100644
--- a/process/Keyword_lib/process.js
+++ b/process/Keyword_lib/process.js
@@ -185,6 +185,46 @@ function KeywordUtils(){
                     ,createKeywordEntry("3", translate.text("Warehouse 3"))
                 ]);
                 break;
+            case "SALESPROJECT.STATUS":
+                valueContainer = createKeywordEntriesContainer([
+                     createKeywordEntry("1", translate.text("Open"))
+                    ,createKeywordEntry("2", translate.text("Postponed"))
+                    ,createKeywordEntry("3", translate.text("Aborted"))
+                    ,createKeywordEntry("4", translate.text("Partial order"))
+                    ,createKeywordEntry("5", translate.text("Order"))
+                    ,createKeywordEntry("6", translate.text("Lost"))
+                ]);
+                break;
+            case "SALESPROJECT.PHASE":
+                valueContainer = createKeywordEntriesContainer([
+                     createKeywordEntry("1", translate.text("Project decision"))
+                    ,createKeywordEntry("2", translate.text("Negotiation"))
+                    ,createKeywordEntry("3", translate.text("Workshop"))
+                    ,createKeywordEntry("4", translate.text("Presentation postprocessing"))
+                    ,createKeywordEntry("5", translate.text("Presentation preparation"))
+                    ,createKeywordEntry("6", translate.text("Statement given"))
+                    ,createKeywordEntry("7", translate.text("Specifications in progress"))
+                    ,createKeywordEntry("8", translate.text("Waiting for request"))
+                    ,createKeywordEntry("9", translate.text("Lead"))
+                ]);
+                break;
+            case "OFFER.PROBABILITY":
+                valueContainer = createKeywordEntriesContainer([
+                     createKeywordEntry("1", translate.text("0 %"), null, {percentValue: 0})
+                    ,createKeywordEntry("2", translate.text("25 %"), null, {percentValue: 25})
+                    ,createKeywordEntry("3", translate.text("50 %"), null, {percentValue: 50})
+                    ,createKeywordEntry("4", translate.text("75 %"), null, {percentValue: 75})
+                    ,createKeywordEntry("5", translate.text("100 %"), null, {percentValue: 100})
+                ]);
+                break;
+            case "OFFER.STATUS":
+                valueContainer = createKeywordEntriesContainer([
+                     createKeywordEntry("1", translate.text("Checked"))
+                    ,createKeywordEntry("2", translate.text("Sent"))
+                    ,createKeywordEntry("3", translate.text("Won"))
+                    ,createKeywordEntry("4", translate.text("Lost"))
+                ]);
+                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/process/Offer_lib/Offer_lib.aod b/process/Offer_lib/Offer_lib.aod
new file mode 100644
index 0000000000000000000000000000000000000000..ae2ae4230f73ba0dd50f29dcb7d4273254ea4d4b
--- /dev/null
+++ b/process/Offer_lib/Offer_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>Offer_lib</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/Offer_lib/process.js</process>
+</process>
diff --git a/process/Offer_lib/process.js b/process/Offer_lib/process.js
new file mode 100644
index 0000000000000000000000000000000000000000..d142a7bc54e17f5950585a38c7fdd81f56c0ace9
--- /dev/null
+++ b/process/Offer_lib/process.js
@@ -0,0 +1,33 @@
+import("system.translate");
+import("system.db");
+import("system.eMath");
+import("Util_lib");
+
+function OfferUtils(){
+    var that = this;
+    /**
+     * Delivers the next valid offer number (has to be unique)
+     * 
+     * @result {String} next valid offer number
+     */
+    this.getNextOfferNumber = function(){
+        var JdUtils = new JDitoUtils();
+        return JdUtils.getNextUniqueNumber("OFFERCODE", "OFFER");
+    }
+    
+    /**
+     * Checks if the passed offer number is valid (has to be unique)
+     * 
+     * @param {String} pOfferNumber offer number to check
+     * 
+     * @result {boolean} passed number is valid
+     */
+    this.validateOfferNumber = function(pOfferNumber){
+        var JdUtils = new JDitoUtils();
+        return JdUtils.validateUniqueNumber(pOfferNumber, "OFFERCODE", "OFFER");
+    }
+    
+    this.getOfferNumberValidationFailString = function(){
+        return translate.text("The offer number already exists!");
+    }
+}
\ No newline at end of file
diff --git a/process/Product_lib/Product_lib.aod b/process/Product_lib/Product_lib.aod
new file mode 100644
index 0000000000000000000000000000000000000000..0940dbd30195c3cf11aa844ceb906bded0758c60
--- /dev/null
+++ b/process/Product_lib/Product_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>Product_lib</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/Product_lib/process.js</process>
+</process>
diff --git a/process/Product_lib/process.js b/process/Product_lib/process.js
new file mode 100644
index 0000000000000000000000000000000000000000..dd841c2a86f1b5d8c279ffebd4902d8950f292d4
--- /dev/null
+++ b/process/Product_lib/process.js
@@ -0,0 +1,67 @@
+import("system.logging");
+import("system.SQLTYPES");
+import("system.datetime");
+import("system.db");
+import("system.vars");
+
+function ProductUtils()
+{
+    /**
+     * Delivers the currently valid product price 
+     * 
+     * @param pPid {String} ProductID
+     * @param pBuySell {String} possible values: PP, SP
+     * 
+     * @example productUtils.getCurrentProductPrice(vars.get("$field.PRODUCTID"), "PP")
+     * 
+     * @result {String} currently valid product price
+     */
+    this.getCurrentProductPrice = function( pPid, pBuySell )
+    {
+        if(pPid != undefined && pPid != "" && pBuySell != undefined && pBuySell != "")
+        {
+            var actualpriceSelect = "select PRICE from PRODUCTPRICE \n\
+                                    where BUYSELL = '" + pBuySell + "' and PRODUCT_ID = '" + pPid + "' and CURRENCY = 1 \n\
+                                    and VALID_FROM <= ? and (VALID_TO >= ? or VALID_TO is null) \n\
+                                    order by VALID_FROM desc";
+
+            var today = datetime.today();
+            var sqltypes = [ [today.toString(), SQLTYPES.TIMESTAMP], [today.toString(), SQLTYPES.TIMESTAMP] ];
+            var actualprice = db.cell([actualpriceSelect, sqltypes]);
+
+            if(actualprice != "")
+                return actualprice;
+            else
+                return "0.00";
+        }
+        else
+        {
+            throw new Error();//TODO: add message
+        }
+    }
+    
+    /**
+     * Delivers the stock
+     * 
+     * @param pPid {String} ProductID
+     * 
+     * @example productUtils.getStockCount(vars.get("$field.PRODUCTID"))
+     * 
+     * @result {String} stock count
+     */
+    this.getStockCount = function( pPid )
+    {
+        if(pPid != undefined && pPid != "")
+        {
+            var sum = db.cell("select sum(QUANTITY * IN_OUT) from STOCK where PRODUCT_ID = '" + pPid + "'");
+            if(sum == "")
+                sum = "0";
+            
+            return sum;
+        }
+        else
+        {
+            throw new Error();//TODO: add message
+        }
+    }
+}
\ No newline at end of file
diff --git a/process/Salesproject_lib/Salesproject_lib.aod b/process/Salesproject_lib/Salesproject_lib.aod
new file mode 100644
index 0000000000000000000000000000000000000000..7ee5946b8e74e524bc4703941b72d44a4a59318d
--- /dev/null
+++ b/process/Salesproject_lib/Salesproject_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>Salesproject_lib</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/Salesproject_lib/process.js</process>
+</process>
diff --git a/process/Salesproject_lib/process.js b/process/Salesproject_lib/process.js
new file mode 100644
index 0000000000000000000000000000000000000000..6f0456ff37736543ef381c5a1af3b2a526432c1a
--- /dev/null
+++ b/process/Salesproject_lib/process.js
@@ -0,0 +1,33 @@
+import("system.translate");
+import("system.db");
+import("system.eMath");
+import("Util_lib");
+
+function SalesprojectUtils(){
+    var that = this;
+    /**
+     * Delivers the next valid project number (has to be unique)
+     * 
+     * @result {String} next valid project number
+     */
+    this.getNextProjectNumber = function(){
+        var JdUtils = new JDitoUtils();
+        return JdUtils.getNextUniqueNumber("PROJECTCODE", "SALESPROJECT");
+    }
+    
+    /**
+     * Checks if the passed project number is valid (has to be unique)
+     * 
+     * @param {String} pProjectNumber project number to check
+     * 
+     * @result {boolean} passed number is valid
+     */
+    this.validateProjectNumber = function(pProjectNumber){
+        var JdUtils = new JDitoUtils();
+        return JdUtils.validateUniqueNumber(pProjectNumber, "PROJECTCODE", "SALESPROJECT");
+    }
+    
+    this.getProjectNumberValidationFailString = function(){
+        return translate.text("The project number already exists!");
+    }
+}
\ No newline at end of file
diff --git a/process/Util_lib/process.js b/process/Util_lib/process.js
index b811addbd2561fd9124866db2fbbc271ff19172f..406f2120f84bec12a8021d9a6b58e88c0ac22b64 100644
--- a/process/Util_lib/process.js
+++ b/process/Util_lib/process.js
@@ -779,6 +779,7 @@ function BinaryUtils()
  */
 function JDitoUtils()
 {
+    var that = this;
     /**
      * A wrapper for process.executeScript
      *
@@ -899,6 +900,56 @@ function JDitoUtils()
 
         return data.concat(temp);
     }
+    
+    /**
+     * Delivers the next unique number
+     *
+     * @param {String} pColumn req database column that contains unique numbers
+     * @param {String} pTable req database table
+     * @param {Number} pStartNumber opt number to start numeration
+     * 
+     * @result {String} next valid number
+     */
+    this.getNextUniqueNumber = function(pColumn, pTable, pStartNumber){
+        var maxNum = that.getMaxUniqueNumber(pColumn, pTable);
+        
+        if(maxNum == "0")    
+        {
+            if(pStartNumber == undefined)   pStartNumber = 1000;
+            return pStartNumber;
+        }
+        
+        return eMath.addInt(maxNum, "1");//increment currently highest number
+    }
+    
+    /**
+     * Checks if the passed number is valid (has to be unique)
+     * 
+     * @param {String} pNumber number to check
+     * @param {String} pColumn req database column that contains unique numbers
+     * @param {String} pTable req database table
+     * 
+     * @result {boolean} passed number is valid
+     */
+    this.validateUniqueNumber = function(pNumber, pColumn, pTable){
+        var maxNum = that.getMaxUniqueNumber(pColumn, pTable);
+        
+        return Number(pNumber) > Number(maxNum);
+    }
+    
+    /**
+     * Delivers the hightest number currently stored in database
+     * 
+     * @param {String} pColumn req database column that contains unique numbers
+     * @param {String} pTable req database table
+     * 
+     * @result {String} hightest number
+     */
+    this.getMaxUniqueNumber = function(pColumn, pTable){
+        var maxNum = db.cell("select max(" + pColumn + ") from " + pTable);
+        
+        return maxNum == "" ? "0" : maxNum;
+    }
 }
 /**
  * Class containing utility functions for use with JSON
diff --git a/process/autostartNeon/autostartNeon.aod b/process/autostartNeon/autostartNeon.aod
new file mode 100644
index 0000000000000000000000000000000000000000..844943c060799575d08c66b669b8c75bb27342f9
--- /dev/null
+++ b/process/autostartNeon/autostartNeon.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>autostartNeon</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/autostartNeon/process.js</process>
+</process>
diff --git a/process/autostartNeon/process.js b/process/autostartNeon/process.js
new file mode 100644
index 0000000000000000000000000000000000000000..37c8ec17db695f62479ec6868c5da21f6a4d0eda
--- /dev/null
+++ b/process/autostartNeon/process.js
@@ -0,0 +1,4 @@
+import("system.calendars")
+
+var users = ["Admin", "Birgit Leicht", "John Doe"]
+calendars.addPermissions(users, calendars.VEVENT, ["READ", "WRITE"], null, false, calendars.SORTSTRATEGY_NATURAL);
\ No newline at end of file