diff --git a/.liquibase/Data_alias/basic/2019.2.1/alter_Campaign_currency.xml b/.liquibase/Data_alias/basic/2019.2.1/alter_Campaign_currency.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8a09edddd07545cad3650647e1d05d3b3194b8f0
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2.1/alter_Campaign_currency.xml
@@ -0,0 +1,9 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="s.listl" id="28c04b3e-c643-4ef9-b1fa-4a8816e9ad0d">
+        <addColumn tableName="CAMPAIGN">
+            <column name="CURRENCY" type="CHAR(36)"/>
+        </addColumn>
+    </changeSet>
+</databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/2019.2.1/changelog.xml b/.liquibase/Data_alias/basic/2019.2.1/changelog.xml
index 4eaaa3d57c6dd1ae0b7c548cc935a7a0dd465047..5293ca357349f7c7d00378562582849490cb2ecd 100644
--- a/.liquibase/Data_alias/basic/2019.2.1/changelog.xml
+++ b/.liquibase/Data_alias/basic/2019.2.1/changelog.xml
@@ -6,4 +6,6 @@
     <include relativeToChangelogFile="true" file="alter_SerialLetter.xml"/>
     <include relativeToChangelogFile="true" file="insert_SerialLetterStatus_keyword.xml"/>
     <include relativeToChangelogFile="true" file="insert_AttributeType_Theme_keyword.xml"/>
+    
+    <include relativeToChangelogFile="true" file="alter_Campaign_currency.xml"/>
 </databaseChangeLog>
diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod
index 186ac933073e052b10b68c31c0163e6776c16e25..b56cd2af80797dafd4c2563ff958c0d19f9544e3 100644
--- a/aliasDefinition/Data_alias/Data_alias.aod
+++ b/aliasDefinition/Data_alias/Data_alias.aod
@@ -85,6 +85,31 @@
                   </customBooleanProperty>
                 </customProperties>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>KIND</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>Type</title>
+                <description></description>
+                <customProperties>
+                  <customBooleanProperty>
+                    <name>log</name>
+                    <global v="false" />
+                    <property v="true" />
+                  </customBooleanProperty>
+                  <customStringProperty>
+                    <name>keyword</name>
+                    <global v="false" />
+                    <property>OrganisationType</property>
+                  </customStringProperty>
+                </customProperties>
+              </entityFieldDb>
               <entityFieldDb>
                 <name>SALESAREA</name>
                 <dbName></dbName>
@@ -196,20 +221,6 @@
                   </customBooleanProperty>
                 </customProperties>
               </entityFieldDb>
-              <entityFieldDb>
-                <name>KIND</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -229,6 +240,31 @@
               <syncIds></syncIds>
             </auditSyncConfig>
             <entityFields>
+              <entityFieldDb>
+                <name>ISOLANGUAGE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="3" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <title>Language</title>
+                <description></description>
+                <customProperties>
+                  <customBooleanProperty>
+                    <name>log</name>
+                    <global v="false" />
+                    <property v="true" />
+                  </customBooleanProperty>
+                  <customJDitoProperty>
+                    <name>translate4Log</name>
+                    <global v="false" />
+                    <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/contact/entityfields/language/customproperties/translate4log/property.js</property>
+                  </customJDitoProperty>
+                </customProperties>
+              </entityFieldDb>
               <entityFieldDb>
                 <name>CONTACTID</name>
                 <dbName></dbName>
@@ -356,7 +392,7 @@
                   <customBooleanProperty>
                     <name>log</name>
                     <global v="false" />
-                    <property v="true" />
+                    <property v="false" />
                   </customBooleanProperty>
                 </customProperties>
               </entityFieldDb>
@@ -402,6 +438,27 @@
                   </customBooleanProperty>
                 </customProperties>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>CONTACTPOSITION</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title>Position Id</title>
+                <description></description>
+                <customProperties>
+                  <customBooleanProperty>
+                    <name>log</name>
+                    <global v="false" />
+                    <property v="true" />
+                  </customBooleanProperty>
+                </customProperties>
+              </entityFieldDb>
               <entityFieldDb>
                 <name>DATE_EDIT</name>
                 <dbName></dbName>
@@ -472,34 +529,6 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
-              <entityFieldDb>
-                <name>ISOLANGUAGE</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="3" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>CONTACTPOSITION</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="50" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -820,6 +849,26 @@
                   </customBooleanProperty>
                 </customProperties>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>PROVINCE</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>${ADDRESS_STATE}</title>
+                <description></description>
+                <customProperties>
+                  <customBooleanProperty>
+                    <name>log</name>
+                    <global v="false" />
+                    <property v="true" />
+                  </customBooleanProperty>
+                </customProperties>
+              </entityFieldDb>
               <entityFieldDb>
                 <name>ADDR_TYPE</name>
                 <dbName></dbName>
@@ -1111,20 +1160,6 @@
                 <title>Creation user</title>
                 <description></description>
               </entityFieldDb>
-              <entityFieldDb>
-                <name>PROVINCE</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="50" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -1209,6 +1244,26 @@
                   </entityDependency>
                 </dependencies>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>ISSTANDARD</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="5" />
+                <size v="5" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <title>Standard</title>
+                <description></description>
+                <customProperties>
+                  <customBooleanProperty>
+                    <name>log</name>
+                    <global v="false" />
+                    <property v="true" />
+                  </customBooleanProperty>
+                </customProperties>
+              </entityFieldDb>
               <entityFieldDb>
                 <name>ADDR</name>
                 <dbName></dbName>
@@ -1285,20 +1340,6 @@
                 <title>Modification user</title>
                 <description></description>
               </entityFieldDb>
-              <entityFieldDb>
-                <name>ISSTANDARD</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="5" />
-                <size v="5" />
-                <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -4162,6 +4203,58 @@
                   </customBooleanProperty>
                 </customProperties>
               </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" />
+                <documentation></documentation>
+                <title>Salesproject</title>
+                <description></description>
+                <customProperties>
+                  <customBooleanProperty>
+                    <name>log</name>
+                    <global v="false" />
+                    <property v="true" />
+                  </customBooleanProperty>
+                  <customJDitoProperty>
+                    <name>translate4Log</name>
+                    <global v="false" />
+                    <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesorder/entityfields/salesproject_id/customproperties/translate4log/property.js</property>
+                  </customJDitoProperty>
+                </customProperties>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>STATUS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title>Status</title>
+                <description></description>
+                <customProperties>
+                  <customBooleanProperty>
+                    <name>log</name>
+                    <global v="false" />
+                    <property v="true" />
+                  </customBooleanProperty>
+                  <customStringProperty>
+                    <name>keyword</name>
+                    <global v="false" />
+                    <property>SalesorderState</property>
+                  </customStringProperty>
+                </customProperties>
+              </entityFieldDb>
               <entityFieldDb>
                 <name>SALESORDERDATE</name>
                 <dbName></dbName>
@@ -4266,17 +4359,17 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>OFFER_ID</name>
+                <name>ADDRESS</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
+                <columnType v="2005" />
+                <size v="2147483647" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title>Offer</title>
+                <title>Address</title>
                 <description></description>
                 <customProperties>
                   <customBooleanProperty>
@@ -4287,249 +4380,32 @@
                 </customProperties>
               </entityFieldDb>
               <entityFieldDb>
-                <name>PAYDUEDATE</name>
+                <name>OFFER_ID</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
+                <title>Offer</title>
                 <description></description>
+                <customProperties>
+                  <customBooleanProperty>
+                    <name>log</name>
+                    <global v="false" />
+                    <property v="true" />
+                  </customBooleanProperty>
+                </customProperties>
               </entityFieldDb>
               <entityFieldDb>
-                <name>CANCELLATION</name>
+                <name>ISOLANGUAGE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="5" />
-                <size v="5" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>PAYDATE</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>UNPAID</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>
-              <entityFieldDb>
-                <name>DUNNINGLEVEL</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>DUNNINGDATE</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>ORDERTYPE</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>PAID</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>
-              <entityFieldDb>
-                <name>ORDERSTATUS</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="5" />
-                <size v="5" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>OBJECT_TYPE</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="63" />
-                <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>OBJECT_ROWID</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>PAYMENTTERMS</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>DELIVERYTERMS</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>PAYMENTADDRESS</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="2005" />
-                <size v="2147483647" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>DELIVERYADDRESS</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="2005" />
-                <size v="2147483647" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>NOTICE</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="2005" />
-                <size v="2147483647" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>DUNNINGTEXT</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="2005" />
-                <size v="2147483647" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>ISOLANGUAGE</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="3" />
+                <columnType v="1" />
+                <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -5136,6 +5012,32 @@
                   </customBooleanProperty>
                 </customProperties>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>KIND</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title>type</title>
+                <description></description>
+                <customProperties>
+                  <customBooleanProperty>
+                    <name>log</name>
+                    <global v="false" />
+                    <property v="false" />
+                  </customBooleanProperty>
+                  <customStringProperty>
+                    <name>keyword</name>
+                    <global v="false" />
+                    <property>TaskType</property>
+                  </customStringProperty>
+                </customProperties>
+              </entityFieldDb>
               <entityFieldDb>
                 <name>PARENT_ID</name>
                 <dbName></dbName>
@@ -5204,20 +5106,6 @@
                   </customStringProperty>
                 </customProperties>
               </entityFieldDb>
-              <entityFieldDb>
-                <name>KIND</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -6407,17 +6295,17 @@
                 </customProperties>
               </entityFieldDb>
               <entityFieldDb>
-                <name>NAME</name>
+                <name>KIND</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="100" />
+                <columnType v="1" />
+                <size v="36" />
                 <scale v="0" />
                 <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title>Name</title>
+                <title>Type</title>
                 <description></description>
                 <customProperties>
                   <customBooleanProperty>
@@ -6428,18 +6316,25 @@
                 </customProperties>
               </entityFieldDb>
               <entityFieldDb>
-                <name>KIND</name>
+                <name>NAME</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
+                <columnType v="12" />
+                <size v="100" />
                 <scale v="0" />
                 <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
+                <title>Name</title>
                 <description></description>
+                <customProperties>
+                  <customBooleanProperty>
+                    <name>log</name>
+                    <global v="false" />
+                    <property v="true" />
+                  </customBooleanProperty>
+                </customProperties>
               </entityFieldDb>
             </entityFields>
           </entityDb>
@@ -7768,11 +7663,11 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>MILESTONEVALUE</name>
+                <name>KIND</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
+                <columnType v="12" />
+                <size v="80" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -7782,11 +7677,11 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>KIND</name>
+                <name>MILESTONEVALUE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="80" />
+                <columnType v="1" />
+                <size v="36" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -9404,6 +9299,230 @@
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
+              <entityFieldDb>
+                <name>CURRENCY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CURRENCY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CURRENCY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CURRENCY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CURRENCY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CURRENCY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CURRENCY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CURRENCY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CURRENCY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CURRENCY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CURRENCY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CURRENCY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CURRENCY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CURRENCY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CURRENCY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CURRENCY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
                 <title></title>
                 <description></description>
               </entityFieldDb>
@@ -9524,7 +9643,7 @@
             <description></description>
             <auditSyncConfig>
               <name>auditSyncConfig</name>
-              <auditMode v="0" />
+              <auditMode v="1" />
               <syncActive v="false" />
               <syncComplete v="true" />
               <syncDirection v="1" />
@@ -9542,8 +9661,20 @@
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
+                <title>Document Template</title>
                 <description></description>
+                <customProperties>
+                  <customBooleanProperty>
+                    <name>log</name>
+                    <global v="false" />
+                    <property v="true" />
+                  </customBooleanProperty>
+                  <customJDitoProperty>
+                    <name>translate4Log</name>
+                    <global v="false" />
+                    <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/bulkmail/entityfields/documenttemplate_id/customproperties/translate4log/property.js</property>
+                  </customJDitoProperty>
+                </customProperties>
               </entityFieldDb>
               <entityFieldDb>
                 <name>BULKMAILID</name>
@@ -9570,8 +9701,15 @@
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
+                <title>Description</title>
                 <description></description>
+                <customProperties>
+                  <customBooleanProperty>
+                    <name>log</name>
+                    <global v="false" />
+                    <property v="true" />
+                  </customBooleanProperty>
+                </customProperties>
               </entityFieldDb>
               <entityFieldDb>
                 <name>SUBJECT</name>
@@ -9584,8 +9722,15 @@
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
+                <title>Subject</title>
                 <description></description>
+                <customProperties>
+                  <customBooleanProperty>
+                    <name>log</name>
+                    <global v="false" />
+                    <property v="true" />
+                  </customBooleanProperty>
+                </customProperties>
               </entityFieldDb>
               <entityFieldDb>
                 <name>NAME</name>
@@ -9598,8 +9743,15 @@
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
+                <title>Name</title>
                 <description></description>
+                <customProperties>
+                  <customBooleanProperty>
+                    <name>log</name>
+                    <global v="false" />
+                    <property v="true" />
+                  </customBooleanProperty>
+                </customProperties>
               </entityFieldDb>
               <entityFieldDb>
                 <name>SENDER</name>
@@ -9612,8 +9764,15 @@
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
+                <title>Sender</title>
                 <description></description>
+                <customProperties>
+                  <customBooleanProperty>
+                    <name>log</name>
+                    <global v="false" />
+                    <property v="true" />
+                  </customBooleanProperty>
+                </customProperties>
               </entityFieldDb>
               <entityFieldDb>
                 <name>STATUS</name>
@@ -10125,6 +10284,20 @@
                 <name>MAIL</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
+              <entityFieldDb>
+                <name>CURRENCY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
                 <columnType v="2005" />
                 <size v="2147483647" />
                 <scale v="0" />
@@ -10572,7 +10745,7 @@
             <description></description>
             <auditSyncConfig>
               <name>auditSyncConfig</name>
-              <auditMode v="0" />
+              <auditMode v="1" />
               <syncActive v="false" />
               <syncComplete v="true" />
               <syncDirection v="1" />
@@ -10590,8 +10763,20 @@
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
+                <title>Document Template</title>
                 <description></description>
+                <customProperties>
+                  <customBooleanProperty>
+                    <name>log</name>
+                    <global v="false" />
+                    <property v="true" />
+                  </customBooleanProperty>
+                  <customJDitoProperty>
+                    <name>translate4Log</name>
+                    <global v="false" />
+                    <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/serialletter/entityfields/documenttemplate_id/customproperties/translate4log/property.js</property>
+                  </customJDitoProperty>
+                </customProperties>
               </entityFieldDb>
               <entityFieldDb>
                 <name>SERIALLETTERID</name>
@@ -10618,8 +10803,15 @@
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
+                <title>Title</title>
                 <description></description>
+                <customProperties>
+                  <customBooleanProperty>
+                    <name>log</name>
+                    <global v="false" />
+                    <property v="true" />
+                  </customBooleanProperty>
+                </customProperties>
               </entityFieldDb>
               <entityFieldDb>
                 <name>DESCRIPTION</name>
@@ -10632,8 +10824,15 @@
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
+                <title>Description</title>
                 <description></description>
+                <customProperties>
+                  <customBooleanProperty>
+                    <name>log</name>
+                    <global v="false" />
+                    <property v="true" />
+                  </customBooleanProperty>
+                </customProperties>
               </entityFieldDb>
               <entityFieldDb>
                 <name>STATUS</name>
@@ -10652,9 +10851,9 @@
             </entityFields>
           </entityDb>
           <entityDb>
-            <name>SALESPROJECT_TOUCHPOINT</name>
+            <name>OBJECTMEMBER</name>
             <dbName></dbName>
-            <idColumn>SALESPROJECT_TOUCHPOINTID</idColumn>
+            <idColumn>OBJECTMEMBERID</idColumn>
             <idGeneratorType v="0" />
             <idGeneratorInterval v="1" />
             <documentation></documentation>
@@ -10670,7 +10869,7 @@
             </auditSyncConfig>
             <entityFields>
               <entityFieldDb>
-                <name>SALESPROJECT_TOUCHPOINTID</name>
+                <name>OBJECTMEMBERID</name>
                 <dbName></dbName>
                 <primaryKey v="true" />
                 <columnType v="1" />
@@ -10684,13 +10883,13 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>TOUCHPOINT</name>
+                <name>OBJECT_ROWID</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -10698,13 +10897,13 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>ENTRYDATE</name>
+                <name>DECIDER</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <columnType v="5" />
+                <size v="5" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -10712,11 +10911,25 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>INFO</name>
+                <name>CONTACT_ID</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="2005" />
-                <size v="2147483647" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>RELATIONSHIP</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -10726,13 +10939,27 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>SALESPROJECT_ID</name>
+                <name>OBJECT_TYPE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="63" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>MEMBERROLE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -10742,9 +10969,9 @@
             </entityFields>
           </entityDb>
           <entityDb>
-            <name>OBJECTMEMBER</name>
+            <name>SALESPROJECT_TOUCHPOINT</name>
             <dbName></dbName>
-            <idColumn>OBJECTMEMBERID</idColumn>
+            <idColumn>SALESPROJECT_TOUCHPOINTID</idColumn>
             <idGeneratorType v="0" />
             <idGeneratorInterval v="1" />
             <documentation></documentation>
@@ -10760,7 +10987,7 @@
             </auditSyncConfig>
             <entityFields>
               <entityFieldDb>
-                <name>OBJECTMEMBERID</name>
+                <name>SALESPROJECT_TOUCHPOINTID</name>
                 <dbName></dbName>
                 <primaryKey v="true" />
                 <columnType v="1" />
@@ -10774,13 +11001,13 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>OBJECT_ROWID</name>
+                <name>TOUCHPOINT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -10788,13 +11015,13 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>DECIDER</name>
+                <name>ENTRYDATE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="5" />
-                <size v="5" />
-                <scale v="0" />
-                <notNull v="true" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -10802,11 +11029,11 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>MEMBERROLE</name>
+                <name>INFO</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
+                <columnType v="2005" />
+                <size v="2147483647" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -10816,7 +11043,7 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>CONTACT_ID</name>
+                <name>SALESPROJECT_ID</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="1" />
@@ -10829,34 +11056,6 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
-              <entityFieldDb>
-                <name>RELATIONSHIP</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>
-              <entityFieldDb>
-                <name>OBJECT_TYPE</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="63" />
-                <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
             </entityFields>
           </entityDb>
         </entities>
diff --git a/entity/AttributeRelation_entity/AttributeRelation_entity.aod b/entity/AttributeRelation_entity/AttributeRelation_entity.aod
index ca18f8ae389fb1ac7e543ef06470b05aa937e6f8..7d902eb40b03b991a7849f18053fed0c49458420 100644
--- a/entity/AttributeRelation_entity/AttributeRelation_entity.aod
+++ b/entity/AttributeRelation_entity/AttributeRelation_entity.aod
@@ -148,6 +148,10 @@
           <name>DisplaySimpleName_param</name>
           <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/specificattribute/children/displaysimplename_param/valueProcess.js</valueProcess>
         </entityParameter>
+        <entityParameter>
+          <name>AttributeTypes_param</name>
+          <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/specificattribute/children/attributetypes_param/valueProcess.js</valueProcess>
+        </entityParameter>
       </children>
     </entityConsumer>
     <entityParameter>
diff --git a/entity/AttributeRelation_entity/entityfields/specificattribute/children/attributetypes_param/valueProcess.js b/entity/AttributeRelation_entity/entityfields/specificattribute/children/attributetypes_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..d940f3ac530d0079362be73944a1d6093b82ff45
--- /dev/null
+++ b/entity/AttributeRelation_entity/entityfields/specificattribute/children/attributetypes_param/valueProcess.js
@@ -0,0 +1,9 @@
+import("system.result");
+import("Attribute_lib");
+
+var isTheme = vars.exists("$param.IsTheme_param") && vars.getString("$param.IsTheme_param") == "true";
+if (isTheme)
+    sqlCondition.andPrepare("AB_ATTRIBUTE.ATTRIBUTE_TYPE", $AttributeTypes.THEME);
+else
+    sqlCondition.andPrepare("AB_ATTRIBUTE.ATTRIBUTE_TYPE", $AttributeTypes.THEME, "# != ?");
+result.object([$AttributeTypes.THEME.toString()]);
\ No newline at end of file
diff --git a/entity/AttributeRelation_entity/recordcontainers/jdito/contentProcess.js b/entity/AttributeRelation_entity/recordcontainers/jdito/contentProcess.js
index 63d07df52b1e62046aad63448e9b1ef1d2b0def9..691df5362c933e7f12bbad797908bfb221ff8cf9 100644
--- a/entity/AttributeRelation_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/AttributeRelation_entity/recordcontainers/jdito/contentProcess.js
@@ -74,14 +74,11 @@ if (rowId)
     sqlCondition.and("1=1");
 }
 
-var IsTheme = vars.exists("$param.IsTheme_param") && vars.getString("$param.IsTheme_param") == "true";
-if (IsTheme){
-    sqlCondition.andPrepare("AB_ATTRIBUTE.ATTRIBUTE_TYPE", 'THEME');
-}
+var isTheme = vars.exists("$param.IsTheme_param") && vars.getString("$param.IsTheme_param") == "true";
+if (isTheme)
+    sqlCondition.andPrepare("AB_ATTRIBUTE.ATTRIBUTE_TYPE", $AttributeTypes.THEME);
 else
-    {
-    sqlCondition.andPrepare("AB_ATTRIBUTE.ATTRIBUTE_TYPE", 'THEME', "# != ?");
-    }
+    sqlCondition.andPrepare("AB_ATTRIBUTE.ATTRIBUTE_TYPE", $AttributeTypes.THEME, "# != ?");
 
 joinCondition.and("AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID");
 
diff --git a/entity/CampaignAnalysis_entity/CampaignAnalysis_entity.aod b/entity/CampaignAnalysis_entity/CampaignAnalysis_entity.aod
index e590ec8804c0bff64723a9fdfb29fdd968a72b3e..1c36b1046e43d1a63d85676b70e12380e5bd0413 100644
--- a/entity/CampaignAnalysis_entity/CampaignAnalysis_entity.aod
+++ b/entity/CampaignAnalysis_entity/CampaignAnalysis_entity.aod
@@ -49,6 +49,7 @@
       <contentType>NUMBER</contentType>
       <outputFormat>#,##0.00</outputFormat>
       <valueProcess>%aditoprj%/entity/CampaignAnalysis_entity/entityfields/variablecosts/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/CampaignAnalysis_entity/entityfields/variablecosts/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>FixCosts</name>
@@ -56,6 +57,7 @@
       <contentType>NUMBER</contentType>
       <outputFormat>#,##0.00</outputFormat>
       <valueProcess>%aditoprj%/entity/CampaignAnalysis_entity/entityfields/fixcosts/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/CampaignAnalysis_entity/entityfields/fixcosts/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>TotalCosts</name>
@@ -63,6 +65,7 @@
       <contentType>NUMBER</contentType>
       <outputFormat>#,##0.00</outputFormat>
       <valueProcess>%aditoprj%/entity/CampaignAnalysis_entity/entityfields/totalcosts/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/CampaignAnalysis_entity/entityfields/totalcosts/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>CostsPerParticipant</name>
@@ -70,6 +73,7 @@
       <contentType>NUMBER</contentType>
       <outputFormat>#,##0.00</outputFormat>
       <valueProcess>%aditoprj%/entity/CampaignAnalysis_entity/entityfields/costsperparticipant/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/CampaignAnalysis_entity/entityfields/costsperparticipant/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>UID</name>
@@ -99,6 +103,10 @@
       <expose v="true" />
       <description>PARAMETER</description>
     </entityParameter>
+    <entityField>
+      <name>Currency</name>
+      <valueProcess>%aditoprj%/entity/CampaignAnalysis_entity/entityfields/currency/valueProcess.js</valueProcess>
+    </entityField>
   </entityFields>
   <recordContainers>
     <jDitoRecordContainer>
diff --git a/entity/CampaignAnalysis_entity/entityfields/costsperparticipant/displayValueProcess.js b/entity/CampaignAnalysis_entity/entityfields/costsperparticipant/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..fe9d9c02cb11f5f70ecd4c00e41b251ed5f1a789
--- /dev/null
+++ b/entity/CampaignAnalysis_entity/entityfields/costsperparticipant/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("Util_lib");
+import("system.vars");
+import("system.translate");
+import("system.result");
+
+result.string(NumberUtils.formatWithCurrency(vars.get("$field.CostsPerParticipant"), translate.text("#,##0.00"), vars.get("$field.Currency")));
\ No newline at end of file
diff --git a/entity/CampaignAnalysis_entity/entityfields/costsperparticipant/valueProcess.js b/entity/CampaignAnalysis_entity/entityfields/costsperparticipant/valueProcess.js
index ccd043074d5d151f5226b40cc450c4e510e13657..ec3ccc758e613aec6dd8eb10b071f0f9ed777854 100644
--- a/entity/CampaignAnalysis_entity/entityfields/costsperparticipant/valueProcess.js
+++ b/entity/CampaignAnalysis_entity/entityfields/costsperparticipant/valueProcess.js
@@ -1,4 +1,5 @@
 import("system.result");
 import("system.vars");
 
-result.string(parseFloat(vars.getString("$field.TotalCosts")) / parseInt(vars.get("$field.ParticipantCount")));
\ No newline at end of file
+var cost = parseFloat(vars.getString("$field.TotalCosts")) / parseInt(vars.get("$field.ParticipantCount"));
+result.string(isFinite(cost) ? cost : 0);  //if there is no participant, it would cause a division by zero and the result would be infinity
\ No newline at end of file
diff --git a/entity/CampaignAnalysis_entity/entityfields/currency/valueProcess.js b/entity/CampaignAnalysis_entity/entityfields/currency/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..0707325468559c403e49b8cb1410dcfda71b81e5
--- /dev/null
+++ b/entity/CampaignAnalysis_entity/entityfields/currency/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.db");
+import("system.result");
+import("Sql_lib");
+
+result.string(db.cell(SqlCondition.begin()
+    .andPrepareVars("CAMPAIGN.CAMPAIGNID", "$param.CampaignId_param")
+    .buildSql("select CURRENCY from CAMPAIGN", "1=2")));
\ No newline at end of file
diff --git a/entity/CampaignAnalysis_entity/entityfields/fixcosts/displayValueProcess.js b/entity/CampaignAnalysis_entity/entityfields/fixcosts/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..0ef6b1164e2c8b3c15111fe3174f75f74412d558
--- /dev/null
+++ b/entity/CampaignAnalysis_entity/entityfields/fixcosts/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("Util_lib");
+import("system.vars");
+import("system.translate");
+import("system.result");
+
+result.string(NumberUtils.formatWithCurrency(vars.get("$field.FixCosts"), translate.text("#,##0.00"), vars.get("$field.Currency")));
\ No newline at end of file
diff --git a/entity/CampaignAnalysis_entity/entityfields/totalcosts/displayValueProcess.js b/entity/CampaignAnalysis_entity/entityfields/totalcosts/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..1446e4d3b304a06f21325dc360dc5f01b5f0c605
--- /dev/null
+++ b/entity/CampaignAnalysis_entity/entityfields/totalcosts/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("Util_lib");
+import("system.vars");
+import("system.translate");
+import("system.result");
+
+result.string(NumberUtils.formatWithCurrency(vars.get("$field.TotalCosts"), translate.text("#,##0.00"), vars.get("$field.Currency")));
\ No newline at end of file
diff --git a/entity/CampaignAnalysis_entity/entityfields/variablecosts/displayValueProcess.js b/entity/CampaignAnalysis_entity/entityfields/variablecosts/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..58579e46183839ab4fb7634bfdd2ccdf3713a1e4
--- /dev/null
+++ b/entity/CampaignAnalysis_entity/entityfields/variablecosts/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("Util_lib");
+import("system.vars");
+import("system.translate");
+import("system.result");
+
+result.string(NumberUtils.formatWithCurrency(vars.get("$field.VariableCosts"), translate.text("#,##0.00"), vars.get("$field.Currency")));
\ No newline at end of file
diff --git a/entity/CampaignCost_entity/CampaignCost_entity.aod b/entity/CampaignCost_entity/CampaignCost_entity.aod
index 830b03dd1cc322346e11b8cd85e30550b0556b68..54ea032fe2337da9be23f221dd7bd64371540d1b 100644
--- a/entity/CampaignCost_entity/CampaignCost_entity.aod
+++ b/entity/CampaignCost_entity/CampaignCost_entity.aod
@@ -55,6 +55,7 @@
       <outputFormat>#,##0.00</outputFormat>
       <inputFormat>#,##0.00</inputFormat>
       <mandatory v="true" />
+      <displayValueProcess>%aditoprj%/entity/CampaignCost_entity/entityfields/net/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>USER_NEW</name>
@@ -215,6 +216,7 @@
       <state>READONLY</state>
       <titleProcess>%aditoprj%/entity/CampaignCost_entity/entityfields/netperparticipant/titleProcess.js</titleProcess>
       <valueProcess>%aditoprj%/entity/CampaignCost_entity/entityfields/netperparticipant/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/CampaignCost_entity/entityfields/netperparticipant/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>countParticipants</name>
@@ -232,6 +234,9 @@
       <documentation>%aditoprj%/entity/CampaignCost_entity/entityfields/campaignsteps_param/documentation.adoc</documentation>
       <description>PARAMETER</description>
     </entityParameter>
+    <entityField>
+      <name>CURRENCY</name>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -242,19 +247,26 @@
       <orderClauseProcess>%aditoprj%/entity/CampaignCost_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
       <linkInformation>
         <linkInformation>
-          <name>70c2db20-0695-4189-92cb-7da585bff401</name>
+          <name>6010c581-04c5-4578-b07b-5ab5ce27093b</name>
           <tableName>CAMPAIGNCOST</tableName>
           <primaryKey>CAMPAIGNCOSTID</primaryKey>
           <isUIDTable v="true" />
           <readonly v="false" />
         </linkInformation>
         <linkInformation>
-          <name>b97b7f67-86ea-4d0a-8303-abc05863ed66</name>
+          <name>e5fcdb82-a4f4-4bf8-a7e5-81b94d6377bb</name>
           <tableName>CAMPAIGNSTEP</tableName>
           <primaryKey>CAMPAIGNSTEPID</primaryKey>
           <isUIDTable v="false" />
           <readonly v="true" />
         </linkInformation>
+        <linkInformation>
+          <name>22980b1e-ea89-4dc6-a648-bddb77401c6a</name>
+          <tableName>CAMPAIGN</tableName>
+          <primaryKey>CAMPAIGNID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
       </linkInformation>
       <recordFieldMappings>
         <dbRecordFieldMapping>
@@ -297,6 +309,10 @@
           <name>CATEGORY.displayValue</name>
           <expression>%aditoprj%/entity/CampaignCost_entity/recordcontainers/db/recordfieldmappings/category.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>CURRENCY.value</name>
+          <recordfield>CAMPAIGN.CURRENCY</recordfield>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
diff --git a/entity/CampaignCost_entity/entityfields/net/displayValueProcess.js b/entity/CampaignCost_entity/entityfields/net/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..450ae0cfd9fa1701eeb4d4e7c049a3c8fb8fc7a0
--- /dev/null
+++ b/entity/CampaignCost_entity/entityfields/net/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("Util_lib");
+import("system.vars");
+import("system.translate");
+import("system.result");
+
+result.string(NumberUtils.formatWithCurrency(vars.get("$field.NET"), translate.text("#,##0.00"), vars.get("$field.CURRENCY")));
\ No newline at end of file
diff --git a/entity/CampaignCost_entity/entityfields/netperparticipant/displayValueProcess.js b/entity/CampaignCost_entity/entityfields/netperparticipant/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..d37ae85c8d479b752a505f2ad78b2fd57f6f0d16
--- /dev/null
+++ b/entity/CampaignCost_entity/entityfields/netperparticipant/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("Util_lib");
+import("system.vars");
+import("system.translate");
+import("system.result");
+
+result.string(NumberUtils.formatWithCurrency(vars.get("$field.netPerParticipant"), translate.text("#,##0.00"), vars.get("$field.CURRENCY")));
\ No newline at end of file
diff --git a/entity/CampaignCost_entity/recordcontainers/db/fromClauseProcess.js b/entity/CampaignCost_entity/recordcontainers/db/fromClauseProcess.js
index 4d95079d7cb044ddab9f1e475e6921ec8dcfb2f9..bfccf1c985dacc26263d113b9df88f54ec09c022 100644
--- a/entity/CampaignCost_entity/recordcontainers/db/fromClauseProcess.js
+++ b/entity/CampaignCost_entity/recordcontainers/db/fromClauseProcess.js
@@ -1,3 +1,4 @@
 import("system.result");
 
-result.string("CAMPAIGNCOST left join CAMPAIGNSTEP on CAMPAIGNCOST.CAMPAIGNSTEP_ID = CAMPAIGNSTEP.CAMPAIGNSTEPID")
\ No newline at end of file
+result.string("CAMPAIGNCOST left join CAMPAIGNSTEP on CAMPAIGNCOST.CAMPAIGNSTEP_ID = CAMPAIGNSTEP.CAMPAIGNSTEPID \
+    join CAMPAIGN on CAMPAIGNCOST.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID");
\ No newline at end of file
diff --git a/entity/Campaign_entity/Campaign_entity.aod b/entity/Campaign_entity/Campaign_entity.aod
index 6fdce8ab9b250b8e55c297bbf290d7a81654cb2c..364f0019d3722dc74cd8a005c51f3a17e64b3c5a 100644
--- a/entity/Campaign_entity/Campaign_entity.aod
+++ b/entity/Campaign_entity/Campaign_entity.aod
@@ -486,6 +486,28 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityField>
+      <name>CURRENCY</name>
+      <title>Currency</title>
+      <consumer>KeywordCurrency</consumer>
+      <mandatory v="true" />
+      <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/currency/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Campaign_entity/entityfields/currency/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityConsumer>
+      <name>KeywordCurrency</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContainerName_param</name>
+          <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/keywordcurrency/children/containername_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -568,6 +590,14 @@
           <name>STATUS.displayValue</name>
           <expression>%aditoprj%/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>CURRENCY.value</name>
+          <recordfield>CAMPAIGN.CURRENCY</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>CURRENCY.displayValue</name>
+          <expression>%aditoprj%/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/currency.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
       <filterExtensions>
         <filterExtensionSet>
diff --git a/entity/Campaign_entity/entityfields/currency/displayValueProcess.js b/entity/Campaign_entity/entityfields/currency/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..71f6fd23918c683ebf7eecb2bfc971f603bd00fe
--- /dev/null
+++ b/entity/Campaign_entity/entityfields/currency/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.currency(), vars.get("$field.CURRENCY")));
\ No newline at end of file
diff --git a/entity/Campaign_entity/entityfields/currency/valueProcess.js b/entity/Campaign_entity/entityfields/currency/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..05fa9172bc2933be5e71b17e5f7230d844d86664
--- /dev/null
+++ b/entity/Campaign_entity/entityfields/currency/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+import("KeywordRegistry_basic");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
+    result.string($KeywordRegistry.currency$eur());
\ No newline at end of file
diff --git a/entity/Campaign_entity/entityfields/keywordcurrency/children/containername_param/valueProcess.js b/entity/Campaign_entity/entityfields/keywordcurrency/children/containername_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..6e94f823cd6267123836d5c5a4f9ed6f38da0bb6
--- /dev/null
+++ b/entity/Campaign_entity/entityfields/keywordcurrency/children/containername_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("KeywordRegistry_basic");
+import("system.result");
+
+result.string($KeywordRegistry.currency());
\ No newline at end of file
diff --git a/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/currency.displayvalue/expression.js b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/currency.displayvalue/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..97616b9b6066153e56e577e2aef5425ae22b8da6
--- /dev/null
+++ b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/currency.displayvalue/expression.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.currency(), "CAMPAIGN.CURRENCY");
+result.string(sql);
\ No newline at end of file
diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
index c407f92b638a4758efc976de7c404503020b29de..1025fac61468df0ad65685eb86187d6c530a0c83 100644
--- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod
+++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
@@ -474,6 +474,12 @@
           <entityName>DSGVOInfo_entity</entityName>
           <fieldName>KeywordGuarantee</fieldName>
           <isConsumer v="false" />
+        </entityDependency>
+         <entityDependency>
+          <name>2443c7e3-9e66-41dc-99c7-3283e9315000</name>
+          <entityName>Campaign_entity</entityName>
+          <fieldName>KeywordCurrency</fieldName>
+          <isConsumer v="false" />
         </entityDependency>
         <entityDependency>
           <name>2694515c-eda4-44aa-9826-d430aa8a8089</name>
diff --git a/entity/PermissionAction_entity/entityfields/permissiondetails/onValidation.js b/entity/PermissionAction_entity/entityfields/permissiondetails/onValidation.js
index ac3912f70bfd69006068a8020a8176bc12bfcdce..5acbe1fae9747b958253205861b77d6146f730c4 100644
--- a/entity/PermissionAction_entity/entityfields/permissiondetails/onValidation.js
+++ b/entity/PermissionAction_entity/entityfields/permissiondetails/onValidation.js
@@ -15,15 +15,15 @@ var deletedRows = vars.get("$field.PermissionDetails.deletedRows");
 
 if (actionTitle == "null" || actionTitle == undefined || actionTitle == null || actionTitle == "") {
     result.string(translate.text("Empty actions are not allowed!"));
-} else if (PermissionUtil.existsPermission(permissionId)) {
+} else if (PermissionUtil.permissionExists(permissionId)) {
     // existing permission
     // check if action is already in DB
-    var actionsInDb = PermissionUtil.getPermissionAction(permissionId);
+    var actionsInDb = PermissionUtil.getActions([permissionId]);
     var sqlStr = "select COND from ASYS_PERMISSION where ASYS_PERMISSIONID='" + permissionId + "'";
     var permCondDb = db.cell(sqlStr, alias);
     
     for each (var action in actionsInDb) {
-        if (PermissionUtil.resolvePermissionActionId(action) == actionTitle && permCondInput == permCondDb) {
+        if (PermissionUtil.resolveActionId(action) == actionTitle && permCondInput == permCondDb) {
             result.string(translate.text("Action '" + actionTitle + "' already linked to this permission!"));
             break;
         }
diff --git a/entity/PermissionAction_entity/recordcontainers/jdito/contentProcess.js b/entity/PermissionAction_entity/recordcontainers/jdito/contentProcess.js
index e3af7028be1e1b0648f1c4a92b35b7e382118ff1..50caa264cc31ae1cd5245964b10b119604424cda 100644
--- a/entity/PermissionAction_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/PermissionAction_entity/recordcontainers/jdito/contentProcess.js
@@ -7,11 +7,11 @@ import("Permission_lib");
 var actions = [];
 var permissionId = vars.exists("$param.PermissionId_param") && vars.get("$param.PermissionId_param");
 
-if (permissionId && PermissionUtil.existsPermission(permissionId))
+if (permissionId && PermissionUtil.permissionExists(permissionId))
 {
-    var permActions = PermissionUtil.getPermissionAction(permissionId);
+    var permActions = PermissionUtil.getActions([permissionId]);
     for each (var permActionId in permActions) {
-        actions.push([permActionId[0], PermissionUtil.resolvePermissionActionId(permActionId), PermissionUtil.resolvePermissionActionId(permActionId)]);    
+        actions.push([permActionId[0], PermissionUtil.resolveActionId(permActionId), PermissionUtil.resolveActionId(permActionId)]);    
     }
 
     result.object(actions);
diff --git a/entity/PermissionAction_entity/recordcontainers/jdito/onDelete.js b/entity/PermissionAction_entity/recordcontainers/jdito/onDelete.js
index 69b743814c1db71967e744c83ca9b55fa011f84d..3dc7236e2952b0b90e261cce5b615bfc64045a5d 100644
--- a/entity/PermissionAction_entity/recordcontainers/jdito/onDelete.js
+++ b/entity/PermissionAction_entity/recordcontainers/jdito/onDelete.js
@@ -2,4 +2,4 @@ import("system.vars");
 import("Permission_lib");
 
 var action = vars.get("$local.uid");
-PermissionUtil.deletePermissionAction(action);
\ No newline at end of file
+PermissionUtil.deleteAction(action);
\ No newline at end of file
diff --git a/entity/PermissionAction_entity/recordcontainers/jdito/onInsert.js b/entity/PermissionAction_entity/recordcontainers/jdito/onInsert.js
index eaa90d0cb8597dc1a3374c82d563eb6ada68ab90..ba4a44784604153dc6ae0675b919766fd6d47508 100644
--- a/entity/PermissionAction_entity/recordcontainers/jdito/onInsert.js
+++ b/entity/PermissionAction_entity/recordcontainers/jdito/onInsert.js
@@ -10,7 +10,7 @@ var permissionId = vars.exists("$param.PermissionId_param") && vars.get("$param.
 
 if (permissionId) {
     var newAction = vars.get("$local.rowdata")["ACTION.value"];
-    PermissionUtil.insertNewPermissionAction(permissionId, newAction, vars.get("$field.UID"));
+    PermissionUtil.insertAction(permissionId, newAction, vars.get("$field.UID"));
 }
 
 tools.clearPermissionCache();
\ No newline at end of file
diff --git a/entity/PermissionAction_entity/recordcontainers/jdito/onUpdate.js b/entity/PermissionAction_entity/recordcontainers/jdito/onUpdate.js
index 6d5e623b7c990ff901bcfc65cbae34e86b2b65a8..2ca5d8944019c687e073fa926bf3211c0c1e7ea1 100644
--- a/entity/PermissionAction_entity/recordcontainers/jdito/onUpdate.js
+++ b/entity/PermissionAction_entity/recordcontainers/jdito/onUpdate.js
@@ -7,7 +7,7 @@ var col = "ACTION";
 var table = "ASYS_PERMISSIONACTION";
 var permissionId = vars.exists("$param.PermissionId_param") && vars.get("$param.PermissionId_param");
 
-if (permissionId && PermissionUtil.existsPermission(permissionId)) {
+if (permissionId && PermissionUtil.permissionExists(permissionId)) {
     var newAction = vars.get("$local.rowdata")["ACTION.value"];
     PermissionUtil.updateIfDiff(vars.get("$field.UID"), newAction, col, table);
 }
\ No newline at end of file
diff --git a/entity/PermissionDetail_entity/entityfields/accesstype/displayValueProcess.js b/entity/PermissionDetail_entity/entityfields/accesstype/displayValueProcess.js
index 834f79bd2a754a3fb66944f5629e2a46de1ce41a..64d2e3dbafd4e842abc03c05b85b260aaf72e727 100644
--- a/entity/PermissionDetail_entity/entityfields/accesstype/displayValueProcess.js
+++ b/entity/PermissionDetail_entity/entityfields/accesstype/displayValueProcess.js
@@ -8,7 +8,7 @@ var field = vars.get("$field.FIELD");
 var role = vars.get("$field.ROLE");
 var entity = vars.get("$field.ENTITY");
 var accesstype = vars.get("$field.ACCESSTYPE");
-var rootPermSet = PermissionUtil.getRootPermissionSet(role, entity);
+var rootPermSet = PermissionUtil.getSetRoot(role, entity);
 
 if (operatingState == neon.OPERATINGSTATE_SEARCH || neon.OPERATINGSTATE_VIEW) {
     switch (accesstype) {
diff --git a/entity/PermissionDetail_entity/entityfields/accesstype/valueProcess.js b/entity/PermissionDetail_entity/entityfields/accesstype/valueProcess.js
index 19d56ab1772593fcca0d1bca9b053c156e384da4..77b31c523511833ae46b2844d6d8c72271298148 100644
--- a/entity/PermissionDetail_entity/entityfields/accesstype/valueProcess.js
+++ b/entity/PermissionDetail_entity/entityfields/accesstype/valueProcess.js
@@ -6,8 +6,8 @@ var field = vars.get("$field.FIELD");
 var role = vars.get("$field.ROLE");
 var entity = vars.get("$field.ENTITY");
 var permId = vars.get("$field.UID");
-var rootPermSet = PermissionUtil.getRootPermissionSet(role, entity);
-var rootPerm = PermissionUtil.getDefaultPermission(rootPermSet);
+var rootPermSet = PermissionUtil.getSetRoot(role, entity);
+var rootPerm = PermissionUtil.getPermissionWithoutCond(rootPermSet);
 
 if (PermissionUtil.getCondType(rootPerm) == "false") {
     // condtype="false" is used to display that this entity has the usePermissions flag set but has no permissions linked -> no access on any level
diff --git a/entity/PermissionDetail_entity/entityfields/field/stateProcess.js b/entity/PermissionDetail_entity/entityfields/field/stateProcess.js
index 2a3f639a77b08b9c6b6bcfe08a44a1260d27ba64..a28f5c86f9be5e45e9d693571091ce4a7fd1d03a 100644
--- a/entity/PermissionDetail_entity/entityfields/field/stateProcess.js
+++ b/entity/PermissionDetail_entity/entityfields/field/stateProcess.js
@@ -7,7 +7,7 @@ import("Permission_lib");
 var role = vars.get("$field.ROLE");
 var entity = vars.get("$field.ENTITY");
 
-rootPermSet = PermissionUtil.getRootPermissionSet(role, entity);
+rootPermSet = PermissionUtil.getSetRoot(role, entity);
 
 if (rootPermSet == "") {
     result.string(neon.COMPONENTSTATE_DISABLED);
diff --git a/entity/PermissionDetail_entity/entityfields/permissionactions/children/permissionid_param/valueProcess.js b/entity/PermissionDetail_entity/entityfields/permissionactions/children/permissionid_param/valueProcess.js
index 7f2dea6db775c3e184ecfe8b4937e583ad91ec39..8380b4e449705c93f42a6b3eae4736708622094a 100644
--- a/entity/PermissionDetail_entity/entityfields/permissionactions/children/permissionid_param/valueProcess.js
+++ b/entity/PermissionDetail_entity/entityfields/permissionactions/children/permissionid_param/valueProcess.js
@@ -5,10 +5,10 @@ import("Permission_lib");
 var entity = vars.get("$field.ENTITY");
 var cond = vars.get("$field.CONDITION");
 var noCond = "{\"entity\":\"" + entity + "\",\"filter\":{\"type\":\"group\",\"operator\":\"AND\",\"childs\":[]}}";
-var permSetId = PermissionUtil.getPermissionSet(vars.get("$field.ROLE"), vars.get("$field.ENTITY"), vars.get("$field.ACCESSTYPE"));
+var permSetId = PermissionUtil.getSet(vars.get("$field.ROLE"), vars.get("$field.ENTITY"), vars.get("$field.ACCESSTYPE"));
 
 if (permSetId != "" && (cond == "" || cond == noCond)) {
-    var rootPermId = PermissionUtil.getDefaultPermission(permSetId);
+    var rootPermId = PermissionUtil.getPermissionWithoutCond(permSetId);
     if (rootPermId != "") {
         result.string(rootPermId);
     }
diff --git a/entity/PermissionDetail_entity/entityfields/permissionactions/onValidation.js b/entity/PermissionDetail_entity/entityfields/permissionactions/onValidation.js
index 1abe9d92bfd3d588a564ea9419fb4c2f9c5019c7..9822dae140770b8d12ccf03a616e765b431026ca 100644
--- a/entity/PermissionDetail_entity/entityfields/permissionactions/onValidation.js
+++ b/entity/PermissionDetail_entity/entityfields/permissionactions/onValidation.js
@@ -16,17 +16,20 @@ var accesstype = vars.get("$field.ACCESSTYPE");
 var permCondInput = vars.get("$field.CONDITION");
 var permCondType = vars.get("$field.CONDTYPE");
 var permissionId = PermissionUtil.getPermission(roleTitle, entityTitle, fieldTitle, accesstype, permCondInput, permCondType);
-var actionsInDb = PermissionUtil.getPermissionAction(permissionId);
-
+var actionsInDb = PermissionUtil.getActions([permissionId]);
 var actionsAsStringArray = vars.get("$field.ACTION").split(","); // only useful while working with already existing permissions
 
 var deletedRows = vars.get("$field.PermissionActions.deletedRows");
 var changedRows = vars.get("$field.PermissionActions.changedRows");
 var insertedRows = vars.get("$field.PermissionActions.insertedRows");
 
-if (PermissionUtil.existsPermission(permissionId)) {
+if (deletedRows.length == actionsAsStringArray.length && changedRows.length == 0 && insertedRows.length == 0) {
+    result.string(translate.text("Permissions without actions are not allowed!"));
+}
+
+if (PermissionUtil.permissionExists(permissionId)) {
     // old permission
-    // insert nur möglich, wenn gleiche action auch gelöscht wurde, oder zuvor nicht da war
+    // insert only possible, if the same action is not already linked to the permission
     for each (let row in insertedRows) {
         var actionGotJustDelted = false;
         if (PermissionUtil.actionExists(row.ACTION, permissionId)) {
diff --git a/entity/PermissionDetail_entity/recordcontainers/jdito/contentProcess.js b/entity/PermissionDetail_entity/recordcontainers/jdito/contentProcess.js
index 894bb06e116e163c11859003cbc0a3f28bd2c6eb..7caa94138a350ba29d74d1d8fedb0fb1e47d36e6 100644
--- a/entity/PermissionDetail_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/PermissionDetail_entity/recordcontainers/jdito/contentProcess.js
@@ -14,6 +14,7 @@ var entitiesMetaData = project.getDataModels(project.DATAMODEL_KIND_ENTITY);
 var entityStructure;
 var entitiesUsePermFlagSet = [];
 var fieldsUsePermFlagSet = [];
+var noCond = "{\"entity\":\"" + vars.get("$field.ENTITY") + "\",\"filter\":{\"type\":\"group\",\"operator\":\"AND\",\"childs\":[]}}";
 
 // gets all names of the entites which have the 'usePermission'-flag set (positive list)
 // gets all names of the fields which have the 'usePermission'-flag set (positive list)
@@ -110,15 +111,16 @@ result.object(res.sort(sortResultsAfterAccessTypes));
 function prepareResultArray(pEntry, pRes) {
     var rootPermission = "";
     if (pEntry.accesstype != "E") {
-        if (pEntry.accesstype == "F" && pEntry.cond != "") {
-            rootPermission = PermissionUtil.getRootFieldPermission(pEntry.permissionid);
+        if (pEntry.accesstype == "F" && pEntry.cond != "" && pEntry.cond != noCond) {
+            rootPermission = PermissionUtil.getPermissionWithoutCond(PermissionUtil.getParentSet(pEntry.permissionid));
             if (rootPermission == "") {
-                rootPermission = PermissionUtil.getRootPermission(pEntry.permissionid);
+                rootPermission = PermissionUtil.getPermissionRoot(pEntry.permissionid);
             }
         } else 
-            rootPermission = PermissionUtil.getRootPermission(pEntry.permissionid);        
+            rootPermission = PermissionUtil.getPermissionRoot(pEntry.permissionid);        
     }
-    pRes.push([pEntry.permissionid, pEntry.entity, pEntry.role, pEntry.field, pEntry.cond, sortActions(pEntry.action.split(","), pEntry.accesstype).join(","), pEntry.accesstype, pEntry.condtype, rootPermission]);
+    pRes.push([pEntry.permissionid, pEntry.entity, pEntry.role, pEntry.field, pEntry.cond, 
+        sortActions(pEntry.action.split(","), pEntry.accesstype).join(","), pEntry.accesstype, pEntry.condtype, rootPermission]);
     return pRes;
 }
 
diff --git a/entity/PermissionDetail_entity/recordcontainers/jdito/onDelete.js b/entity/PermissionDetail_entity/recordcontainers/jdito/onDelete.js
index 03032f4d74eaf6b7a7e38ddc8c66c55e8fcfd3c1..9e14cbbfbfc23c51aec6e92da12ecbb3f186a563 100644
--- a/entity/PermissionDetail_entity/recordcontainers/jdito/onDelete.js
+++ b/entity/PermissionDetail_entity/recordcontainers/jdito/onDelete.js
@@ -7,8 +7,8 @@ import("Permission_lib");
 
 var permId = vars.get("$field.UID");
 var accessType = vars.get("$field.ACCESSTYPE");
-var parentPermSetId = PermissionUtil.getParentPermissionSet(permId);
-var linkedActions = PermissionUtil.getAllChildPermissionActions(permId);
+var parentPermSetId = PermissionUtil.getParentSet(permId);
+var linkedActions = PermissionUtil.getActionsOfSet(permId);
 var alias = SqlUtils.getSystemAlias();
 
 var sqlCondDelAction = SqlCondition.begin()
@@ -23,10 +23,10 @@ var sqlCondDelPermSet = SqlCondition.begin()
 
 switch (accessType) {
     case "E":
-        var allPermSets = PermissionUtil.getAllChildPermissionSets(parentPermSetId);
+        var allPermSets = PermissionUtil.getChildSetsOfSet(parentPermSetId);
         allPermSets.push(parentPermSetId);
-        var allPerms = PermissionUtil.getAllPermissions(allPermSets);
-        var allPermActions = PermissionUtil.getAllPermissionActions(allPerms);
+        var allPerms = PermissionUtil.getPermissions(allPermSets);
+        var allPermActions = PermissionUtil.getActions(allPerms);
         
         sqlCondDelAction = SqlCondition.begin()
         .and("ASYS_PERMISSIONACTION.ASYS_PERMISSIONACTIONID in ('" + allPermActions.join("','") + "')")
@@ -48,7 +48,7 @@ switch (accessType) {
         break;
 }
 
-if (PermissionUtil.permSetIsEmpty(parentPermSetId)) {
+if (PermissionUtil.setIsEmpty(parentPermSetId)) {
     db.deleteData("ASYS_PERMISSIONSET", sqlCondDelPermSet, alias); // delete empty permissionset
 }
 
diff --git a/entity/PermissionDetail_entity/recordcontainers/jdito/onInsert.js b/entity/PermissionDetail_entity/recordcontainers/jdito/onInsert.js
index d74cc3ec7c6b9b91038fb9cf8c52c7793098061a..25b19a3327de2ca40aa83018dfd22d69ce2bc42e 100644
--- a/entity/PermissionDetail_entity/recordcontainers/jdito/onInsert.js
+++ b/entity/PermissionDetail_entity/recordcontainers/jdito/onInsert.js
@@ -22,7 +22,7 @@ var condition = vars.get("$field.CONDITION");
 if (checkInput([role, entity, accesstype, condtype])) {
     
     // permission set
-    var permissionsetid = PermissionUtil.getPermissionSet(role, entity, accesstype, field);
+    var permissionsetid = PermissionUtil.getSet(role, entity, accesstype, field);
     
     if (permissionsetid == "") {
         // no fitting permissionset found - insert new permissionset
@@ -30,16 +30,16 @@ if (checkInput([role, entity, accesstype, condtype])) {
         if (accesstype == "E") {
             rootpermissionset = "";
         } else {
-            rootpermissionset = PermissionUtil.getRootPermissionSet(role, entity);
+            rootpermissionset = PermissionUtil.getSetRoot(role, entity);
         }
-        permissionsetid = PermissionUtil.insertNewPermissionSet(rootpermissionset, entity, role, field, accesstype);
+        permissionsetid = PermissionUtil.insertSet(rootpermissionset, entity, role, field, accesstype);
     }
     
     // permission
     var existingPerm = PermissionUtil.getPermission(role, entity, field, accesstype, condition);
     if (existingPerm == "") {
         // no existing perm found -> insert
-        PermissionUtil.insertNewPermission(permissionsetid, condition, condtype, permissionid);
+        PermissionUtil.insertPermission(permissionsetid, condition, condtype, permissionid);
     } else {
         // existing perm found -> update
         PermissionUtil.updateIfDiff(existingPerm, permissionsetid, "ASYS_PERMISSIONSET_ID", tablename);
diff --git a/entity/PermissionDetail_entity/recordcontainers/jdito/onUpdate.js b/entity/PermissionDetail_entity/recordcontainers/jdito/onUpdate.js
index d45ba525a2cd7a43f2ca2710b0038ba6f70b388d..cacdde1e352e2d9859d8f39f20fb9e2f3af4378c 100644
--- a/entity/PermissionDetail_entity/recordcontainers/jdito/onUpdate.js
+++ b/entity/PermissionDetail_entity/recordcontainers/jdito/onUpdate.js
@@ -25,14 +25,12 @@ if (diff.length > 0) {
     // insert the different actions
     cols = db.getColumns(table, alias);
     for each (var action in actionNew) {
-        PermissionUtil.insertNewPermissionAction(permissionid, action);
+        PermissionUtil.insertAction(permissionid, action);
     }
 }
 
 PermissionUtil.updateIfDiff(permissionid, permCond, "COND", "ASYS_PERMISSION"); // updates COND if the new cond is different to COND in DB
 PermissionUtil.updateIfDiff(permissionid, permCondType, "CONDTYPE", "ASYS_PERMISSION"); // updates CONDTYPE if the new condtype is different to CONDTYPE in DB
-// entity of children has to be changed/deleted/ignored?
-// PermissionUtil.updateIfDiff(PermissionUtil.getParentPermissionSet(permissionid), entityNew, "ENTITY_ID", "ASYS_PERMISSIONSET");
 
 neon.refreshAll(); 
 tools.clearPermissionCache();
\ No newline at end of file
diff --git a/entity/PermissionOverview_entity/recordcontainers/jdito/contentProcess.js b/entity/PermissionOverview_entity/recordcontainers/jdito/contentProcess.js
index 2c418c0fb630dbf1d8b4981a72b61279ed8919a1..3e15f2cfb644d46d4d4177578c9542d5614fb3ab 100644
--- a/entity/PermissionOverview_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/PermissionOverview_entity/recordcontainers/jdito/contentProcess.js
@@ -1,3 +1,4 @@
+import("Sql_lib");
 import("system.project");
 import("system.vars");
 import("system.result");
@@ -9,6 +10,7 @@ var roleTitle = "";
 var entityTitle = "";
 var sqlCond = "";
 var sqlStr = "";
+let alias = SqlUtils.getSystemAlias();
 var roleInternalEveryone = "INTERNAL_EVERYONE";
 
 var entitiesMetaData = project.getDataModels(project.DATAMODEL_KIND_ENTITY);
@@ -20,8 +22,8 @@ for each (let entityMetaData in entitiesMetaData) {
         entitiesUsePermFlagSet.push(entityMetaData[0])
         if (PermissionUtil.getNumberOfPermissions(entityMetaData[0]) == 0) {
             // no permissions found for the given entity -> create permissionset for role INTERNAL_EVERYONE with five X's for view, create, read, edit, delete         
-            var noAccessPermissionSetIdEntity = PermissionUtil.insertNewPermissionSet("", entityMetaData[0], roleInternalEveryone, "", "E");
-            PermissionUtil.insertNewPermission(noAccessPermissionSetIdEntity, "", "false"); // false is an indicator for PermissionDetails so the user can create a new PermissionSet on access level "E"
+            var noAccessPermissionSetIdEntity = PermissionUtil.insertSet("", entityMetaData[0], roleInternalEveryone, "", "E");
+            PermissionUtil.insertPermission(noAccessPermissionSetIdEntity, "", "false"); // false is an indicator for PermissionDetails so the user can create a new PermissionSet on access level "E"
         }
     }
 }
@@ -42,11 +44,12 @@ var rolesOrEntities = db.array(db.COLUMN, sqlStr);
 var entityPermSetId = "";
 for each (var entry in rolesOrEntities) { // entry contains either a role or an entity, depending on which param exists
     if (vars.exists("$param.RoleTitle_param") && vars.get("$param.RoleTitle_param")) {
-        entityPermSetId = PermissionUtil.getRootPermissionSet(roleTitle, entry);
+        entityPermSetId = PermissionUtil.getSetRoot(roleTitle, entry);
     } else if (vars.exists("$param.EntityTitle_param") && vars.get("$param.EntityTitle_param")) {
-        entityPermSetId = PermissionUtil.getRootPermissionSet(entry, entityTitle);
+        entityPermSetId = PermissionUtil.getSetRoot(entry, entityTitle);
     }
-    var recordPermSetId = PermissionUtil.getChildRecordPermissionSet(entityPermSetId);
+    var recordPermSetId = db.array(db.COLUMN, SqlCondition.begin().and("ASYS_PERMISSIONSET_ID = '" + entityPermSetId + "'").and("ACCESSTYPE = 'R'")
+        .buildSql("select ASYS_PERMISSIONSETID from ASYS_PERMISSIONSET"), alias);
     var currOverview = [entityPermSetId, entry, "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE"];
 
     // default entity permissions
@@ -63,16 +66,16 @@ for each (var entry in rolesOrEntities) { // entry contains either a role or an
 result.object(res);
 
 function prepareOverview(pPermSetId, pCurrOverview, pMode) {
-    var permId, defaultPermActionId, conditionalPermActionId = [], currOverview;
+    var conditionalPermActionId = [], currOverview;
     switch (pMode) {
         case "default":
-            permId = PermissionUtil.getDefaultPermission(pPermSetId);
-            defaultPermActionId = PermissionUtil.getPermissionAction(permId);
+            var permId = PermissionUtil.getPermissionWithoutCond(pPermSetId);
+            var defaultPermActionId = PermissionUtil.getActions([permId]);
             currOverview = pCurrOverview;
     
             if (PermissionUtil.getPermissionCondType(permId) == "true") {
                 for each (let actionSets in defaultPermActionId) {
-                    switch (PermissionUtil.resolvePermissionActionId(actionSets)) {
+                    switch (PermissionUtil.resolveActionId(actionSets)) {
                         case "view":
                             currOverview[2] = "VAADIN:CIRCLE";
                             break;
@@ -93,15 +96,15 @@ function prepareOverview(pPermSetId, pCurrOverview, pMode) {
             }
             break;
         case "conditional":
-            permId = PermissionUtil.getConditionalPermission(pPermSetId);
-            for each (let perm in permId) {
-                conditionalPermActionId.push(PermissionUtil.getPermissionAction(perm));
+            var permIds = PermissionUtil.getPermissionWithCond(pPermSetId);
+            for each (let permId in permIds) {
+                conditionalPermActionId.push(PermissionUtil.getActions([permId]));
             }
             currOverview = pCurrOverview;
             
             for each (let actionSets in conditionalPermActionId) {
                 for each (let action in actionSets) {
-                    switch (PermissionUtil.resolvePermissionActionId(action)) {
+                    switch (PermissionUtil.resolveActionId(action)) {
                         case "view":
                             currOverview[2] = "VAADIN:CIRCLE_THIN";
                             break;
diff --git a/neonContext/Person/Person.aod b/neonContext/Person/Person.aod
index 814818bacfb89505c438381811ca595b54957bd3..7a804792a5b5bf5fe6bf80f20f2d8bb40b7f8ed7 100644
--- a/neonContext/Person/Person.aod
+++ b/neonContext/Person/Person.aod
@@ -3,6 +3,7 @@
   <name>Person</name>
   <title>Contact</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <icon>VAADIN:USERS</icon>
   <mainview>PersonMain_view</mainview>
   <filterview>PersonFilter_view</filterview>
   <editview>PersonEdit_view</editview>
diff --git a/neonContext/Product/Product.aod b/neonContext/Product/Product.aod
index a91bfe8529ca21610ebc1edcea60092691199a93..48e0689ad689e2e10a99877fb4ab129bac24b0e6 100644
--- a/neonContext/Product/Product.aod
+++ b/neonContext/Product/Product.aod
@@ -3,6 +3,7 @@
   <name>Product</name>
   <title>Product</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <icon>VAADIN:HAMMER</icon>
   <mainview>ProductMain_view</mainview>
   <filterview>ProductFilter_view</filterview>
   <editview>ProductEdit_view</editview>
diff --git a/neonView/AttributeTree_view/AttributeTree_view.aod b/neonView/AttributeTree_view/AttributeTree_view.aod
index 4ae97a5345fa9c9edb737b8180dff19243b3ee16..544cab8acec1088f10cbb63119e33cb7a15bbb7c 100644
--- a/neonView/AttributeTree_view/AttributeTree_view.aod
+++ b/neonView/AttributeTree_view/AttributeTree_view.aod
@@ -12,7 +12,6 @@
       <name>Attributes</name>
       <parentField>ATTRIBUTE_PARENT_ID</parentField>
       <titleField>ATTRIBUTE_NAME</titleField>
-      <descriptionField>ATTRIBUTE_TYPE</descriptionField>
       <entryAction>openDetails</entryAction>
       <entityField>#ENTITY</entityField>
       <isCreatable v="false" />
diff --git a/neonView/CampaignEdit_view/CampaignEdit_view.aod b/neonView/CampaignEdit_view/CampaignEdit_view.aod
index 751828e39b362d14374f2d7dcdf4bf6417f2168c..410733ddd8d5fc98c1af61d7f16d2f89de442860 100644
--- a/neonView/CampaignEdit_view/CampaignEdit_view.aod
+++ b/neonView/CampaignEdit_view/CampaignEdit_view.aod
@@ -31,6 +31,10 @@
           <name>88f13d08-d164-4bac-95fb-713d47ba255b</name>
           <entityField>STATUS</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>e5e42cfb-094e-4352-8e53-0f15002d1394</name>
+          <entityField>CURRENCY</entityField>
+        </entityFieldLink>
         <entityFieldLink>
           <name>114121d3-093a-40e7-9e0e-f187c9eaa5f1</name>
           <entityField>DESCRIPTION</entityField>
diff --git a/neonView/CampaignPreview_view/CampaignPreview_view.aod b/neonView/CampaignPreview_view/CampaignPreview_view.aod
index 3ed1410f3b2246bcc7f3460c017b934b0560478c..71a1fd0f5fe754e552886972b7f6ca9d2c6223c0 100644
--- a/neonView/CampaignPreview_view/CampaignPreview_view.aod
+++ b/neonView/CampaignPreview_view/CampaignPreview_view.aod
@@ -47,10 +47,13 @@
     <genericViewTemplate>
       <name>Description</name>
       <showDrawer v="true" />
-      <hideLabels v="true" />
       <entityField>#ENTITY</entityField>
       <title>Beschreibung</title>
       <fields>
+        <entityFieldLink>
+          <name>4f429cd5-2a89-44fc-8c25-37a5350a711f</name>
+          <entityField>CURRENCY</entityField>
+        </entityFieldLink>
         <entityFieldLink>
           <name>d7c993ff-9696-4de8-9ba5-fc7c92a1a22b</name>
           <entityField>DESCRIPTION</entityField>
diff --git a/neonView/SalesprojectMilestoneChartPhase_view/SalesprojectMilestoneChartPhase_view.aod b/neonView/SalesprojectMilestoneChartPhase_view/SalesprojectMilestoneChartPhase_view.aod
index 61a5467d847ad84f6acea38007724fd0ae7a8896..12ed039849a7cee4f5ad7cb03f39ad4e2231e702 100644
--- a/neonView/SalesprojectMilestoneChartPhase_view/SalesprojectMilestoneChartPhase_view.aod
+++ b/neonView/SalesprojectMilestoneChartPhase_view/SalesprojectMilestoneChartPhase_view.aod
@@ -13,9 +13,9 @@
     <multiDataChartViewTemplate>
       <name>MilestoneChart</name>
       <chartType>COLUMN</chartType>
-      <xAxis>VALUE</xAxis>
+      <xAxis>MILESTONEVALUE</xAxis>
       <yAxis>DaysCount</yAxis>
-      <categoryField>TYPE</categoryField>
+      <categoryField>KIND</categoryField>
       <entityField>#ENTITY</entityField>
     </multiDataChartViewTemplate>
   </children>
diff --git a/neonView/SalesprojectMilestoneChartState_view/SalesprojectMilestoneChartState_view.aod b/neonView/SalesprojectMilestoneChartState_view/SalesprojectMilestoneChartState_view.aod
index e1d34f9cad28326fb273d2915714764331311413..d38a2ed9e98ae55eef05dcb5cea30a3127cd00aa 100644
--- a/neonView/SalesprojectMilestoneChartState_view/SalesprojectMilestoneChartState_view.aod
+++ b/neonView/SalesprojectMilestoneChartState_view/SalesprojectMilestoneChartState_view.aod
@@ -13,9 +13,9 @@
     <multiDataChartViewTemplate>
       <name>MilestoneChart</name>
       <chartType>COLUMN</chartType>
-      <xAxis>VALUE</xAxis>
+      <xAxis>MILESTONEVALUE</xAxis>
       <yAxis>DaysCount</yAxis>
-      <categoryField>TYPE</categoryField>
+      <categoryField>KIND</categoryField>
       <entityField>#ENTITY</entityField>
     </multiDataChartViewTemplate>
   </children>
diff --git a/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod b/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod
index cda0efb18582d7cffb57d707d990fe6b5f4e457c..a90d277d3bb575d91d181d4345cf311528d1a510 100644
--- a/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod
+++ b/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod
@@ -19,8 +19,8 @@
           <entityField>ENTRYDATE</entityField>
         </entityFieldLink>
         <entityFieldLink>
-          <name>594e9e35-cf0c-45b6-a32c-885d442adad4</name>
-          <entityField>SOURCE</entityField>
+          <name>3464b72a-8081-49a8-a37f-eda0290bda4c</name>
+          <entityField>TOUCHPOINT</entityField>
         </entityFieldLink>
         <entityFieldLink>
           <name>f97539fd-70ec-44a0-9d49-01fe829f8d81</name>
diff --git a/neonView/SalesprojectSourceFilter_view/SalesprojectSourceFilter_view.aod b/neonView/SalesprojectSourceFilter_view/SalesprojectSourceFilter_view.aod
index 60ad7534c6f7fb9eb093ad4ac2b20bb65521f8b1..f1bd13ccdb0eea8b2d2c3ad5ce8592c1f7c8b58b 100644
--- a/neonView/SalesprojectSourceFilter_view/SalesprojectSourceFilter_view.aod
+++ b/neonView/SalesprojectSourceFilter_view/SalesprojectSourceFilter_view.aod
@@ -28,7 +28,7 @@
         </neonTableColumn>
         <neonTableColumn>
           <name>5e672c0f-af11-46e2-8c25-8c9bd3f153f1</name>
-          <entityField>SOURCE</entityField>
+          <entityField>TOUCHPOINT</entityField>
         </neonTableColumn>
         <neonTableColumn>
           <name>304ed9dd-0f3d-45b2-9195-cc145775f16d</name>
diff --git a/neonView/SalesprojectSourcePreview_view/SalesprojectSourcePreview_view.aod b/neonView/SalesprojectSourcePreview_view/SalesprojectSourcePreview_view.aod
index a79542f89b7ba9b58447f5c27724dddb531a137f..c0b53ad807cf106099ad6e8d004f378c89515e6a 100644
--- a/neonView/SalesprojectSourcePreview_view/SalesprojectSourcePreview_view.aod
+++ b/neonView/SalesprojectSourcePreview_view/SalesprojectSourcePreview_view.aod
@@ -11,7 +11,7 @@
   <children>
     <cardViewTemplate>
       <name>Header</name>
-      <titleField>SOURCE</titleField>
+      <titleField>TOUCHPOINT</titleField>
       <descriptionField>ENTRYDATE</descriptionField>
       <entityField>#ENTITY</entityField>
     </cardViewTemplate>
diff --git a/process/Permission_lib/process.js b/process/Permission_lib/process.js
index 1d8f9942319398d67bcabdfc7751299a6eb594d9..d06b7295339730b1364fe34b7c1bd63a4d21b787 100644
--- a/process/Permission_lib/process.js
+++ b/process/Permission_lib/process.js
@@ -17,92 +17,56 @@ function PermissionUtil () {}
     /**
  * Returns the ids of all subordinated permission sets of a given parent permission set.
  * 
- * @param {String} pPermissionSetId the id of the parent permission set
+ * @param {String} pSetId id of the parent permission set
  * 
  * @result {String[]} array with the ids of every subordinated permission set. The result can never be null.
  */
-    PermissionUtil.getAllChildPermissionSets = function (pPermissionSetId) 
+    PermissionUtil.getChildSetsOfSet = function (pSetId) 
     {   
         return db.array(db.COLUMN, SqlCondition.begin()
-            .and("ASYS_PERMISSIONSET_ID = '" + pPermissionSetId + "'")
+            .and("ASYS_PERMISSIONSET_ID = '" + pSetId + "'")
             .buildSql("select ASYS_PERMISSIONSETID from ASYS_PERMISSIONSET")
             , alias);
     }
 
-    /**
- * Returns the id of the subordinated permission set with accesstype 'record' of a given permission set.
- * 
- * @param {String} pPermissionSetId the id of the parent permission set
- * 
- * @result {String} id of subordinated permission set. The result can never be null.
- */
-    PermissionUtil.getChildRecordPermissionSet = function (pPermissionSetId) 
-    {   
-        return db.array(db.COLUMN, SqlCondition.begin()
-            .and("ASYS_PERMISSIONSET_ID = '" + pPermissionSetId + "'")
-            .and("ACCESSTYPE = 'R'")
-            .buildSql("select ASYS_PERMISSIONSETID from ASYS_PERMISSIONSET")
-            , alias);
-    }
-
-    /**
- * Returns all subordinated permissions of a given permission set.
- * 
- * @param {String} pPermissionSetId the id of the parent permission set
- * 
- * @result {String[]} array with the ids of every subordinated permission. The result can never be null.
- */
-    PermissionUtil.getAllChildPermissions = function (pPermissionSetId)
-    {
-        return db.array(db.COLUMN, SqlCondition.begin()
-            .and("ASYS_PERMISSIONSET.ASYS_PERMISSIONSETID = '" + pPermissionSetId + "'")
-            .buildSql("select ASYS_PERMISSION.ASYS_PERMISSIONID from ASYS_PERMISSION"
-                + " join ASYS_PERMISSIONSET on ASYS_PERMISSIONSET.ASYS_PERMISSIONSETID = ASYS_PERMISSION.ASYS_PERMISSIONSET_ID")
-            , alias);
-    }
-
     /**
  * Returns all subordinated permission actions of a given permission set.
  * 
- * @param {String} pPermissionSetId the id of the parent permission set
+ * @param {String} pSetId id of the parent permission set
  * 
  * @result {String[]} array with the ids of every subordinated permission action. The result can never be null.
  */
-    PermissionUtil.getAllChildPermissionActions = function (pPermissionSetId)
+    PermissionUtil.getActionsOfSet = function (pSetId)
     {
         return db.array(db.COLUMN, SqlCondition.begin()
-            .and("ASYS_PERMISSION.ASYS_PERMISSIONSET_ID = '" + pPermissionSetId + "'")
+            .and("ASYS_PERMISSION.ASYS_PERMISSIONSET_ID = '" + pSetId + "'")
             .buildSql("select ASYS_PERMISSIONACTION.ASYS_PERMISSIONACTIONID from ASYS_PERMISSIONACTION"
                 + " join ASYS_PERMISSION on ASYS_PERMISSION.ASYS_PERMISSIONID = ASYS_PERMISSIONACTION.ASYS_PERMISSION_ID")
             , alias);
     }
-
+    
     /**
- * Returns all subordinated permission actions of a given permission.
+ * Returns all permission actions of the given permissions.
  * 
- * @param {String} pPermissionId the id of the parent permission
+ * @param {String[]} pPermIds the ids of the permissions
  * 
- * @result {String[]} array with the ids of every subordinated permission action. The result can never be null.
+ * @result {String[]} returns ids of all permission actions. The result can never be null.
  */
-    PermissionUtil.getAllChildPermissionActions = function (pPermissionId)
-    {
-        return db.array(db.COLUMN, SqlCondition.begin()
-            .and("ASYS_PERMISSION_ID = '" + pPermissionId + "'")
-            .buildSql("select ASYS_PERMISSIONACTIONID from ASYS_PERMISSIONACTION")
-            , alias);
+    PermissionUtil.getActions = function(pPermIds) {
+        return db.table("select ASYS_PERMISSIONACTIONID from ASYS_PERMISSIONACTION where ASYS_PERMISSIONACTION.ASYS_PERMISSION_ID in ('" + pPermIds.join("','") + "')", alias);
     }
 
     /**
  * Returns the action a given permission action id.
  * 
- * @param {String} pPermissionActionId the id of the action
+ * @param {String} pActionId id of the action
  * 
- * @result {String} action name as readable string of the given permission action id. Never 'null', empty string if there is no result.
+ * @result {String} title of action as readable string of the given action id. Never 'null', empty string if there is no result.
  */
-    PermissionUtil.resolvePermissionActionId = function (pPermissionActionId)
+    PermissionUtil.resolveActionId = function (pActionId)
     {
         return db.cell(SqlCondition.begin()
-            .and("ASYS_PERMISSIONACTIONID = '" + pPermissionActionId + "'")
+            .and("ASYS_PERMISSIONACTIONID = '" + pActionId + "'")
             .buildSql("select ASYS_PERMISSIONACTION.ACTION from ASYS_PERMISSIONACTION")
             , alias);
     }
@@ -131,13 +95,13 @@ function PermissionUtil () {}
     }
 
     /**
- * Returns the first index at which a given permissionid can be found in the array, or -1 if it is not present.
- * 
- * @param {String} pPermId the id of the permission
+ * Returns the first index at which a given permissionid can be found in an array, or -1 if it is not present.
  * 
  * @param {String[]} pPermTable permission table
- * 
- * @result {int} returns the position (index) of the searched permission in the table, otherwise returns -1 if not found
+ *  
+ * @param {String} pPermId id of the permission
+ *
+ * @result {int} returns position (index) of the searched permission in the table, otherwise returns -1 if not found
  */
     PermissionUtil.indexOfPermId = function(pPermTable, pPermId) {
         var notFound = -1;
@@ -167,7 +131,7 @@ function PermissionUtil () {}
     /**
  * Checks if the given string is different to the string of a column in the given database table.
  * 
- * @param {String} pId the id
+ * @param {String} pId id of DB entry
  * 
  * @param {String} pString string which has to be checked if different
  * 
@@ -186,7 +150,7 @@ function PermissionUtil () {}
     /**
  * Updates the value of the column in table if the values are different.
  * 
- * @param {String} pId the id
+ * @param {String} pId id of DB entry
  * 
  * @param {String} pValue string which gets checked if different
  * 
@@ -209,9 +173,9 @@ function PermissionUtil () {}
     /**
  * Gets the number of permissions which are linked to the given entity.
  * 
- * @param {String} pEntityName The name of the entity
+ * @param {String} pEntityName name of the entity
  * 
- * @result {Integer} returns the number of permissions linked to the entity.
+ * @result {Integer} returns number of permissions linked to the entity.
  */
     PermissionUtil.getNumberOfPermissions = function(pEntityName) {
         var table = "ASYS_PERMISSIONSET";
@@ -222,101 +186,71 @@ function PermissionUtil () {}
     /**
  * Gets the default permission of the root permission set.
  * 
- * @param {String} pPermId the id of the permission
+ * @param {String} pPermId id of the permission
  * 
- * @result {String} returns the id of the default permission of the root permission set. Never 'null', empty string if there is no result.
+ * @result {String} returns id of the default permission of the root permission set. Never 'null', empty string if there is no result.
  */
-    PermissionUtil.getRootPermission = function(pPermId) {
-        var sqlStr = "select ASYS_PERMISSIONSET_ID from ASYS_PERMISSION where ASYS_PERMISSIONID = '" + pPermId + "'";
-        var parentPermSet = db.array(db.ROW, sqlStr, alias);
+    PermissionUtil.getPermissionRoot = function(pPermId) {
+        var parentSet = [PermissionUtil.getParentSet(pPermId)];
 
-        while (parentPermSet[0] != "") {
-            sqlStr = "select ASYS_PERMISSIONSET_ID, ASYS_PERMISSIONSETID from ASYS_PERMISSIONSET where ASYS_PERMISSIONSETID = '" + parentPermSet[0] + "'";
-            parentPermSet = db.array(db.ROW, sqlStr, alias);
+        while (parentSet[0] != "") {
+            let sqlStr = "select ASYS_PERMISSIONSET_ID, ASYS_PERMISSIONSETID from ASYS_PERMISSIONSET where ASYS_PERMISSIONSETID = '" + parentSet[0] + "'";
+            parentSet = db.array(db.ROW, sqlStr, alias);
         }
     
-        sqlStr = "select ASYS_PERMISSIONID from ASYS_PERMISSION where ASYS_PERMISSIONSET_ID = '" + parentPermSet[1] + "'";
-        return db.cell(sqlStr, alias);
-    }
-
-    /**
- * Gets the default field permission of the root field permission set.
- * 
- * @param {String} pPermId the id of the field permission
- * 
- * @result {String} returns the id of the default field permission of the root field permission set. Never 'null', empty string if there is no result.
- */
-    PermissionUtil.getRootFieldPermission = function(pPermId) {
-        var sqlStr = "select ASYS_PERMISSIONSET_ID from ASYS_PERMISSION where ASYS_PERMISSIONID = '" + pPermId + "'";
-        var parentFieldPermSet = db.array(db.ROW, sqlStr, alias);
-    
-        sqlStr = "select ASYS_PERMISSIONID from ASYS_PERMISSION where ASYS_PERMISSIONSET_ID = '" + parentFieldPermSet + "' and cond is null";
-        return db.cell(sqlStr, alias);
+        return PermissionUtil.getPermissionWithoutCond(parentSet[1]);
     }
 
     /**
  * Gets the default permission of a given permission set.
  * 
- * @param {String} pPermSetId the id of the permission set
+ * @param {String} pSetId id of the permission set
  * 
- * @result {String} returns the id of the default permission of a given permission set. Never 'null', empty string if there is no result.
+ * @result {String} returns id of default permission of given set. Never 'null', empty string if there is no result.
  */
-    PermissionUtil.getDefaultPermission = function(pPermSetId) {
-        var sqlStr = "select ENTITY_ID from ASYS_PERMISSIONSET where ASYS_PERMISSIONSETID = '" + pPermSetId + "'";
+    PermissionUtil.getPermissionWithoutCond = function(pSetId) {
+        var sqlStr = "select ENTITY_ID from ASYS_PERMISSIONSET where ASYS_PERMISSIONSETID = '" + pSetId + "'";
         var entityName = db.cell(sqlStr, alias);
         var noCond = "{\"entity\":\"" + entityName + "\",\"filter\":{\"type\":\"group\",\"operator\":\"AND\",\"childs\":[]}}";
     
         sqlStr = "select ASYS_PERMISSIONID from ASYS_PERMISSION"
-        + " where ASYS_PERMISSIONSET_ID = '" + pPermSetId + "'"
+        + " where ASYS_PERMISSIONSET_ID = '" + pSetId + "'"
         + " and (COND is null or COND like '%" + noCond + "%')";
         return db.cell(sqlStr, alias);
     }
 
     /**
- * Gets the conditional permissions of a given permission set.
+ * Gets the permissions with conditions of a given permission set.
  * 
- * @param {String} pPermSetId the id of the permission set
+ * @param {String} pSetId the id of the permission set
  * 
- * @result {String[]} returns the ids of the conditional permissions of a given permission set. The result can never be null.
+ * @result {String[]} returns the ids of permissions with conditions of a given permission set. The result can never be null.
  */
-    PermissionUtil.getConditionalPermission = function(pPermSetId) {
-        var sqlStr = "select ENTITY_ID from ASYS_PERMISSIONSET where ASYS_PERMISSIONSETID = '" + pPermSetId + "'";
+    PermissionUtil.getPermissionWithCond = function(pSetId) {
+        var sqlStr = "select ENTITY_ID from ASYS_PERMISSIONSET where ASYS_PERMISSIONSETID = '" + pSetId + "'";
         var entityName = db.cell(sqlStr, alias);
         var noCond = "{\"entity\":\"" + entityName + "\",\"filter\":{\"type\":\"group\",\"operator\":\"AND\",\"childs\":[]}}";
     
         sqlStr = "select ASYS_PERMISSIONID from ASYS_PERMISSION"
-        + " where ASYS_PERMISSIONSET_ID = '" + pPermSetId + "'"
+        + " where ASYS_PERMISSIONSET_ID = '" + pSetId + "'"
         + " and COND is not null and COND not like '" + noCond + "'";
         return db.table(sqlStr, alias);
     }
 
-    /**
- * Gets the permission actions of a given permission.
- * 
- * @param {String} pPermId the id of the permission
- * 
- * @result {String[]} returns the ids of linked actions of a given permission. The result can never be null.
- */
-    PermissionUtil.getPermissionAction = function(pPermId) {
-        var sqlStr = "select ASYS_PERMISSIONACTIONID from ASYS_PERMISSIONACTION"
-        + " where ASYS_PERMISSION_ID = '" + pPermId + "'"
-        return db.table(sqlStr, alias);
-    }
-
     /**
  * Gets the permission set id of a given role-entity-accesstype-combination.
  * 
- * @param {String} pRole the name of the role
+ * @param {String} pRole name of the role
  * 
- * @param {String} pEntity the name of the entity
+ * @param {String} pEntity name of the entity
  * 
- * @param {String} pAccessType the name of the access type (E,R,F)
+ * @param {String} pAccessType name of the access type (E,R,F)
  * 
- * @param {String} pField the name of the field
+ * @param {String} pField name of the field
  * 
- * @result {String} returns the id of the matching permission set. The result can never be null.
+ * @result {String} returns id of the matching permission set. The result can never be null.
  */
-    PermissionUtil.getPermissionSet = function(pRole, pEntity, pAccessType, pField) {
+    PermissionUtil.getSet = function(pRole, pEntity, pAccessType, pField) {
         var sqlStr = "select ASYS_PERMISSIONSETID from ASYS_PERMISSIONSET"
         + " where ROLE_ID = '" + pRole + "' and ENTITY_ID = '" + pEntity + "' and ACCESSTYPE = '" + pAccessType + "'";
         if (pField != null && pField != "" && pField != undefined) {
@@ -328,13 +262,13 @@ function PermissionUtil () {}
     /**
  * Gets the root permission set of a entity-role-combination.
  * 
- * @param {String} pRole the id of a role
+ * @param {String} pRole id of a role
  * 
- * @param {String} pEntity the id of an entity
+ * @param {String} pEntity id of an entity
  * 
- * @result {String} returns the id of the root permission set of the given entity-role-combination. Never 'null', empty string if there is no result.
+ * @result {String} returns id of the root permission set of the given entity-role-combination. Never 'null', empty string if there is no result.
  */
-    PermissionUtil.getRootPermissionSet = function(pRole, pEntity) {
+    PermissionUtil.getSetRoot = function(pRole, pEntity) {
         var sqlStr = "select ASYS_PERMISSIONSETID from ASYS_PERMISSIONSET"
         + " where ROLE_ID = '" + pRole + "' and ENTITY_ID = '" + pEntity +"' and ACCESSTYPE = 'E'";
         return db.cell(sqlStr, alias);
@@ -343,27 +277,27 @@ function PermissionUtil () {}
     /**
  * Gets the parent permission set of a permission.
  * 
- * @param {String} pPermId the id of the permission
+ * @param {String} pPermId id of the permission
  * 
- * @result {String} returns the id of the parent permission set of the given permission. Never 'null', empty string if there is no result.
+ * @result {String} returns id of the parent set of the given permission. Never 'null', empty string if there is no result.
  */
-    PermissionUtil.getParentPermissionSet = function(pPermId) {
+    PermissionUtil.getParentSet = function(pPermId) {
         var sqlStr = "select ASYS_PERMISSIONSET_ID from ASYS_PERMISSION"
         + " where ASYS_PERMISSIONID = '" + pPermId + "'";
         return db.cell(sqlStr, alias);
     }
 
     /**
- * Checks if the given permission has any children left.
+ * Checks if the given permission set has any children left.
  * 
- * @param {String} pPermSetId the id of the permission set
+ * @param {String} pSetId id of the permission set
  * 
  * @result {Boolean} returns true if permission set has no children, otherwise false
  */
-    PermissionUtil.permSetIsEmpty = function(pPermSetId) {
-        var subSets = PermissionUtil.getAllChildPermissionSets(pPermSetId);
-        var subPerms = PermissionUtil.getAllChildPermissions(pPermSetId);
-        var subActions = PermissionUtil.getAllChildPermissionActions(pPermSetId);
+    PermissionUtil.setIsEmpty = function(pSetId) {
+        var subSets = PermissionUtil.getChildSetsOfSet(pSetId);
+        var subPerms = PermissionUtil.getPermissions(pSetId);
+        var subActions = PermissionUtil.getActionsOfSet(pSetId);
     
         if (subActions.length == 0 && subPerms == 0 && subSets == 0) 
             return true;
@@ -373,23 +307,28 @@ function PermissionUtil () {}
     /**
  * Returns all permissions of the given permission sets.
  * 
- * @param {String[]} pPermSetIds the ids of the permission sets
+ * @param {String[]} pSetIds the ids of the permission sets
  * 
- * @result {String[]} returns ids of all permissions. The result can never be null.
+ * @result {String[]} array with ids of all subordinated permissions. The result can never be null.
  */
-    PermissionUtil.getAllPermissions = function(pPermSetIds) {
-        return db.table("select ASYS_PERMISSIONID from ASYS_PERMISSION where ASYS_PERMISSION.ASYS_PERMISSIONSET_ID in ('" + pPermSetIds.join("','") + "')", alias);
+    PermissionUtil.getPermissions = function(pSetIds) {
+        return db.table("select ASYS_PERMISSIONID from ASYS_PERMISSION where ASYS_PERMISSION.ASYS_PERMISSIONSET_ID in ('" + pSetIds.join("','") + "')", alias);
     }
-
+    
     /**
- * Returns all permission actions of the given permissions.
+ * Returns all subordinated permissions of a given permission set.
  * 
- * @param {String[]} pPermIds the ids of the permissions
+ * @param {String} pSetId the id of the parent permission set
  * 
- * @result {String[]} returns ids of all permission actions. The result can never be null.
+ * @result {String[]} array with ids of all subordinated permission. The result can never be null.
  */
-    PermissionUtil.getAllPermissionActions = function(pPermIds) {
-        return db.table("select ASYS_PERMISSIONACTIONID from ASYS_PERMISSIONACTION where ASYS_PERMISSIONACTION.ASYS_PERMISSION_ID in ('" + pPermIds.join("','") + "')", alias);
+    PermissionUtil.getPermissions = function (pSetId)
+    {
+        return db.array(db.COLUMN, SqlCondition.begin()
+            .and("ASYS_PERMISSIONSET.ASYS_PERMISSIONSETID = '" + pSetId + "'")
+            .buildSql("select ASYS_PERMISSION.ASYS_PERMISSIONID from ASYS_PERMISSION"
+                + " join ASYS_PERMISSIONSET on ASYS_PERMISSIONSET.ASYS_PERMISSIONSETID = ASYS_PERMISSION.ASYS_PERMISSIONSET_ID")
+            , alias);
     }
 
     /**
@@ -402,45 +341,45 @@ function PermissionUtil () {}
     PermissionUtil.getPermissionCondType = function(pPermId) {
         return db.cell("select CONDTYPE from ASYS_PERMISSION where ASYS_PERMISSION.ASYS_PERMISSIONID = '" + pPermId + "'", alias);
     }
-
+    
     /**
  * Inserts a new instance of a permission set into ASYS_PERMISSIONSET.
  * 
- * @param {String} pParentPermSet The parent permission set, empty if root node
+ * @param {String} pParentPermSetId parent permission set, empty if root node
  * 
- * @param {String} pEntity The entity to which the PermissionSet is linked, mandatory
+ * @param {String} pEntity entity to which the PermissionSet is linked, mandatory
  * 
- * @param {String} pRole The Role to which the PermissionSet is linked, mandatory
+ * @param {String} pRole Role to which the PermissionSet is linked, mandatory
  * 
- * @param {String} pField The Field to which the PermissionSet is linked, empty if no field permission
+ * @param {String} pField Field to which the PermissionSet is linked, empty if no field permission
  * 
  * @param {String} pAccessType Entity, Record or Field (E, R, F), mandatory
  * 
- * @result {Integer} returns the id of the inserted permission set
+ * @result {Integer} returns id of the inserted permission set
  */
-    PermissionUtil.insertNewPermissionSet = function(pParentPermSet, pEntity, pRole, pField, pAccessType) {
+    PermissionUtil.insertSet = function(pParentPermSetId, pEntity, pRole, pField, pAccessType) {
         var table = "ASYS_PERMISSIONSET";
         var cols = db.getColumns(table, alias);
-        var permsetid = util.getNewUUID();
-        var vals = [pAccessType, permsetid, pParentPermSet, pEntity, pField, pRole];
+        var setId = util.getNewUUID();
+        var vals = [pAccessType, setId, pParentPermSetId, pEntity, pField, pRole];
         db.insertData(table, cols, null, vals, alias);
-        return permsetid;
+        return setId;
     }
 
     /**
  * Inserts a new instance of a permission into ASYS_PERMISSION.
  * 
- * @param {String} pParentPermSet The parent permission set, mandatory
+ * @param {String} pParentSetId parent permission set, mandatory
  * 
- * @param {String} pCond The condition of the permission, empty if no condition
+ * @param {String} pCond condition of the permission, empty if no condition
  * 
- * @param {String} pCondType The Condition Type of the permission, should nearly always be "true"
+ * @param {String} pCondType condition Type of the permission, should nearly always be "true"
  * 
- * @param {String} pPermId The id of the new permission (can be empty/null)
+ * @param {String} pPermId id of the new permission (can be empty/null)
  * 
- * @result {Integer} returns the id of the inserted permission
+ * @result {Integer} returns id of the inserted permission
  */
-    PermissionUtil.insertNewPermission = function(pParentPermSet, pCond, pCondType, pPermId) {
+    PermissionUtil.insertPermission = function(pParentSetId, pCond, pCondType, pPermId) {
         var table = "ASYS_PERMISSION";
         var cols = db.getColumns(table, alias);
         var permId;
@@ -449,7 +388,7 @@ function PermissionUtil () {}
         } else {
             permId = util.getNewUUID(); 
         }
-        var vals = [permId, pParentPermSet, pCond, pCondType];
+        var vals = [permId, pParentSetId, pCond, pCondType];
         db.insertData(table, cols, null, vals, alias);  
         return permId;
     }
@@ -457,42 +396,42 @@ function PermissionUtil () {}
     /**
  * Inserts a new instance of a permission action into ASYS_PERMISSIONACTION.
  * 
- * @param {String} pParentPerm The parent permission, mandatory
+ * @param {String} pParentPermId parent permission, mandatory
  * 
- * @param {String} pAction Action (view, create,...), mandatory
+ * @param {String} pAction title of action (view, create,...), mandatory
  * 
- * @param {String} pActionId The id of the new permission action
+ * @param {String} pActionId id of the new permission action
  * 
- * @result {Integer} returns the id of the inserted permission action, returns null if insert was not possible
+ * @result {Integer} returns id of the inserted permission action, returns null if insert was not possible
  */
-    PermissionUtil.insertNewPermissionAction = function(pParentPerm, pAction, pActionId) {
+    PermissionUtil.insertAction = function(pParentPermId, pAction, pActionId) {
         var table = "ASYS_PERMISSIONACTION";
         var cols = db.getColumns(table, alias);
-        var permactionid;
-        var sqlStr = "select ASYS_PERMISSIONACTIONID from ASYS_PERMISSIONACTION where ASYS_PERMISSIONACTIONID = '" + pActionId + "'"; // if same id is already in db -> create new UID
+        var actionId;
+        var sqlStr = "select ASYS_PERMISSIONACTIONID from ASYS_PERMISSIONACTION where ASYS_PERMISSIONACTIONID = '" + pActionId + "'";
 
         if (pActionId != null & pActionId != "" && pActionId != undefined && db.cell(sqlStr, alias) == "") {
-            permactionid = pActionId;
+            actionId = pActionId;
         } else {
-            permactionid = util.getNewUUID();
+            actionId = util.getNewUUID(); // if same id is already in db -> create new UID
         }
-        var vals = [pAction, permactionid, pParentPerm];
+        var vals = [pAction, actionId, pParentPermId];
         if (db.insertData(table, cols, null, vals, alias) == 0) {
             return null;
         }
-        return permactionid;
+        return actionId;
     }
 
     /**
      * Returns the cond type of a permission.
      * 
-     * @param {String} pPerm The permission, mandatory
+     * @param {String} pPermId id of the permission which condition type should be returned, mandatory
      * 
      * @result {Integer} returns the cond type of a permission
      */
-    PermissionUtil.getCondType = function(pPerm) {
+    PermissionUtil.getCondType = function(pPermId) {
         var table = "ASYS_PERMISSION";
-        var sqlStr = "select CONDTYPE from " + table + " where ASYS_PERMISSIONID = '" + pPerm + "'";
+        var sqlStr = "select CONDTYPE from " + table + " where ASYS_PERMISSIONID = '" + pPermId + "'";
         return db.cell(sqlStr, alias);
     }
 
@@ -503,7 +442,7 @@ function PermissionUtil () {}
      * 
      * @result {Boolean} true if permission exists, otherwise false
      */
-    PermissionUtil.existsPermission = function(pPermId) {
+    PermissionUtil.permissionExists = function(pPermId) {
         var table = "ASYS_PERMISSION";
         var sqlStr = "select COUNT(*) from " + table + " where ASYS_PERMISSIONID = '" + pPermId + "'";
         if (db.cell(sqlStr, alias) != "0") {
@@ -549,17 +488,17 @@ function PermissionUtil () {}
     /**
      * Returns permissionid of the permission with fitting parameters, otherwise returns empty string
      * 
-     * @param {String} pRole Name of the role
+     * @param {String} pRole name of the role
      * 
-     * @param {String} pEntity Name of the entity
+     * @param {String} pEntity name of the entity
      * 
-     * @param {String} pField Name of the field
+     * @param {String} pField name of the field
      * 
-     * @param {String} pAccesstype Accesstype (E,F,R)
+     * @param {String} pAccesstype accesstype (E,F,R)
      * 
-     * @param {String} pCondition The condition (Filter in JSON-format)
+     * @param {String} pCondition condition (Filter in JSON-format)
      * 
-     * @param {String} pCondtype Type of the condition (true/false)
+     * @param {String} pCondtype type of the condition (true/false)
      * 
      * @result {String} Returns the id of the permission with fitting parameters, otherwise returns empty string, can never be null
      *
@@ -596,13 +535,13 @@ function PermissionUtil () {}
     /**
      * Deletes a permission action from ASYS_PERMISSIONACTION.
      * 
-     * @param {String} pPermActionId The permission action id which should be deleted, mandatory
+     * @param {String} pActionId permission action id which should be deleted, mandatory
      * 
-     * @result {Integer} returns the number of deleted records
+     * @result {Integer} returns number of deleted records
      */
-    PermissionUtil.deletePermissionAction = function(pPermActionId) {
+    PermissionUtil.deleteAction = function(pActionId) {
         var table = "ASYS_PERMISSIONACTION";
-        var cond = " ASYS_PERMISSIONACTIONID = '" + pPermActionId + "'";
+        var cond = " ASYS_PERMISSIONACTIONID = '" + pActionId + "'";
         return db.deleteData(table, cond, alias);
     }
 
diff --git a/process/autostartNeon/process.js b/process/autostartNeon/process.js
index ff0ca7831fc9a39fd0b7a1cd45f1899a9ff75570..91769577801a3143e8c682994d529f71287d0578 100644
--- a/process/autostartNeon/process.js
+++ b/process/autostartNeon/process.js
@@ -29,8 +29,8 @@ for each (let entityMetaData in entitiesMetaData) {
         entitiesUsePermFlagSet.push(entityMetaData[0])
         if (PermissionUtil.getNumberOfPermissions(entityMetaData[0]) == 0) {
             // no permissions found for the given entity -> create permissionset for role INTERNAL_EVERYONE with five X's for view, create, read, update, delete         
-            var noAccessPermissionSetIdEntity = PermissionUtil.insertNewPermissionSet("", entityMetaData[0], roleInternalEveryone, "", "E");
-            PermissionUtil.insertNewPermission(noAccessPermissionSetIdEntity, "", "false"); // false is an indicator for PermissionDetails so the user can create a new PermissionSet on access level "E"
+            var noAccessPermissionSetIdEntity = PermissionUtil.insertSet("", entityMetaData[0], roleInternalEveryone, "", "E");
+            PermissionUtil.insertPermission(noAccessPermissionSetIdEntity, "", "false"); // false is an indicator for PermissionDetails so the user can create a new PermissionSet on access level "E"
         }
     }
 }