diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod
index 7a25937a4455a43947c22033feee76b7f04a75f6..e5d9fb31d428db53eb1d1d1ae4133057ec876525 100644
--- a/aliasDefinition/Data_alias/Data_alias.aod
+++ b/aliasDefinition/Data_alias/Data_alias.aod
@@ -2799,19 +2799,6 @@
                 <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>
@@ -2904,6 +2891,20 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>STATE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
diff --git a/entity/History_entity/History_entity.aod b/entity/History_entity/History_entity.aod
index d87c7f9d74d67a69f671eee60a4c7462e18febb6..702d6d49425a40f9af456e4c2bd35945d13a45ad 100644
--- a/entity/History_entity/History_entity.aod
+++ b/entity/History_entity/History_entity.aod
@@ -15,17 +15,17 @@
   <entityFields>
     <entityField>
       <name>DIRECTION</name>
+      <title>Direction</title>
       <tableName>HISTORY</tableName>
       <columnName>DIRECTION</columnName>
-      <caption>Direction</caption>
       <possibleItemsProcess>%aditoprj%/entity/History_entity/entityfields/direction/possibleItemsProcess.js</possibleItemsProcess>
       <groupable v="true" />
     </entityField>
     <entityField>
       <name>ENTRYDATE</name>
+      <title>Entrydate</title>
       <tableName>HISTORY</tableName>
       <columnName>ENTRYDATE</columnName>
-      <caption>Entrydate</caption>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
       <mandatory v="true" />
@@ -38,26 +38,26 @@
     </entityField>
     <entityField>
       <name>INFO</name>
+      <title>Description</title>
       <tableName>HISTORY</tableName>
       <columnName>INFO</columnName>
-      <caption>Description</caption>
       <contentType>HTML</contentType>
       <mandatory v="false" />
     </entityField>
     <entityField>
       <name>MEDIUM</name>
+      <title>Medium</title>
       <tableName>HISTORY</tableName>
       <columnName>MEDIUM</columnName>
-      <caption>Medium</caption>
       <mandatory v="false" />
       <possibleItemsProcess>%aditoprj%/entity/History_entity/entityfields/medium/possibleItemsProcess.js</possibleItemsProcess>
       <groupable v="true" />
     </entityField>
     <entityField>
       <name>SUBJECT</name>
+      <title>Subject</title>
       <tableName>HISTORY</tableName>
       <columnName>SUBJECT</columnName>
-      <caption>Subject</caption>
       <mandatory v="true" />
       <groupable v="true" />
     </entityField>
diff --git a/entity/Pers_entity/Pers_entity.aod b/entity/Pers_entity/Pers_entity.aod
index 62458b8b8a9d899383163aacb719aff011ead42b..a429694f353c5f4d2140f0cbed479d380a4b060b 100644
--- a/entity/Pers_entity/Pers_entity.aod
+++ b/entity/Pers_entity/Pers_entity.aod
@@ -109,6 +109,7 @@
       <name>OrgId_param</name>
       <expose v="true" />
       <triggerRecalculation v="true" />
+      <mandatory v="false" />
       <description>PARAMETER</description>
     </entityParameter>
     <entityField>
@@ -430,6 +431,25 @@
         </entityParameter>
       </children>
     </entityOutgoingField>
+    <entityIncomingField>
+      <name>PersSalesprojectMember_dfi</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <dependencies>
+        <entityDependency>
+          <name>9f55eb02-bb8d-4472-9332-3b99049f7d1b</name>
+          <entityName>SalesprojectMember_entity</entityName>
+          <fieldName>PersSalesprojectMember_dfo</fieldName>
+          <isOutgoing v="false" />
+        </entityDependency>
+      </dependencies>
+    </entityIncomingField>
+    <entityParameter>
+      <name>RelationId_param</name>
+      <expose v="true" />
+      <triggerRecalculation v="true" />
+      <mandatory v="false" />
+      <description>PARAMETER</description>
+    </entityParameter>
   </entityFields>
   <linkInformation>
     <linkInformation>
diff --git a/entity/Pers_entity/conditionProcess.js b/entity/Pers_entity/conditionProcess.js
index 78fee76c103d7f1d46fd25357e66f7e6eac32fc8..2ea8a7c3027c2e838590a98feddd82967307b262 100644
--- a/entity/Pers_entity/conditionProcess.js
+++ b/entity/Pers_entity/conditionProcess.js
@@ -4,6 +4,7 @@ import("Sql_lib");
 
 var cond = new SqlCondition();
 cond.andPrepareVars("RELATION.ORG_ID", "$param.OrgId_param");
+cond.andPrepareVars("PERS.RELATION_ID", "$param.RelationId_param");
 
 //TODO; add OBJECT_ID (probably another param)
 //TODO: use a preparedCondition when available
diff --git a/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod b/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod
index 226378befcfc74e991866049beb936bbd3045293..995dfc78f8457754fc14b757ff255d005b064dae 100644
--- a/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod
+++ b/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod
@@ -4,7 +4,6 @@
   <title>Competition</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <recordContainerType>DB</recordContainerType>
-  <caption>Competition</caption>
   <alias>Data_alias</alias>
   <conditionProcess>%aditoprj%/entity/SalesprojectCompetition_entity/conditionProcess.js</conditionProcess>
   <entityFields>
@@ -13,9 +12,9 @@
     </entityIncomingField>
     <entityField>
       <name>DATE_CANCELLED</name>
+      <title>Excreted</title>
       <tableName>SALESPROJECT_COMPETITION</tableName>
       <columnName>DATE_CANCELLED</columnName>
-      <caption>Excreted</caption>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
     </entityField>
@@ -33,22 +32,22 @@
     </entityField>
     <entityField>
       <name>INFO</name>
+      <title>Info</title>
       <tableName>SALESPROJECT_COMPETITION</tableName>
       <columnName>INFO</columnName>
-      <caption>Info</caption>
     </entityField>
     <entityField>
       <name>ORGNAME</name>
+      <title>Competitor</title>
       <tableName>SALESPROJECT_COMPETITION</tableName>
       <columnName>ORGNAME</columnName>
-      <caption>Competitor</caption>
       <mandatory v="true" />
     </entityField>
     <entityField>
       <name>REASON</name>
+      <title>Reason</title>
       <tableName>SALESPROJECT_COMPETITION</tableName>
       <columnName>REASON</columnName>
-      <caption>Reason</caption>
       <possibleItemsProcess>%aditoprj%/entity/SalesprojectCompetition_entity/entityfields/reason/possibleItemsProcess.js</possibleItemsProcess>
       <onValidation>%aditoprj%/entity/SalesprojectCompetition_entity/entityfields/reason/onValidation.js</onValidation>
     </entityField>
@@ -67,9 +66,9 @@
     </entityField>
     <entityField>
       <name>STATUS</name>
+      <title>State</title>
       <tableName>SALESPROJECT_COMPETITION</tableName>
       <columnName>STATUS</columnName>
-      <caption>State</caption>
       <mandatory v="true" />
       <possibleItemsProcess>%aditoprj%/entity/SalesprojectCompetition_entity/entityfields/status/possibleItemsProcess.js</possibleItemsProcess>
     </entityField>
diff --git a/entity/SalesprojectCycle_entity/SalesprojectCycle_entity.aod b/entity/SalesprojectCycle_entity/SalesprojectCycle_entity.aod
index 45ede6fc876d50776737c1972cee4b99189605ce..9befac9617426bb9818265e19b258bda0daf9b73 100644
--- a/entity/SalesprojectCycle_entity/SalesprojectCycle_entity.aod
+++ b/entity/SalesprojectCycle_entity/SalesprojectCycle_entity.aod
@@ -13,6 +13,7 @@
     </entityIncomingField>
     <entityField>
       <name>DATE_END</name>
+      <title>End date</title>
       <tableName>SALESPROJECT_CYCLE</tableName>
       <columnName>DATE_END</columnName>
       <contentType>DATE</contentType>
@@ -20,9 +21,9 @@
     </entityField>
     <entityField>
       <name>DATE_START</name>
+      <title>Date</title>
       <tableName>SALESPROJECT_CYCLE</tableName>
       <columnName>DATE_START</columnName>
-      <caption>Date</caption>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
     </entityField>
@@ -45,9 +46,9 @@
     </entityField>
     <entityField>
       <name>VALUE</name>
+      <title>Milestone</title>
       <tableName>SALESPROJECT_CYCLE</tableName>
       <columnName>VALUE</columnName>
-      <caption>Milestone</caption>
       <possibleItemsProcess>%aditoprj%/entity/SalesprojectCycle_entity/entityfields/value/possibleItemsProcess.js</possibleItemsProcess>
       <valueProcess>%aditoprj%/entity/SalesprojectCycle_entity/entityfields/value/valueProcess.js</valueProcess>
     </entityField>
diff --git a/entity/SalesprojectCycle_entity/conditionProcess.js b/entity/SalesprojectCycle_entity/conditionProcess.js
index 46b431f0896e78b69e2825a2933904b08ca79929..4048fcb70b060f211a8f89dfa13360b3a08ffd6a 100644
--- a/entity/SalesprojectCycle_entity/conditionProcess.js
+++ b/entity/SalesprojectCycle_entity/conditionProcess.js
@@ -1,8 +1,11 @@
 import("system.db");
 import("system.result");
+import("system.vars");
+import("system.logging");
 import("Sql_lib");
 
 var cond = new SqlCondition();
+logging.log(vars.get("$param.SalesprojectId_param"))
 cond.andPrepareVars("SALESPROJECT_CYCLE.SALESPROJECT_ID", "$param.SalesprojectId_param");
 
 //TODO: use a preparedCondition when available
diff --git a/entity/SalesprojectForecast_entity/SalesprojectForecast_entity.aod b/entity/SalesprojectForecast_entity/SalesprojectForecast_entity.aod
index da476e6a9a7b3d81cb757053dd3d19ab61807966..666bbcb198e15c9da1498631a18a2a02f3579408 100644
--- a/entity/SalesprojectForecast_entity/SalesprojectForecast_entity.aod
+++ b/entity/SalesprojectForecast_entity/SalesprojectForecast_entity.aod
@@ -25,24 +25,24 @@
     </entityField>
     <entityField>
       <name>DATE_START</name>
+      <title>Planned</title>
       <tableName>SALESPROJECT_FORECAST</tableName>
       <columnName>DATE_START</columnName>
-      <caption>Planned</caption>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
     </entityField>
     <entityField>
       <name>GROUPCODE</name>
+      <title>Product</title>
       <tableName>SALESPROJECT_FORECAST</tableName>
       <columnName>GROUPCODE</columnName>
-      <caption>Product</caption>
       <possibleItemsProcess>%aditoprj%/entity/SalesprojectForecast_entity/entityfields/groupcode/possibleItemsProcess.js</possibleItemsProcess>
     </entityField>
     <entityField>
       <name>INFO</name>
+      <title>Info</title>
       <tableName>SALESPROJECT_FORECAST</tableName>
       <columnName>INFO</columnName>
-      <caption>Info</caption>
     </entityField>
     <entityField>
       <name>RELATION_ID</name>
@@ -82,7 +82,7 @@
       <name>VOLUME</name>
       <tableName>SALESPROJECT_FORECAST</tableName>
       <columnName>VOLUME</columnName>
-      <captionProcess>%aditoprj%/entity/SalesprojectForecast_entity/entityfields/volume/captionProcess.js</captionProcess>
+      <titleProcess>%aditoprj%/entity/SalesprojectForecast_entity/entityfields/volume/titleProcess.js</titleProcess>
     </entityField>
     <entityParameter>
       <name>SalesprojectId_param</name>
diff --git a/entity/SalesprojectForecast_entity/entityfields/volume/captionProcess.js b/entity/SalesprojectForecast_entity/entityfields/volume/titleProcess.js
similarity index 100%
rename from entity/SalesprojectForecast_entity/entityfields/volume/captionProcess.js
rename to entity/SalesprojectForecast_entity/entityfields/volume/titleProcess.js
diff --git a/entity/SalesprojectMember_entity/SalesprojectMember_entity.aod b/entity/SalesprojectMember_entity/SalesprojectMember_entity.aod
index 5e3dadd566edcdf295147c6d88e61202f9ac14c5..40e0785330b051575356075b28fe32515e680153 100644
--- a/entity/SalesprojectMember_entity/SalesprojectMember_entity.aod
+++ b/entity/SalesprojectMember_entity/SalesprojectMember_entity.aod
@@ -24,8 +24,10 @@
     </entityField>
     <entityField>
       <name>RELATION_ID</name>
+      <title>Member</title>
       <tableName>SALESPROJECT_MEMBER</tableName>
       <columnName>RELATION_ID</columnName>
+      <state>READONLY</state>
     </entityField>
     <entityField>
       <name>SALESPROJECT_ID</name>
@@ -41,8 +43,10 @@
     </entityField>
     <entityField>
       <name>SALESPROJECT_ROLE</name>
+      <title>Role</title>
       <tableName>SALESPROJECT_MEMBER</tableName>
       <columnName>SALESPROJECT_ROLE</columnName>
+      <possibleItemsProcess>%aditoprj%/entity/SalesprojectMember_entity/entityfields/salesproject_role/possibleItemsProcess.js</possibleItemsProcess>
     </entityField>
     <entityField>
       <name>USER_EDIT</name>
@@ -75,38 +79,73 @@
     </entityParameter>
     <entityField>
       <name>ORG_NAME</name>
+      <title>Company</title>
       <tableName>ORG</tableName>
       <columnName>NAME</columnName>
+      <state>READONLY</state>
     </entityField>
     <entityField>
       <name>ORG_ORGID</name>
       <tableName>ORG</tableName>
       <columnName>ORGID</columnName>
+      <state>READONLY</state>
     </entityField>
     <entityField>
-      <name>FIRSTNAME</name>
+      <name>PERS_FIRSTNAME</name>
+      <title>Firstname</title>
       <tableName>PERS</tableName>
       <columnName>FIRSTNAME</columnName>
+      <state>READONLY</state>
     </entityField>
     <entityField>
-      <name>LASTNAME</name>
+      <name>PERS_LASTNAME</name>
+      <title>Lastname</title>
       <tableName>PERS</tableName>
       <columnName>LASTNAME</columnName>
+      <state>READONLY</state>
     </entityField>
     <entityField>
       <name>PERS_PERSID</name>
       <tableName>PERS</tableName>
       <columnName>PERSID</columnName>
+      <state>READONLY</state>
     </entityField>
     <entityField>
       <name>PERS_SALUTATION</name>
       <tableName>PERS</tableName>
       <columnName>SALUTATION</columnName>
+      <state>READONLY</state>
     </entityField>
     <entityField>
       <name>PERS_TITLE</name>
+      <title>title</title>
       <tableName>PERS</tableName>
       <columnName>TITLE</columnName>
+      <state>READONLY</state>
+    </entityField>
+    <entityOutgoingField>
+      <name>PersSalesprojectMember_dfo</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Pers_entity</entityName>
+        <fieldName>PersSalesprojectMember_dfi</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>RelationId_param</name>
+          <code>%aditoprj%/entity/SalesprojectMember_entity/entityfields/perssalesprojectmember_dfo/children/relationid_param/code.js</code>
+        </entityParameter>
+      </children>
+    </entityOutgoingField>
+    <entityField>
+      <name>PERS_FULL_NAME</name>
+      <title>Name</title>
+      <linkedContext>Pers_context</linkedContext>
+      <outgoingField>PersSalesprojectMember_dfo</outgoingField>
+      <state>READONLY</state>
+      <valueProcess>%aditoprj%/entity/SalesprojectMember_entity/entityfields/pers_full_name/valueProcess.js</valueProcess>
+      <fieldIdProcess>%aditoprj%/entity/SalesprojectMember_entity/entityfields/pers_full_name/fieldIdProcess.js</fieldIdProcess>
     </entityField>
   </entityFields>
   <linkInformation>
diff --git a/entity/SalesprojectMember_entity/entityfields/pers_full_name/fieldIdProcess.js b/entity/SalesprojectMember_entity/entityfields/pers_full_name/fieldIdProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9146e0f6dde085619aae9f38397e04418b38110d
--- /dev/null
+++ b/entity/SalesprojectMember_entity/entityfields/pers_full_name/fieldIdProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.getString("$field.RELATION_ID"));
\ No newline at end of file
diff --git a/entity/SalesprojectMember_entity/entityfields/pers_full_name/valueProcess.js b/entity/SalesprojectMember_entity/entityfields/pers_full_name/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..ca036ffd5a295d82f15524afcf18dbf97a4965bc
--- /dev/null
+++ b/entity/SalesprojectMember_entity/entityfields/pers_full_name/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.PERS_FIRSTNAME") + " " + vars.get("$field.PERS_LASTNAME") );
\ No newline at end of file
diff --git a/entity/SalesprojectMember_entity/entityfields/perssalesprojectmember_dfo/children/relationid_param/code.js b/entity/SalesprojectMember_entity/entityfields/perssalesprojectmember_dfo/children/relationid_param/code.js
new file mode 100644
index 0000000000000000000000000000000000000000..3f0b3946afc5e8c9069e02de42cb104840632a39
--- /dev/null
+++ b/entity/SalesprojectMember_entity/entityfields/perssalesprojectmember_dfo/children/relationid_param/code.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("system.vars");
+
+result.string(vars.getString("$field.RELATION_ID"));
\ No newline at end of file
diff --git a/entity/SalesprojectMember_entity/entityfields/salesproject_role/possibleItemsProcess.js b/entity/SalesprojectMember_entity/entityfields/salesproject_role/possibleItemsProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..708bd325e71f260da56a43782b76b3130e065137
--- /dev/null
+++ b/entity/SalesprojectMember_entity/entityfields/salesproject_role/possibleItemsProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Keyword_lib");
+
+var kwdUtils, items;
+
+kwdUtils = new KeywordUtils();
+items = kwdUtils.getStandardArray("SALESPROJECT.ROLE");
+result.object(items);
\ No newline at end of file
diff --git a/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod b/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod
index 8aed5f611865a79f8a77efde4b64219ddd30131b..38e1fb0491845fd12fcbd343569b282aa2eb65b8 100644
--- a/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod
+++ b/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod
@@ -44,17 +44,17 @@
     </entityField>
     <entityField>
       <name>ENTRYDATE</name>
+      <title>Entrydate</title>
       <tableName>SALESPROJECT_SOURCE</tableName>
       <columnName>ENTRYDATE</columnName>
-      <caption>Entrydate</caption>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
     </entityField>
     <entityField>
       <name>INFO</name>
+      <title>Info</title>
       <tableName>SALESPROJECT_SOURCE</tableName>
       <columnName>INFO</columnName>
-      <caption>Info</caption>
     </entityField>
     <entityField>
       <name>SALESPROJECT_ID</name>
@@ -70,9 +70,9 @@
     </entityField>
     <entityField>
       <name>SOURCE</name>
+      <title>Source</title>
       <tableName>SALESPROJECT_SOURCE</tableName>
       <columnName>SOURCE</columnName>
-      <caption>Source</caption>
       <possibleItemsProcess>%aditoprj%/entity/SalesprojectSource_entity/entityfields/source/possibleItemsProcess.js</possibleItemsProcess>
     </entityField>
     <entityField>
diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod
index d466957d7cbadb4ad030f5696006e068b626c542..91fa179c02f31386c04e75c8c5fbb2d44f319364 100644
--- a/entity/Salesproject_entity/Salesproject_entity.aod
+++ b/entity/Salesproject_entity/Salesproject_entity.aod
@@ -5,10 +5,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <recordContainerType>DB</recordContainerType>
   <caption>Salesproject</caption>
-  <onValidation>%aditoprj%/entity/Salesproject_entity/onValidation.js</onValidation>
-  <afterOperatingState>%aditoprj%/entity/Salesproject_entity/afterOperatingState.js</afterOperatingState>
   <iconId>VAADIN:FILTER</iconId>
   <alias>Data_alias</alias>
+  <onDBInsert>%aditoprj%/entity/Salesproject_entity/onDBInsert.js</onDBInsert>
   <entityFields>
     <entityIncomingField>
       <name>#INCOMING</name>
@@ -30,18 +29,18 @@
     </entityField>
     <entityField>
       <name>ENDDATE</name>
+      <title>Rollout</title>
       <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>
+      <title>Estimation</title>
       <tableName>SALESPROJECT</tableName>
       <columnName>ESTIMATION</columnName>
-      <caption>Estimation</caption>
       <possibleItemsProcess>%aditoprj%/entity/Salesproject_entity/entityfields/estimation/possibleItemsProcess.js</possibleItemsProcess>
       <selectionMode>MULTI</selectionMode>
     </entityField>
@@ -52,23 +51,23 @@
     </entityField>
     <entityField>
       <name>INFO</name>
+      <title>Information</title>
       <tableName>SALESPROJECT</tableName>
       <columnName>INFO</columnName>
-      <caption>Information</caption>
     </entityField>
     <entityField>
       <name>PHASE</name>
+      <title>Phase</title>
       <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>
+      <title>Project number</title>
       <tableName>SALESPROJECT</tableName>
       <columnName>PROJECTCODE</columnName>
-      <caption>Project number</caption>
       <state>AUTO</state>
       <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/projectcode/valueProcess.js</valueProcess>
       <onValidation>%aditoprj%/entity/Salesproject_entity/entityfields/projectcode/onValidation.js</onValidation>
@@ -76,41 +75,40 @@
     </entityField>
     <entityField>
       <name>PROJECTTITLE</name>
+      <title>Project title</title>
       <tableName>SALESPROJECT</tableName>
       <columnName>PROJECTTITLE</columnName>
-      <caption>Project title</caption>
       <mandatory v="true" />
     </entityField>
     <entityField>
       <name>RELATION_ID</name>
+      <title>Company</title>
       <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>
+      <title>Project start</title>
       <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>
+      <name>STATE</name>
+      <title>Status</title>
       <tableName>SALESPROJECT</tableName>
-      <columnName>STATUS</columnName>
-      <caption>Status</caption>
+      <columnName>STATE</columnName>
       <mandatory v="true" />
-      <possibleItemsProcess>%aditoprj%/entity/Salesproject_entity/entityfields/status/possibleItemsProcess.js</possibleItemsProcess>
+      <possibleItemsProcess>%aditoprj%/entity/Salesproject_entity/entityfields/state/possibleItemsProcess.js</possibleItemsProcess>
     </entityField>
     <entityField>
       <name>USER_EDIT</name>
@@ -126,9 +124,9 @@
     </entityField>
     <entityField>
       <name>VOLUME</name>
+      <title>Volume</title>
       <tableName>SALESPROJECT</tableName>
       <columnName>VOLUME</columnName>
-      <caption></caption>
     </entityField>
     <entityOutgoingField>
       <name>SalesprojectOrg_dfo</name>
@@ -141,15 +139,16 @@
     </entityOutgoingField>
     <entityField>
       <name>PROBABILITY</name>
+      <title>Probability</title>
       <tableName>SALESPROJECT</tableName>
       <columnName>PROBABILITY</columnName>
-      <caption></caption>
     </entityField>
     <entityFieldGroup>
       <name>PROBABILITY_DISPLAY_fieldGroup</name>
       <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/probability_display_fieldgroup/valueProcess.js</valueProcess>
+      <title>Probability</title>
       <description>FIELDGROUP</description>
-      <caption>Probability</caption>
+      <caption></caption>
       <fields>
         <element>PROBABILITY</element>
       </fields>
@@ -157,8 +156,8 @@
     <entityFieldGroup>
       <name>VOLUME_DISPLAY_fieldGroup</name>
       <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/volume_display_fieldgroup/valueProcess.js</valueProcess>
+      <title>Volume</title>
       <description>FIELDGROUP</description>
-      <caption>Volume</caption>
       <fields>
         <element>VOLUME</element>
       </fields>
diff --git a/entity/Salesproject_entity/entityfields/projectcode/onValidation.js b/entity/Salesproject_entity/entityfields/projectcode/onValidation.js
index 811153527dd222121625672a171eb95cb835a990..d98945cc17aabeb18d7213d3ebb8e6c408d0e6ac 100644
--- a/entity/Salesproject_entity/entityfields/projectcode/onValidation.js
+++ b/entity/Salesproject_entity/entityfields/projectcode/onValidation.js
@@ -4,10 +4,8 @@ import("system.neon");
 import("Salesproject_lib");
 import("Util_lib");
 
-var SalesprojectUtils = new SalesprojectUtils();
-
 if( vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW
-    && !SalesprojectUtils.validateProjectNumber(ProcessHandlingUtil.getOnValidationValue(vars.get("$field.PROJECTCODE"))) )
+    && !Salesproject.validateProjectNumber(ProcessHandlingUtil.getOnValidationValue(vars.get("$field.PROJECTCODE"))) )
 {
-    vars.set( "$field.PROJECTCODE", SalesprojectUtils.getNextProjectNumber().toString("1 = 1") );
+    vars.set( "$field.PROJECTCODE", Salesproject.getNextProjectNumber().toString("1 = 1") );
 }
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/projectcode/valueProcess.js b/entity/Salesproject_entity/entityfields/projectcode/valueProcess.js
index ae603c5b65c7d5a626ec4896db39c8e1fecfdeb8..140b1f23cde52ffcef0e9ccc4b9ecb44505919c4 100644
--- a/entity/Salesproject_entity/entityfields/projectcode/valueProcess.js
+++ b/entity/Salesproject_entity/entityfields/projectcode/valueProcess.js
@@ -4,8 +4,6 @@ import("system.neon");
 import("Salesproject_lib");
 
 if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
-{
-    var SalesprojectUtils = new SalesprojectUtils();
-    
-    result.string( SalesprojectUtils.getNextProjectNumber() );
+{    
+    result.string( Salesproject.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
deleted file mode 100644
index 5be18c39832eee52e38b7147961d7db4bab5a588..0000000000000000000000000000000000000000
--- a/entity/Salesproject_entity/entityfields/salesprojectid/valueProcess.js
+++ /dev/null
@@ -1,7 +0,0 @@
-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/status/possibleItemsProcess.js b/entity/Salesproject_entity/entityfields/state/possibleItemsProcess.js
similarity index 100%
rename from entity/Salesproject_entity/entityfields/status/possibleItemsProcess.js
rename to entity/Salesproject_entity/entityfields/state/possibleItemsProcess.js
diff --git a/entity/Salesproject_entity/onDBInsert.js b/entity/Salesproject_entity/onDBInsert.js
new file mode 100644
index 0000000000000000000000000000000000000000..677dab41bf3237f5954d0e635b70896cbd8f3649
--- /dev/null
+++ b/entity/Salesproject_entity/onDBInsert.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("Salesproject_lib");
+
+Salesproject.insertMilestone(vars.getString("$field.SALESPROJECTID"), Salesproject_TYPES.PHASE, vars.get("$field.PHASE"));
+Salesproject.insertMilestone(vars.getString("$field.SALESPROJECTID"), Salesproject_TYPES.STATE, vars.get("$field.STATE"));
\ No newline at end of file
diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
index 87070add17b96cbe6b99106ccfd4db9f472e50e3..c13dae8f9cd2f08a10e524855e18113913dd1f96 100644
--- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
+++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
@@ -669,6 +669,9 @@
     <entry>
       <key>Offeritem</key>
     </entry>
+    <entry>
+      <key>New offer verison</key>
+    </entry>
     <entry>
       <key>ISO3  Code</key>
     </entry>
@@ -948,6 +951,18 @@
     <entry>
       <key>A reason is only possible if a date is given.</key>
     </entry>
+    <entry>
+      <key>Role</key>
+    </entry>
+    <entry>
+      <key>End date</key>
+    </entry>
+    <entry>
+      <key>title</key>
+    </entry>
+    <entry>
+      <key>Documents</key>
+    </entry>
     <entry>
       <key>New offer version</key>
     </entry>
diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
index 8ee67a8d32537f043cbf4b4cf9dfabc816db9b54..8df6141f5806f289396c671a1a7a312ae9adfe9a 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -883,6 +883,10 @@
       <key>Offeritem</key>
       <value>Angebotsposten</value>
     </entry>
+    <entry>
+      <key>New offer verison</key>
+      <value>Neue Angebotsversion</value>
+    </entry>
     <entry>
       <key>ISO3  Code</key>
     </entry>
@@ -1222,6 +1226,19 @@
       <key>A reason is only possible if a date is given.</key>
       <value>Begründung nur bei Ausgeschiedenen Mitbewerbern erlaubt.</value>
     </entry>
+    <entry>
+      <key>Role</key>
+    </entry>
+    <entry>
+      <key>End date</key>
+      <value>Enddatum</value>
+    </entry>
+    <entry>
+      <key>title</key>
+    </entry>
+    <entry>
+      <key>Documents</key>
+    </entry>
     <entry>
       <key>New offer version</key>
       <value>Neue Angebotsversion</value>
diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
index 84522de963f48a710a17128c1172bfa389292d60..112cf9f4b0012ed19c8655e0fb3b660dabed7c32 100644
--- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
+++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
@@ -677,6 +677,9 @@
     <entry>
       <key>Offeritem</key>
     </entry>
+    <entry>
+      <key>New offer verison</key>
+    </entry>
     <entry>
       <key>ISO3  Code</key>
     </entry>
@@ -921,9 +924,6 @@
     <entry>
       <key>Document</key>
     </entry>
-    <entry>
-      <key>New offer version</key>
-    </entry>
     <entry>
       <key>Dateiname</key>
     </entry>
@@ -934,13 +934,13 @@
       <key>Dateityp</key>
     </entry>
     <entry>
-      <key>Copy offer</key>
+      <key>Competition</key>
     </entry>
     <entry>
-      <key>Documents</key>
+      <key>Datum</key>
     </entry>
     <entry>
-      <key>Datum</key>
+      <key>Forecast</key>
     </entry>
     <entry>
       <key>Vorschau</key>
@@ -952,22 +952,25 @@
       <key>Dateigröße</key>
     </entry>
     <entry>
-      <key>Vers. no.</key>
+      <key>Project member</key>
+    </entry>
+    <entry>
+      <key>Member</key>
     </entry>
     <entry>
-      <key>Competition</key>
+      <key>A reason is only possible if a date is given.</key>
     </entry>
     <entry>
-      <key>Forecast</key>
+      <key>Role</key>
     </entry>
     <entry>
-      <key>Project member</key>
+      <key>End date</key>
     </entry>
     <entry>
-      <key>Member</key>
+      <key>title</key>
     </entry>
     <entry>
-      <key>A reason is only possible if a date is given.</key>
+      <key>Documents</key>
     </entry>
     <entry>
       <key>Curr. purchase price</key>
diff --git a/neonContext/SalesprojectCompetition_context/SalesprojectCompetition_context.aod b/neonContext/SalesprojectCompetition_context/SalesprojectCompetition_context.aod
index e2724c490db5a550d4b54319279edf9f2b3118ab..9578e83ae8b172ad0e783d7df92c770e07d55552 100644
--- a/neonContext/SalesprojectCompetition_context/SalesprojectCompetition_context.aod
+++ b/neonContext/SalesprojectCompetition_context/SalesprojectCompetition_context.aod
@@ -4,6 +4,7 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterview>SalesprojectCompetitionFilter_view</filterview>
   <editview>SalesprojectCompetitionEdit_view</editview>
+  <preview>SalesprojectCompetitionPreview_view</preview>
   <entity>SalesprojectCompetition_entity</entity>
   <references>
     <neonViewReference>
@@ -14,5 +15,9 @@
       <name>df710f0b-ed2b-46d1-852d-47ada0b6b8f0</name>
       <view>SalesprojectCompetitionEdit_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>6df65cb7-f8fc-4b6e-963d-df6dde6d523b</name>
+      <view>SalesprojectCompetitionPreview_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/SalesprojectCycle_context/SalesprojectCycle_context.aod b/neonContext/SalesprojectCycle_context/SalesprojectCycle_context.aod
index 6903eab641ea5880e04e91d07acc1377a4afd613..f1613afaa8244b853f63901cb843fe9861bcc490 100644
--- a/neonContext/SalesprojectCycle_context/SalesprojectCycle_context.aod
+++ b/neonContext/SalesprojectCycle_context/SalesprojectCycle_context.aod
@@ -4,6 +4,7 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterview>SalesprojectCycleFilter_view</filterview>
   <editview>SalesprojectCycleEdit_view</editview>
+  <preview>SalesprojectCyclePreview_view</preview>
   <entity>SalesprojectCycle_entity</entity>
   <references>
     <neonViewReference>
@@ -14,5 +15,9 @@
       <name>04073406-1035-4a3b-919b-7e0bfda699e0</name>
       <view>SalesprojectCycleEdit_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>b3a4073e-9431-4de1-a4d5-c9d11a71a214</name>
+      <view>SalesprojectCyclePreview_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/SalesprojectForecast_context/SalesprojectForecast_context.aod b/neonContext/SalesprojectForecast_context/SalesprojectForecast_context.aod
index 3d8e851726cad96a7207546068a58e4559dd1627..2409dba4e4bac7e7bd7aabb6c706e587c7ecd66b 100644
--- a/neonContext/SalesprojectForecast_context/SalesprojectForecast_context.aod
+++ b/neonContext/SalesprojectForecast_context/SalesprojectForecast_context.aod
@@ -4,6 +4,7 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterview>SalesprojectForecastFilter_entity</filterview>
   <editview>SalesprojectForecastEdit_view</editview>
+  <preview>SalesprojectForecastPreview_view</preview>
   <entity>SalesprojectForecast_entity</entity>
   <references>
     <neonViewReference>
@@ -14,5 +15,9 @@
       <name>7cc72509-722b-4d4f-870c-08878129ceb9</name>
       <view>SalesprojectForecastEdit_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>1fe6e10b-52b4-44a4-88d8-9784a967572c</name>
+      <view>SalesprojectForecastPreview_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/SalesprojectMember_context/SalesprojectMember_context.aod b/neonContext/SalesprojectMember_context/SalesprojectMember_context.aod
index 1656a40475f6acedfe2e3dfe78213f34f1b393ee..55c00eebd7e0d53d13bdae74a2a08ced9fecc767 100644
--- a/neonContext/SalesprojectMember_context/SalesprojectMember_context.aod
+++ b/neonContext/SalesprojectMember_context/SalesprojectMember_context.aod
@@ -4,6 +4,7 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterview>SalesprojectMemberFilter_view</filterview>
   <editview>SalesprojectMemberEdit_view</editview>
+  <preview>SalesprojectMemberPreview_view</preview>
   <entity>SalesprojectMember_entity</entity>
   <references>
     <neonViewReference>
@@ -14,5 +15,9 @@
       <name>ebef21a3-c0e1-4333-b769-eb967cb4099b</name>
       <view>SalesprojectMemberEdit_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>dc850b82-3c28-4626-a0fd-a856c624c2e3</name>
+      <view>SalesprojectMemberPreview_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/SalesprojectSource_context/SalesprojectSource_context.aod b/neonContext/SalesprojectSource_context/SalesprojectSource_context.aod
index 16e0b2dbf3aed5e8ebc3309f4aa394128efc48bf..12b145a8fe72bb4395b65c868a40609e68b13e89 100644
--- a/neonContext/SalesprojectSource_context/SalesprojectSource_context.aod
+++ b/neonContext/SalesprojectSource_context/SalesprojectSource_context.aod
@@ -4,6 +4,7 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterview>SalesprojectSourceFilter_view</filterview>
   <editview>SalesprojectSourceEdit_view</editview>
+  <preview>SalesprojectSourcePreview_view</preview>
   <entity>SalesprojectSource_entity</entity>
   <references>
     <neonViewReference>
@@ -14,5 +15,9 @@
       <name>56784b63-0558-433d-94cc-30170b64c9ca</name>
       <view>SalesprojectSourceEdit_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>231302ed-b2a5-4ccd-bd08-e6a536efbc58</name>
+      <view>SalesprojectSourcePreview_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonView/SalesprojectCompetitionPreview_view/SalesprojectCompetitionPreview_view.aod b/neonView/SalesprojectCompetitionPreview_view/SalesprojectCompetitionPreview_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..ac49613c7c4440231b667717f01d111225618f09
--- /dev/null
+++ b/neonView/SalesprojectCompetitionPreview_view/SalesprojectCompetitionPreview_view.aod
@@ -0,0 +1,36 @@
+<?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>SalesprojectCompetitionPreview_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <cardViewTemplate>
+      <name>SalesprojectCompetitionHeader_template</name>
+      <titleField>ORGNAME</titleField>
+      <descriptionField>INFO</descriptionField>
+      <entityField>#ENTITY</entityField>
+    </cardViewTemplate>
+    <genericViewTemplate>
+      <name>SalesprojectCompetitionInfo_template</name>
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>33d74022-ccf9-47e7-8e24-6a1cedb1274e</name>
+          <entityField>STATUS</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>0519da18-4079-422a-9b65-9ab6dff01f1a</name>
+          <entityField>DATE_CANCELLED</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>1c73d653-0734-4fc7-9965-5b4f35288e02</name>
+          <entityField>REASON</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/SalesprojectCyclePreview_view/SalesprojectCyclePreview_view.aod b/neonView/SalesprojectCyclePreview_view/SalesprojectCyclePreview_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..6aa10e24b4cb6488b7aea0e38b3acf276281cf16
--- /dev/null
+++ b/neonView/SalesprojectCyclePreview_view/SalesprojectCyclePreview_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>SalesprojectCyclePreview_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <cardViewTemplate>
+      <name>SalesprojectCycleHeader_template</name>
+      <titleField>VALUE</titleField>
+      <descriptionField>DATE_START</descriptionField>
+      <entityField>#ENTITY</entityField>
+    </cardViewTemplate>
+    <genericViewTemplate>
+      <name>SalesprojectForecastInfo_template</name>
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>e77b903f-a06f-4437-9b25-693b6f2aa45f</name>
+          <entityField>DATE_END</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod b/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod
index 0c2a3878742a2492598a3e0a9d84f84658ce9baa..f0279b641d3f285406c1cfd9cecf4a9d427bb6cf 100644
--- a/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod
+++ b/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod
@@ -30,8 +30,8 @@
           <entityField>INFO</entityField>
         </entityFieldLink>
         <entityFieldLink>
-          <name>218a0751-9a53-4639-9d79-f9463f399b93</name>
-          <entityField>STATUS</entityField>
+          <name>426a20c1-5d79-417b-bab1-d3100fabb25b</name>
+          <entityField>STATE</entityField>
         </entityFieldLink>
         <entityFieldLink>
           <name>c00b2121-c44d-41a1-8c32-e2339b4dd234</name>
diff --git a/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod
index ea47ded94475100f9c2fe86d9c88c01b66cd38dd..bf2e8d40d23327d53be910136d3b902220d2adb8 100644
--- a/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod
+++ b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod
@@ -38,7 +38,7 @@
         </neonTableColumn>
         <neonTableColumn>
           <name>52a851b0-9059-4d57-8ff5-335c819359e8</name>
-          <entityField>STATUS</entityField>
+          <entityField>STATE</entityField>
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
diff --git a/neonView/SalesprojectForecastPreview_view/SalesprojectForecastPreview_view.aod b/neonView/SalesprojectForecastPreview_view/SalesprojectForecastPreview_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..1c6f48dca56ce90cb4c6353cd53033502bb01dde
--- /dev/null
+++ b/neonView/SalesprojectForecastPreview_view/SalesprojectForecastPreview_view.aod
@@ -0,0 +1,32 @@
+<?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>SalesprojectForecastPreview_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <cardViewTemplate>
+      <name>SalesprojectForecastHeader_template</name>
+      <titleField>TYPE</titleField>
+      <descriptionField>DATE_START</descriptionField>
+      <entityField>#ENTITY</entityField>
+    </cardViewTemplate>
+    <genericViewTemplate>
+      <name>SalesprojectForecastInfo_template</name>
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>796d2325-8684-4723-b376-262074268f4c</name>
+          <entityField>VOLUME</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>745f1f28-49a0-4c35-9c1a-e442d15716dc</name>
+          <entityField>INFO</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/SalesprojectMemberFilter_view/SalesprojectMemberFilter_view.aod b/neonView/SalesprojectMemberFilter_view/SalesprojectMemberFilter_view.aod
index 30b525ebd49092cb0e1695a0b71709fc372cea80..d35e9aed4e5cad8506c409178127ffb8e734b30c 100644
--- a/neonView/SalesprojectMemberFilter_view/SalesprojectMemberFilter_view.aod
+++ b/neonView/SalesprojectMemberFilter_view/SalesprojectMemberFilter_view.aod
@@ -17,12 +17,8 @@
           <entityField>ORG_NAME</entityField>
         </neonTableColumn>
         <neonTableColumn>
-          <name>4d642cf9-c660-40f4-b320-902821118d41</name>
-          <entityField>FIRSTNAME</entityField>
-        </neonTableColumn>
-        <neonTableColumn>
-          <name>10c8d22a-bf8b-4d20-9502-4d6c506afb37</name>
-          <entityField>LASTNAME</entityField>
+          <name>59e6aea1-9752-48b5-9d91-43edd0c1d670</name>
+          <entityField>PERS_FULL_NAME</entityField>
         </neonTableColumn>
         <neonTableColumn>
           <name>bea82980-0639-405a-ab3f-92e45f97090e</name>
diff --git a/neonView/SalesprojectMemberPreview_view/SalesprojectMemberPreview_view.aod b/neonView/SalesprojectMemberPreview_view/SalesprojectMemberPreview_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..d2f08e2676ee36baee0f3dac9b79ecab3fde478b
--- /dev/null
+++ b/neonView/SalesprojectMemberPreview_view/SalesprojectMemberPreview_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>SalesprojectMemberPreview_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <cardViewTemplate>
+      <name>SalesprojectMemberHeader_template</name>
+      <titleField>PERS_FULL_NAME</titleField>
+      <descriptionField>SALESPROJECT_ROLE</descriptionField>
+      <entityField>#ENTITY</entityField>
+    </cardViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod b/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod
index 27bb4a2a8cff081ad8342f9ecc11b42028ad8b69..6ede57f8171314d4195d611c4c425f4556b5cfd1 100644
--- a/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod
+++ b/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod
@@ -28,8 +28,8 @@
           <entityField>INFO</entityField>
         </entityFieldLink>
         <entityFieldLink>
-          <name>9fcb6c9d-1dbb-4246-9a2b-4c430d9664a0</name>
-          <entityField>STATUS</entityField>
+          <name>4e3d7a37-f55b-4c18-9ba1-ab4ab0bbb442</name>
+          <entityField>STATE</entityField>
         </entityFieldLink>
         <entityFieldLink>
           <name>ff0dcd67-56ec-4db1-8c53-531f22fda716</name>
diff --git a/neonView/SalesprojectSourcePreview_view/SalesprojectSourcePreview_view.aod b/neonView/SalesprojectSourcePreview_view/SalesprojectSourcePreview_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..b891957e23a0f33f6718a128f81fc9636dab8a1f
--- /dev/null
+++ b/neonView/SalesprojectSourcePreview_view/SalesprojectSourcePreview_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>SalesprojectSourcePreview_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <cardViewTemplate>
+      <name>SalesprojectSourceHeader_template</name>
+      <titleField>SOURCE</titleField>
+      <descriptionField>ENTRYDATE</descriptionField>
+      <entityField>#ENTITY</entityField>
+    </cardViewTemplate>
+    <genericViewTemplate>
+      <name>SalesprojectSourceInfo_template</name>
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>e21bd1a0-368c-4842-bbfb-23db50c20ef7</name>
+          <entityField>INFO</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/others/db_changes/data/example_salesproject/SALESPROJECT_gfk.xml b/others/db_changes/data/example_salesproject/SALESPROJECT_gfk.xml
index 6d02bf80c05d16e48cb72d948885716e5937fbe9..f806e073779854b827ca680df9693772357dbf57 100644
--- a/others/db_changes/data/example_salesproject/SALESPROJECT_gfk.xml
+++ b/others/db_changes/data/example_salesproject/SALESPROJECT_gfk.xml
@@ -9,7 +9,7 @@
         <column name="PROJECTTITLE" value="GfK"/>
         <column name="RELATION_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
         <column name="INFO" value="evtl. noch mit Berater Müller sprechen, ob ihm bekannt"/>
-        <column name="STATUS" valueNumeric="1"/>
+        <column name="STATE" valueNumeric="1"/>
         <column name="PHASE" valueNumeric="4"/>
         <column name="VOLUME" valueNumeric="15"/>
         <column name="PHASE" valueNumeric="4"/>
diff --git a/others/db_changes/struct/create_salesproject.xml b/others/db_changes/struct/create_salesproject.xml
index 459288a2f41fd75d4893b15fac6425ea05f50856..fa50bd40ff54c395051a1d749addfa016f6f5aa1 100644
--- a/others/db_changes/struct/create_salesproject.xml
+++ b/others/db_changes/struct/create_salesproject.xml
@@ -11,7 +11,7 @@
                 <constraints nullable="false"/>
             </column>  
             <column name="INFO" type="NCLOB"/>
-            <column name="STATUS" type="INTEGER"/>
+            <column name="STATE" type="INTEGER"/>
             <column name="PHASE" type="INTEGER"/>
             <column name="VOLUME" type="NUMERIC(14,2)"/>
             <column name="STARTDATE" type="TIMESTAMP"/>
diff --git a/process/Salesproject_lib/process.js b/process/Salesproject_lib/process.js
index 6f0456ff37736543ef381c5a1af3b2a526432c1a..e3f10b6a49e5053b051b02a90dadc40c94dcf995 100644
--- a/process/Salesproject_lib/process.js
+++ b/process/Salesproject_lib/process.js
@@ -3,31 +3,63 @@ import("system.db");
 import("system.eMath");
 import("Util_lib");
 
-function SalesprojectUtils(){
-    var that = this;
+/**
+*  Types for the milestone.
+*/
+Salesproject_TYPES = {
+    PHASE: "Phase",
+    STATE: "State"
+}
+
+/**
+ * Methods used by the Salesproject.
+ * 
+ * Do not create an instance of this!
+ */
+Salesproject = {
+    
     /**
      * Delivers the next valid project number (has to be unique)
      * 
      * @result {String} next valid project number
      */
-    this.getNextProjectNumber = function(){
+    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
+     * @param {String} projectNumber project number to check
      * 
      * @result {boolean} passed number is valid
      */
-    this.validateProjectNumber = function(pProjectNumber){
+    validateProjectNumber: function(projectNumber) {
         var JdUtils = new JDitoUtils();
-        return JdUtils.validateUniqueNumber(pProjectNumber, "PROJECTCODE", "SALESPROJECT");
-    }
+        return JdUtils.validateUniqueNumber(projectNumber, "PROJECTCODE", "SALESPROJECT");
+    },
     
-    this.getProjectNumberValidationFailString = function(){
-        return translate.text("The project number already exists!");
+    /**
+     * Insert a new milestone.
+     * 
+     * @param {String} ID of the salesproject
+     * @param {TYPES} type type can either be Salesproject_TYPES.PHASE or Salesproject_TYPES.STATE
+     * @param {Integer} value value of the phase or state
+     * 
+     * @result {boolean} true if inserted, else false
+     */
+    insertMilestone: function(salesprojectId, type, value) {
+        if (type == Salesproject_TYPES.PHASE || type == Salesproject_TYPES.STATE) {
+            db.insertData(
+                "SALESPROJECT_CYCLE",
+                ["SALESPROJECT_CYCLEID", "SALESPROJECT_ID", "TYPE", "VALUE", "DATE_START", "USER_NEW", "DATE_NEW"],
+                null,
+                [util.getNewUUID(), salesprojectId, type, value, vars.get("$sys.date"), vars.get("$sys.user"), vars.get("$sys.date")]);
+                
+            return true;
+        }
+        
+        return false;
     }
 }
\ No newline at end of file
diff --git a/process/Util_lib/process.js b/process/Util_lib/process.js
index 9772443a04323ed2ed0b86f19d45f7bbc808cad9..969fe5b2f57169f259666d6e1a2e6f9059d1b40a 100644
--- a/process/Util_lib/process.js
+++ b/process/Util_lib/process.js
@@ -1456,25 +1456,24 @@ function CopyModuleUtils()
 }
 
 /**
- * provides somehow static methods for special handling in JDito-Processes
- * do not create an instance of this
- * @class
- */
-function ProcessHandlingUtil()
-{
+* provides somehow static methods for special handling in JDito-Processes
+* do not create an instance of this
+* @class
+*/
+ProcessHandlingUtil = {
+    
+    /**
+    * In onValidation-Process a local variable called "$local.value" is made available from kernel.
+    * It contains the entered value - the field contains the value only after successfull validation (vars.get("$field.Fieldname")).
+    * The onValidation-Process is running again before saving the entity, at this point there's "$local.value" varialbe no longer available,
+    * but the entered value now is the present one because the field has already been validated before.
+    * Otherwise a "variable not found" error would occur.
+    *
+    * @param {String} pFieldValue req value of the field onValidation-Process is executed ( e.g. vars.get("$field.Fieldname") )
+    * @return {String} Field value for onValidation-Process
+    */
+    getOnValidationValue: function(pFieldValue)
+    {
+        return vars.exists("$local.value") ? vars.get("$local.value") : pFieldValue;
+    }
 }
-
-/**
- * In onValidation-Process a local variable called "$local.value" is made available from kernel. 
- * It contains the entered value - the field contains the value only after successfull validation (vars.get("$field.Fieldname")).
- * The onValidation-Process is running again before saving the entity, at this point there's "$local.value" varialbe no longer available,
- * but the entered value now is the present one because the field has already been validated before.
- * Otherwise a "variable not found" error would occur.
- * 
- * @param {String} pFieldValue req value of the field onValidation-Process is executed ( e.g. vars.get("$field.Fieldname") )
- * @return {String} Field value for onValidation-Process
- */
-ProcessHandlingUtil.getOnValidationValue = function(pFieldValue)
-{
-    return vars.exists("$local.value") ? vars.get("$local.value") : pFieldValue;
-}
\ No newline at end of file
diff --git a/system/default/default.aod b/system/default/default.aod
index 6af409799bfdb9087d5456cd096f1b285a723f99..9adf7ceb8e009d2e52c1f58a6b3eea36f13e7edd 100644
--- a/system/default/default.aod
+++ b/system/default/default.aod
@@ -7,4 +7,5 @@
   <aditoDataPath>$PROJECTHOME/data</aditoDataPath>
   <loginUser>Admin</loginUser>
   <loginPassword>a</loginPassword>
+  <enableJDitoDebug v="true" />
 </system>