diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
index 3c8458d4e012e9b23427b7f7c9214c647d75e491..d507d0d138a404daf59354d1e1a1beb40fe0da7c 100644
--- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod
+++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
@@ -367,6 +367,12 @@
           <fieldName>KeywordContactStates</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>740a9696-d394-48ea-bcbf-a5484a093bde</name>
+          <entityName>SalesprojectMilestone_entity</entityName>
+          <fieldName>Keywords</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
diff --git a/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod b/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod
index 37c61c5ea46125ee67b5ebf02e104f3a5d60582f..96024ecc36eda176ee34af637cac7dcbfe19e7a6 100644
--- a/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod
+++ b/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod
@@ -25,23 +25,26 @@
     </entityField>
     <entityField>
       <name>SALESPROJECT_MILESTONEID</name>
+      <searchable v="false" />
       <valueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/salesproject_milestoneid/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>SALESPROJECT_ID</name>
+      <searchable v="false" />
       <valueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/salesproject_id/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>TYPE</name>
       <title>Type</title>
       <mandatory v="true" />
-      <possibleItemsProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/type/possibleItemsProcess.js</possibleItemsProcess>
+      <displayValueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/type/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>VALUE</name>
       <title>Milestone</title>
+      <consumer>Keywords</consumer>
       <mandatory v="true" />
-      <possibleItemsProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/value/possibleItemsProcess.js</possibleItemsProcess>
+      <displayValueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/value/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityParameter>
       <name>SalesprojectId_param</name>
@@ -69,6 +72,28 @@
         </entityParameter>
       </children>
     </entityProvider>
+    <entityField>
+      <name>DaysCount</name>
+      <valueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/dayscount/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>PARENT</name>
+    </entityField>
+    <entityConsumer>
+      <name>Keywords</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContainerName_param</name>
+          <valueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/keywords/children/containername_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -76,6 +101,7 @@
       <title></title>
       <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/SalesprojectMilestone_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
+      <orderClauseProcess>%aditoprj%/entity/SalesprojectMilestone_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
       <onDBUpdate>%aditoprj%/entity/SalesprojectMilestone_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <linkInformation>
         <linkInformation>
@@ -111,6 +137,10 @@
           <name>SALESPROJECT_ID.value</name>
           <recordfield>SALESPROJECT_MILESTONE.SALESPROJECT_ID</recordfield>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>PARENT.value</name>
+          <expression>%aditoprj%/entity/SalesprojectMilestone_entity/recordcontainers/db/recordfieldmappings/parent.value/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
diff --git a/entity/SalesprojectMilestone_entity/entityfields/dayscount/valueProcess.js b/entity/SalesprojectMilestone_entity/entityfields/dayscount/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c8db7ec7ba0e820f2e89fa0c6bb48100073811e5
--- /dev/null
+++ b/entity/SalesprojectMilestone_entity/entityfields/dayscount/valueProcess.js
@@ -0,0 +1,15 @@
+import("system.result");
+import("system.vars");
+import("system.datetime");
+
+var start = parseInt(vars.get("$field.DATE_START"));
+var end = vars.get("$field.DATE_END");
+
+if (!end)
+    end = parseInt(vars.get("$sys.date"));
+
+end = parseInt(end);
+
+var oneDay = datetime.ONE_DAY;
+var diffDays = Math.round(Math.abs((end - start)/(oneDay)));
+result.string(diffDays);
\ No newline at end of file
diff --git a/entity/SalesprojectMilestone_entity/entityfields/keywords/children/containername_param/valueProcess.js b/entity/SalesprojectMilestone_entity/entityfields/keywords/children/containername_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..1b532aec63043fba84acf422369129fb9706bc12
--- /dev/null
+++ b/entity/SalesprojectMilestone_entity/entityfields/keywords/children/containername_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.TYPE"));
\ No newline at end of file
diff --git a/entity/SalesprojectMilestone_entity/entityfields/type/displayValueProcess.js b/entity/SalesprojectMilestone_entity/entityfields/type/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..20dd9c7dc7b04a439a16a2a9b4cd833c78f3f964
--- /dev/null
+++ b/entity/SalesprojectMilestone_entity/entityfields/type/displayValueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+
+result.string(KeywordUtils.getTranslatedContainer(vars.get("$field.TYPE")));
\ No newline at end of file
diff --git a/entity/SalesprojectMilestone_entity/entityfields/type/possibleItemsProcess.js b/entity/SalesprojectMilestone_entity/entityfields/type/possibleItemsProcess.js
deleted file mode 100644
index 2adb4c496b729bf420d6139e84527643d452ddc5..0000000000000000000000000000000000000000
--- a/entity/SalesprojectMilestone_entity/entityfields/type/possibleItemsProcess.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("system.result");
-import("system.vars");
-import("Keyword_lib");
-
-var items = LegacyKeywordUtils.getStandardArray("SALESPROJECT.MILESTONE.TYPE");
-result.object(items);
\ No newline at end of file
diff --git a/entity/SalesprojectMilestone_entity/entityfields/value/displayValueProcess.js b/entity/SalesprojectMilestone_entity/entityfields/value/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..5a8a9c5933eb25e1aadbbdc66fa8ac545c1d12b5
--- /dev/null
+++ b/entity/SalesprojectMilestone_entity/entityfields/value/displayValueProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+import("Keyword_lib");
+
+result.string(KeywordUtils.getViewValue(vars.get("$field.TYPE"), vars.get("$field.VALUE")))
\ No newline at end of file
diff --git a/entity/SalesprojectMilestone_entity/entityfields/value/possibleItemsProcess.js b/entity/SalesprojectMilestone_entity/entityfields/value/possibleItemsProcess.js
deleted file mode 100644
index e4b7b91a7c818515f1dd2c40ddcd5024f279f818..0000000000000000000000000000000000000000
--- a/entity/SalesprojectMilestone_entity/entityfields/value/possibleItemsProcess.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import("system.result");
-import("system.vars");
-import("Keyword_lib");
-
-var items, keyword, type;
-
-items = [];
-
-type = vars.getString("$field.TYPE");
-
-// load the possible values based on the type.
-if (type) {
-    keyword = LegacyKeywordUtils.get("SALESPROJECT.MILESTONE.TYPE", type)[2].keyword;
-        
-    if (keyword) {
-        items = LegacyKeywordUtils.getStandardArray(keyword);
-    }
-}
-
-result.object(items);
diff --git a/entity/SalesprojectMilestone_entity/recordcontainers/db/orderClauseProcess.js b/entity/SalesprojectMilestone_entity/recordcontainers/db/orderClauseProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f05ac4a9bca40cede00cff420feb6e4343d2c2cd
--- /dev/null
+++ b/entity/SalesprojectMilestone_entity/recordcontainers/db/orderClauseProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+result.object({
+    "SALESPROJECT_MILESTONE.DATE_END": false
+});
\ No newline at end of file
diff --git a/entity/SalesprojectMilestone_entity/recordcontainers/db/recordfieldmappings/parent.value/expression.js b/entity/SalesprojectMilestone_entity/recordcontainers/db/recordfieldmappings/parent.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..e5c82e9c86a2c395736339cb57fe1e2fede85a2e
--- /dev/null
+++ b/entity/SalesprojectMilestone_entity/recordcontainers/db/recordfieldmappings/parent.value/expression.js
@@ -0,0 +1,2 @@
+import("system.result");
+result.string("''")
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/salesprojectcycles/children/salesprojectid_param/valueProcess.js b/entity/Salesproject_entity/entityfields/salesprojectmilestones/children/salesprojectid_param/valueProcess.js
similarity index 100%
rename from entity/Salesproject_entity/entityfields/salesprojectcycles/children/salesprojectid_param/valueProcess.js
rename to entity/Salesproject_entity/entityfields/salesprojectmilestones/children/salesprojectid_param/valueProcess.js
diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
index 8dd70d03762336957667a24272a3df69a8b89d64..c3800549e1dfb92a34a34c43763dee3df79f5a5b 100644
--- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
+++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
@@ -2841,6 +2841,12 @@
     <entry>
       <key>ObjectRelationType</key>
     </entry>
+    <entry>
+      <key>SalesprojectPhase</key>
+    </entry>
+    <entry>
+      <key>SalesprojectState</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 96fe65066986842adaac2b05409ec910fc8e278f..82da24e117a6d6484a588ee712a1212718c6dd47 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -6,6 +6,10 @@
   <country></country>
   <variant></variant>
   <keyValueMap>
+    <entry>
+      <key>SalesprojectState</key>
+      <value>Status</value>
+    </entry>
     <entry>
       <key>Project management</key>
       <value>Projektmanagement</value>
@@ -46,6 +50,10 @@
       <key>Discount %</key>
       <value>Rabatt %</value>
     </entry>
+    <entry>
+      <key>SalesprojectPhase</key>
+      <value>Phase</value>
+    </entry>
     <entry>
       <key>Email must be unique!</key>
       <value>Die E-Mail-Adresse muss eindeutig sein!</value>
diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
index 9c601e9d5a4b6e3875d9733899cc049e2637d271..39f286488daf433d79cda73c8e35cde72e964853 100644
--- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
+++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
@@ -2872,6 +2872,12 @@
     <entry>
       <key>ObjectRelationType</key>
     </entry>
+    <entry>
+      <key>SalesprojectPhase</key>
+    </entry>
+    <entry>
+      <key>SalesprojectState</key>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
 </language>
diff --git a/neonContext/Salesproject/Salesproject.aod b/neonContext/Salesproject/Salesproject.aod
index 37f47edb8bd6a1b5a0cec9aba63ea5adb853ddf1..a5422082d260a0e651632846afbc6b826ae25ff3 100644
--- a/neonContext/Salesproject/Salesproject.aod
+++ b/neonContext/Salesproject/Salesproject.aod
@@ -26,9 +26,5 @@
       <name>c35cc718-94a8-43cf-afe4-f02d251d4e9f</name>
       <view>SalesprojectEdit_view</view>
     </neonViewReference>
-    <neonViewReference>
-      <name>d7fb7e2b-c932-4b96-be2c-ae5ec3d36beb</name>
-      <view>SalesprojectMilestone_view</view>
-    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/SalesprojectMilestone/SalesprojectMilestone.aod b/neonContext/SalesprojectMilestone/SalesprojectMilestone.aod
index c19b2a85a61c7834216395ae36f9f36a61a0ec9a..3626804e1c32ebcc9f4fbb25529c806c6937080f 100644
--- a/neonContext/SalesprojectMilestone/SalesprojectMilestone.aod
+++ b/neonContext/SalesprojectMilestone/SalesprojectMilestone.aod
@@ -3,23 +3,9 @@
   <name>SalesprojectMilestone</name>
   <description>Milestones of a salesproject</description>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <filterview>SalesprojectMilestoneFilter_view</filterview>
-  <editview>SalesprojectMilestoneEdit_view</editview>
-  <preview>SalesprojectMilestonePreview_view</preview>
+  <filterview>SalesprojectMilestoneChart_view</filterview>
   <entity>SalesprojectMilestone_entity</entity>
   <references>
-    <neonViewReference>
-      <name>5de9785c-92cc-4fe1-ae13-8d65b9a68ce0</name>
-      <view>SalesprojectMilestoneFilter_view</view>
-    </neonViewReference>
-    <neonViewReference>
-      <name>04073406-1035-4a3b-919b-7e0bfda699e0</name>
-      <view>SalesprojectMilestoneEdit_view</view>
-    </neonViewReference>
-    <neonViewReference>
-      <name>b3a4073e-9431-4de1-a4d5-c9d11a71a214</name>
-      <view>SalesprojectMilestonePreview_view</view>
-    </neonViewReference>
     <neonViewReference>
       <name>54bee07a-f45d-458a-bfc6-56ba4992b63d</name>
       <view>SalesprojectMilestoneChart_view</view>
diff --git a/neonView/SalesprojectCycleEdit_view/SalesprojectCycleEdit_view.aod b/neonView/SalesprojectCycleEdit_view/SalesprojectCycleEdit_view.aod
deleted file mode 100644
index 177c2715e8d3291f6b2caf9dd6bb4eca2bd9b447..0000000000000000000000000000000000000000
--- a/neonView/SalesprojectCycleEdit_view/SalesprojectCycleEdit_view.aod
+++ /dev/null
@@ -1,35 +0,0 @@
-<?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.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
-  <name>SalesprojectMilestoneEdit_view</name>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
-  <layout>
-    <boxLayout>
-      <name>layout</name>
-    </boxLayout>
-  </layout>
-  <children>
-    <genericViewTemplate>
-      <name>Edit</name>
-      <editMode v="true" />
-      <entityField>#ENTITY</entityField>
-      <fields>
-        <entityFieldLink>
-          <name>ea501589-7a01-42d3-b0f4-521041554ee7</name>
-          <entityField>DATE_START</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>5df5e35b-4967-4efd-98ac-a57f757e04b4</name>
-          <entityField>DATE_END</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>db138f88-0cc7-42d9-a5d6-2bfc4f13985c</name>
-          <entityField>TYPE</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>71891f0f-e610-4584-8936-f2249e99e7ac</name>
-          <entityField>VALUE</entityField>
-        </entityFieldLink>
-      </fields>
-    </genericViewTemplate>
-  </children>
-</neonView>
diff --git a/neonView/SalesprojectCycleFilter_view/SalesprojectCycleFilter_view.aod b/neonView/SalesprojectCycleFilter_view/SalesprojectCycleFilter_view.aod
deleted file mode 100644
index 2774b5d2994c4eb1f7ed260ea4e4d863f8b4c0fa..0000000000000000000000000000000000000000
--- a/neonView/SalesprojectCycleFilter_view/SalesprojectCycleFilter_view.aod
+++ /dev/null
@@ -1,32 +0,0 @@
-<?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.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
-  <name>SalesprojectMilestoneFilter_view</name>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
-  <filterable v="true" />
-  <layout>
-    <boxLayout>
-      <name>layout</name>
-    </boxLayout>
-  </layout>
-  <children>
-    <tableViewTemplate>
-      <name>Milestones</name>
-      <autoNewRow v="true" />
-      <entityField>#ENTITY</entityField>
-      <columns>
-        <neonTableColumn>
-          <name>1f66befa-a479-437e-b68f-da3cac6fed90</name>
-          <entityField>DATE_START</entityField>
-        </neonTableColumn>
-        <neonTableColumn>
-          <name>5001e853-a479-4e63-a0c6-3021926402b6</name>
-          <entityField>TYPE</entityField>
-        </neonTableColumn>
-        <neonTableColumn>
-          <name>8a4c91ad-a1e4-4a94-acad-de232c7b0be7</name>
-          <entityField>VALUE</entityField>
-        </neonTableColumn>
-      </columns>
-    </tableViewTemplate>
-  </children>
-</neonView>
diff --git a/neonView/SalesprojectCyclePreview_view/SalesprojectCyclePreview_view.aod b/neonView/SalesprojectCyclePreview_view/SalesprojectCyclePreview_view.aod
deleted file mode 100644
index c87d969c7e783a67c5a59460acedbc63322c216e..0000000000000000000000000000000000000000
--- a/neonView/SalesprojectCyclePreview_view/SalesprojectCyclePreview_view.aod
+++ /dev/null
@@ -1,28 +0,0 @@
-<?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.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
-  <name>SalesprojectMilestonePreview_view</name>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
-  <layout>
-    <boxLayout>
-      <name>layout</name>
-    </boxLayout>
-  </layout>
-  <children>
-    <cardViewTemplate>
-      <name>Header</name>
-      <titleField>VALUE</titleField>
-      <descriptionField>DATE_START</descriptionField>
-      <entityField>#ENTITY</entityField>
-    </cardViewTemplate>
-    <genericViewTemplate>
-      <name>Info</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/SalesprojectCycle_view/SalesprojectCycle_view.aod b/neonView/SalesprojectCycle_view/SalesprojectCycle_view.aod
deleted file mode 100644
index 98018a3e81f528bacbddee140cc5e08863f720aa..0000000000000000000000000000000000000000
--- a/neonView/SalesprojectCycle_view/SalesprojectCycle_view.aod
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
-  <name>SalesprojectMilestone_view</name>
-  <title>Milestones</title>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
-  <layout>
-    <boxLayout>
-      <name>layout</name>
-    </boxLayout>
-  </layout>
-  <children>
-    <neonViewReference>
-      <name>c68c50b8-6ff9-4be4-ab1e-c8bd9b93f650</name>
-      <entityField>SalesprojectMilestones</entityField>
-      <view>SalesprojectMilestoneFilter_view</view>
-    </neonViewReference>
-    <neonViewReference>
-      <name>b172fd14-209d-412f-9250-aeb0f37091b5</name>
-      <entityField>SalesprojectForecasts</entityField>
-      <view>SalesprojectForecastFilter_view</view>
-    </neonViewReference>
-  </children>
-</neonView>
diff --git a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod
index 4f429107957c57843a11aaff1328c91c90cac815..d2651987d7b1400048898ae5d5ad86b2f5b670d3 100644
--- a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod
+++ b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod
@@ -59,5 +59,10 @@
       <entityField>Documents</entityField>
       <view>DocumentFilter_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>349a82ad-4a83-4718-b37e-b0adf1ddb0b2</name>
+      <entityField>SalesprojectMilestones</entityField>
+      <view>SalesprojectMilestoneChart_view</view>
+    </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/SalesprojectCycleChart_view/SalesprojectCycleChart_view.aod b/neonView/SalesprojectMilestoneChart_view/SalesprojectMilestoneChart_view.aod
similarity index 86%
rename from neonView/SalesprojectCycleChart_view/SalesprojectCycleChart_view.aod
rename to neonView/SalesprojectMilestoneChart_view/SalesprojectMilestoneChart_view.aod
index a33cf5327537177245c5192fa1dce9ffd317ab08..5075336ab8a62209ae9b092900eec7b8f8496614 100644
--- a/neonView/SalesprojectCycleChart_view/SalesprojectCycleChart_view.aod
+++ b/neonView/SalesprojectMilestoneChart_view/SalesprojectMilestoneChart_view.aod
@@ -11,6 +11,9 @@
     <multiDataChartViewTemplate>
       <name>MilestoneChart</name>
       <chartType>COLUMN</chartType>
+      <xAxis>VALUE</xAxis>
+      <yAxis>DaysCount</yAxis>
+      <categoryField>TYPE</categoryField>
       <entityField>#ENTITY</entityField>
     </multiDataChartViewTemplate>
   </children>
diff --git a/process/Keyword_lib/process.js b/process/Keyword_lib/process.js
index 0f98d5e899c68d36887f0faddf08e76266c9587b..2df66cbf60d17804cc3d027c8e2af5558ae566a5 100644
--- a/process/Keyword_lib/process.js
+++ b/process/Keyword_lib/process.js
@@ -208,6 +208,28 @@ KeywordUtils.exists = function(pKeyId, pContainerName)
     return parseInt(db.cell(sql)) > 0;
 };
 
+/**
+ * get the translated container name.
+ * 
+ * @param {String} pContainerName specifies the type of the keyword and therefore the list elements;
+ *                                  e.g. "COUNTRY"; use an entry of the $KeywordRegistry here
+ * @return translated name, if it exists in the switch case
+ */
+KeywordUtils.getTranslatedContainer = function(pContainerName)
+{
+    switch (pContainerName)
+    {
+        case "SalesprojectPhase":
+            return translate.text("Phase");
+        case "SalesprojectState":
+            return translate.text("State");
+            break;
+        default:
+            return "Please add " + pContainerName + " to the switch case in Salesproject_lib";
+    }
+
+}
+
 /**
  * object that provides featrues for a single keyword attribute; initalizes itself on creation with a specific keyword-attribute
  * 
diff --git a/process/Salesproject_lib/process.js b/process/Salesproject_lib/process.js
index 85744379172ee4a7dd11a311749d1010d35f8d04..a7713459de8218a409a158b5bcf79b12659835c4 100644
--- a/process/Salesproject_lib/process.js
+++ b/process/Salesproject_lib/process.js
@@ -1,3 +1,4 @@
+import("Sql_lib");
 import("system.logging");
 import("system.neon");
 import("system.vars");
@@ -50,6 +51,17 @@ Salesproject.validateProjectNumber = function(projectNumber) {
 Salesproject.insertMilestone = function(salesprojectId, type, value, notifyForecast) {
     logging.log(type + " " + value + " " + KeywordUtils.exists(value, type))
     if (KeywordUtils.exists(value, type)) {
+        db.updateData(
+            "SALESPROJECT_MILESTONE",
+            ["DATE_END"],
+            null,
+            [vars.get("$sys.date")],
+            SqlCondition.begin()
+                        .andPrepare("SALESPROJECT_MILESTONE.SALESPROJECT_ID", salesprojectId)
+                        .andPrepare("SALESPROJECT_MILESTONE.TYPE", type)
+                        .and("SALESPROJECT_MILESTONE.DATE_END is null")
+                        .build("1=2"));
+        
         db.insertData(
             "SALESPROJECT_MILESTONE",
             ["SALESPROJECT_MILESTONEID", "SALESPROJECT_ID", "TYPE", "VALUE", "DATE_START"],
@@ -94,4 +106,4 @@ Salesproject.createNewSalesproject= function(pRelationId)
         params["ContactId_param"] = pRelationId;
     
     neon.openContext("Salesproject", null, null, neon.OPERATINGSTATE_NEW, params);
-}
+}
\ No newline at end of file