diff --git a/.liquibase/Data_alias/basic/2021.2.3/Bulkmail/alter_bulkmailrecipient_drop_problem.xml b/.liquibase/Data_alias/basic/2021.2.3/Bulkmail/alter_bulkmailrecipient_drop_problem.xml
new file mode 100644
index 0000000000000000000000000000000000000000..025b383dbb9bb2dd9562a5ed8ab0b391b66a0d37
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.2.3/Bulkmail/alter_bulkmailrecipient_drop_problem.xml
@@ -0,0 +1,8 @@
+<?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="m.groppe" id="2b6407d3-ca7c-4215-913a-1c3f216e26ff">
+        <dropColumn tableName="BULKMAILRECIPIENT" columnName="PROBLEM"/>
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.2.3/Bulkmail/changelog.xml b/.liquibase/Data_alias/basic/2021.2.3/Bulkmail/changelog.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f29e1064b9dc0389d7784fc9af3bbd218e07798c
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.2.3/Bulkmail/changelog.xml
@@ -0,0 +1,8 @@
+<?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">
+    <include relativeToChangelogFile="true" file="delete_bulkmailproblem_keyword.xml"/>
+    <include relativeToChangelogFile="true" file="insert_bulkmail_failed_status.xml"/>
+    <include relativeToChangelogFile="true" file="alter_bulkmailrecipient_drop_problem.xml"/>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.2.3/Bulkmail/delete_bulkmailproblem_keyword.xml b/.liquibase/Data_alias/basic/2021.2.3/Bulkmail/delete_bulkmailproblem_keyword.xml
new file mode 100644
index 0000000000000000000000000000000000000000..27929bb3e45cc1b3e3f77f41474a81dad55ba780
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.2.3/Bulkmail/delete_bulkmailproblem_keyword.xml
@@ -0,0 +1,25 @@
+<?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="m.groppe" id="85f8e0b2-57a7-427e-8c88-85ce0ea015df">
+        <delete tableName="AB_KEYWORD_ENTRY">
+                <where>AB_KEYWORD_ENTRYID = ?</where>
+                <whereParams>
+                    <param value="9f11c52f-4c79-4027-877a-0f6eb828fa22" />
+                </whereParams>
+       </delete>
+       <delete tableName="AB_KEYWORD_ENTRY">
+                <where>AB_KEYWORD_ENTRYID = ?</where>
+                <whereParams>
+                    <param value="a18e7a37-c5f6-4f7b-8db6-3018dedbd43f" />
+                </whereParams>
+       </delete>
+       <delete tableName="AB_KEYWORD_CATEGORY">
+                <where>AB_KEYWORD_CATEGORYID = ?</where>
+                <whereParams>
+                    <param value="e685dcfe-cbf9-4a3f-b45f-3f449779a48f" />
+                </whereParams>
+       </delete>
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.2.3/Bulkmail/insert_bulkmail_failed_status.xml b/.liquibase/Data_alias/basic/2021.2.3/Bulkmail/insert_bulkmail_failed_status.xml
new file mode 100644
index 0000000000000000000000000000000000000000..63b07b792d09e9b5b0a60eb3b692bd213e4dcf4f
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.2.3/Bulkmail/insert_bulkmail_failed_status.xml
@@ -0,0 +1,16 @@
+<?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="m.groppe" id="19c6a8a0-fe0a-4139-ad62-d99a26d95c48">
+    <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="c40e1342-ab42-46fc-a146-55dc7420b1c2"/>
+            <column name="KEYID" value="BULKMAILFAILED"/>
+            <column name="TITLE" value="Failed"/>
+            <column name="CONTAINER" value="BulkMailStatus"/>
+            <column name="SORTING" valueNumeric="6"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="AB_KEYWORD_CATEGORY_ID" value="76fc02b9-a1b6-4c76-bdd5-a52d0e1ef286"/>
+    </insert>
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.2.3/KnowledgeManagement/add_KnowledgeType.xml b/.liquibase/Data_alias/basic/2021.2.3/KnowledgeManagement/add_KnowledgeType.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5d7e247cd11f99383b4b13482b08ec717e37ea9e
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.2.3/KnowledgeManagement/add_KnowledgeType.xml
@@ -0,0 +1,15 @@
+<?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="v.broens" id="b2f597ae-19fc-4391-a111-fd1308377a5d"> 
+    <insert tableName="AB_KEYWORD_ENTRY">
+      <column name="AB_KEYWORD_ENTRYID" value="SOLUTION"/>
+      <column name="KEYID"  value="SOLUTION"/>
+      <column name="TITLE" value="solution"/>
+      <column name="CONTAINER" value="KnowledgeType"/>
+      <column name="SORTING" valueNumeric="3"/>
+      <column name="ISACTIVE" valueNumeric="1"/>
+      <column name="ISESSENTIAL" valueNumeric="0"/>
+      <column name="AB_KEYWORD_CATEGORY_ID" value="6a4a5250-6231-4bf7-8c16-bb5994c4e2d0"/>
+    </insert>
+    </changeSet>
+</databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/2021.2.3/KnowledgeManagement/alter_KnowledgeManagement.xml b/.liquibase/Data_alias/basic/2021.2.3/KnowledgeManagement/alter_KnowledgeManagement.xml
new file mode 100644
index 0000000000000000000000000000000000000000..adc0584f7c9a79ad80df56760a5e53a24676e322
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.2.3/KnowledgeManagement/alter_KnowledgeManagement.xml
@@ -0,0 +1,18 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="V.Broens" id="39c0f2fd-4bc8-4c10-a66a-0ac87d270e54">
+        <addColumn tableName="KNOWLEDGEMANAGEMENT">
+            <column name="USEINALLTICKETCATEGORIES" type="TINYINT" defaultValueNumeric="0">
+                <constraints nullable="false"/>
+            </column>
+            <column name="USEINALLINBOXES" type="TINYINT" defaultValueNumeric="0">
+                <constraints nullable="false"/>
+            </column>
+            <column name="NUMBEROFVIEWS" type="INT" defaultValueNumeric="0">
+                <constraints nullable="false"/>
+            </column>
+            <column name="KNOWLEDGEMANAGEMENTCATEGORY_ID" type="CHAR(36)"/>
+            <column name="SUMMARY" type="NVARCHAR(255)"/>
+        </addColumn>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.2.3/KnowledgeManagement/changelog.xml b/.liquibase/Data_alias/basic/2021.2.3/KnowledgeManagement/changelog.xml
new file mode 100644
index 0000000000000000000000000000000000000000..44670bc349037a350068cedf60ce7b7208cd461c
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.2.3/KnowledgeManagement/changelog.xml
@@ -0,0 +1,10 @@
+<?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">
+    <include relativeToChangelogFile="true" file="alter_KnowledgeManagement.xml"/>
+    <include relativeToChangelogFile="true" file="create_KnowledgeManagementTicketCategory.xml"/>
+    <include relativeToChangelogFile="true" file="create_KnowledgeManagementInboxes.xml"/>
+    <include relativeToChangelogFile="true" file="add_KnowledgeType.xml"/>
+    <include relativeToChangelogFile="true" file="create_KnowledgeManagementCategory.xml"/>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.2.3/KnowledgeManagement/create_KnowledgeManagementCategory.xml b/.liquibase/Data_alias/basic/2021.2.3/KnowledgeManagement/create_KnowledgeManagementCategory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..04bfa8ff62aa81cea6ddaf9546e3b3f62b93af5d
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.2.3/KnowledgeManagement/create_KnowledgeManagementCategory.xml
@@ -0,0 +1,22 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="V.Broens" id="33dfd54f-e8ba-43d0-bcac-4ff6bac8a8a4">
+        <createTable tableName="KNOWLEDGEMANAGEMENTCATEGORY">
+            <column name="KNOWLEDGEMANAGEMENTCATEGORYID" type="CHAR(36)">
+                <constraints primaryKey="true" primaryKeyName="PK_KNOWLEDGEMANAGEMENT_CATEGORYID"/>
+            </column>   
+            <column name="NAME" type="NVARCHAR(50))"/>
+            <column name="USER_NEW" type="NVARCHAR(50)">
+                <constraints nullable="false"/>
+            </column>
+            <column name="DATE_NEW" type="DATETIME">
+                <constraints nullable="false"/>
+            </column>
+            <column name="USER_EDIT" type="NVARCHAR(50)" />
+            <column name="DATE_EDIT" type="DATETIME" />
+            <column name="ICON" type="NCLOB" />
+            <column name="ORDERNO" type="SMALLINT" />
+            <column name="SUMMARY" type="NVARCHAR(255)"/>
+        </createTable>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.2.3/KnowledgeManagement/create_KnowledgeManagementInboxes.xml b/.liquibase/Data_alias/basic/2021.2.3/KnowledgeManagement/create_KnowledgeManagementInboxes.xml
new file mode 100644
index 0000000000000000000000000000000000000000..70976f8a4f2533c363cc8d33b7bbb250f167de9c
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.2.3/KnowledgeManagement/create_KnowledgeManagementInboxes.xml
@@ -0,0 +1,20 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="V.Broens" id="b72f5652-d0b2-47df-bb35-1256925f29e1">
+        <createTable tableName="KNOWLEDGEMANAGEMENTINBOX">
+            <column name="KNOWLEDGEMANAGEMENTINBOXID" type="CHAR(36)">
+                <constraints primaryKey="true" primaryKeyName="PK_KNOWLEDGEMANAGEMENT_TICKETCATEGORYID"/>
+            </column>   
+            <column name="KNOWLEDGEMANAGEMENT_ID" type="CHAR(36)"/>    
+            <column name="INBOX_ID" type="CHAR(36)"/>
+            <column name="USER_NEW" type="NVARCHAR(50)">
+                <constraints nullable="false"/>
+            </column>
+            <column name="DATE_NEW" type="DATETIME">
+                <constraints nullable="false"/>
+            </column>
+            <column name="USER_EDIT" type="NVARCHAR(50)" />
+            <column name="DATE_EDIT" type="DATETIME" />
+        </createTable>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.2.3/KnowledgeManagement/create_KnowledgeManagementTicketCategory.xml b/.liquibase/Data_alias/basic/2021.2.3/KnowledgeManagement/create_KnowledgeManagementTicketCategory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0da3462d7c3bd69da18ce758b76651f86612b133
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.2.3/KnowledgeManagement/create_KnowledgeManagementTicketCategory.xml
@@ -0,0 +1,20 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="V.Broens" id="63f2499b-68b6-457e-bbbb-c156f43d23ff">
+        <createTable tableName="KNOWLEDGEMANAGEMENTTICKETCATEGORY">
+            <column name="KNOWLEDGEMANAGEMENTTICKETCATEGORYID" type="CHAR(36)">
+                <constraints primaryKey="true" primaryKeyName="PK_KNOWLEDGEMANAGEMENT_TICKETCATEGORYID"/>
+            </column>   
+            <column name="KNOWLEDGEMANAGEMENT_ID" type="CHAR(36)"/>    
+            <column name="CLASSIFICATION" type="VARCHAR(36)"/>
+            <column name="USER_NEW" type="NVARCHAR(50)">
+                <constraints nullable="false"/>
+            </column>
+            <column name="DATE_NEW" type="DATETIME">
+                <constraints nullable="false"/>
+            </column>
+            <column name="USER_EDIT" type="NVARCHAR(50)" />
+            <column name="DATE_EDIT" type="DATETIME" />
+        </createTable>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.2.3/LikeButton/changelog.xml b/.liquibase/Data_alias/basic/2021.2.3/LikeButton/changelog.xml
new file mode 100644
index 0000000000000000000000000000000000000000..47bbb8d41bc389d8ac8d7858b52859efbdfc16f6
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.2.3/LikeButton/changelog.xml
@@ -0,0 +1,6 @@
+<?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">
+    <include relativeToChangelogFile="true" file="create_LikeButton.xml"/>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.2.3/LikeButton/create_LikeButton.xml b/.liquibase/Data_alias/basic/2021.2.3/LikeButton/create_LikeButton.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8642f994f03e4f6e72b1a83fe997adcee9e45b70
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.2.3/LikeButton/create_LikeButton.xml
@@ -0,0 +1,15 @@
+<?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="v.broens" id="56e131ee-87cb-41e2-996b-8028a94684a3">
+    <createTable  tableName="LIKEBUTTON">
+        <column name="LIKEBUTTONID" type="CHAR(36)">
+            <constraints primaryKey = "true" nullable = "false"/>
+        </column>
+        <column name="CONTACT_ID" type="CHAR(36))"/>
+        <column name="OBJECT_ROWID" type="CHAR(36)"/>
+        <column name="OBJECT_TYPE" type="NVARCHAR(63)"/>
+    </createTable> 
+  </changeSet>
+</databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/2021.2.3/changelog.xml b/.liquibase/Data_alias/basic/2021.2.3/changelog.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0b1cca496ec06d72313be4791d52593e97b65029
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.2.3/changelog.xml
@@ -0,0 +1,8 @@
+<?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">
+    <include relativeToChangelogFile="true" file="KnowledgeManagement/changelog.xml"/>
+    <include relativeToChangelogFile="true" file="LikeButton/changelog.xml"/>
+    <include relativeToChangelogFile="true" file="Bulkmail/changelog.xml"/>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/changelog.xml b/.liquibase/Data_alias/changelog.xml
index 016d430cf95592e23f9d9fb70a64d13fa2a8304a..d1fdd2655aee0087ea08f4742d0706072dc533dc 100644
--- a/.liquibase/Data_alias/changelog.xml
+++ b/.liquibase/Data_alias/changelog.xml
@@ -30,7 +30,8 @@
     <include relativeToChangelogFile="true" file="basic/2021.2.0/changelog.xml"/>
     <include relativeToChangelogFile="true" file="basic/2021.2.1/changelog.xml"/>
     <include relativeToChangelogFile="true" file="basic/2021.2.2/changelog.xml"/>
+    <include relativeToChangelogFile="true" file="basic/2021.2.3/changelog.xml"/>
 
     <include relativeToChangelogFile="true" file="basic/workflows/changelog.xml" context="workflow"/>
     <include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/>
-</databaseChangeLog>
\ No newline at end of file
+</databaseChangeLog>
diff --git a/.liquibase/_____SYSTEMALIAS/basic/mosaico/insert_mosaicoWebserviceUser.xml b/.liquibase/_____SYSTEMALIAS/basic/mosaico/insert_mosaicoWebserviceUser.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c1ededd71cb19586780632907e0027a5a833ff5b
--- /dev/null
+++ b/.liquibase/_____SYSTEMALIAS/basic/mosaico/insert_mosaicoWebserviceUser.xml
@@ -0,0 +1,77 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+  <changeSet author="m.groppe" id="bc1352c8-615e-4e97-a23f-9522271ebb88">
+    <insert tableName="ASYS_USERS">
+      <column name="GROUPID" value="BASIC"/>
+      <column name="NAME" value="_____USER_3e626d92-1304-4d8c-acd4-8fdc051ffa5b"/>
+      <column name="DATE_EDIT" valueDate="2021-11-24T16:39:01"/>
+      <column name="ID" value="6352844d-efc7-4873-b233-a9f38d47f7a9"/>
+      <column name="PROPVAL" value="1637768341797"/>
+      <column name="PROPKEY" value="lastModified"/>
+      <column name="DATE_NEW" valueDate="2021-11-24T16:34:49"/>
+    </insert>
+    <insert tableName="ASYS_USERS">
+      <column name="GROUPID" value="BASIC"/>
+      <column name="NAME" value="_____USER_3e626d92-1304-4d8c-acd4-8fdc051ffa5b"/>
+      <column name="DATE_EDIT" valueDate="2021-11-24T16:34:49"/>
+      <column name="ID" value="a86f8d9c-462d-4481-81e0-c69a9d386525"/>
+      <column name="PROPVAL" value="_____USER_3e626d92-1304-4d8c-acd4-8fdc051ffa5b"/>
+      <column name="PROPKEY" value="name"/>
+      <column name="DATE_NEW" valueDate="2021-11-24T16:34:49"/>
+    </insert>
+    <insert tableName="ASYS_USERS">
+      <column name="GROUPID" value="BASIC"/>
+      <column name="NAME" value="_____USER_3e626d92-1304-4d8c-acd4-8fdc051ffa5b"/>
+      <column name="DATE_EDIT" valueDate="2021-11-24T16:34:49"/>
+      <column name="ID" value="30a55877-3cf1-4762-b9b6-7cc58508aaa5"/>
+      <column name="PROPVAL" value="mosaicoWebservice"/>
+      <column name="PROPKEY" value="title"/>
+      <column name="DATE_NEW" valueDate="2021-11-24T16:34:49"/>
+    </insert>
+    <insert tableName="ASYS_USERS">
+      <column name="GROUPID" value="BASIC"/>
+      <column name="NAME" value="_____USER_3e626d92-1304-4d8c-acd4-8fdc051ffa5b"/>
+      <column name="DATE_EDIT" valueDate="2021-11-24T16:34:49"/>
+      <column name="ID" value="23409ff7-f234-4b73-8fb0-65a88aeeb8cf"/>
+      <column name="PROPVAL" value="mosaico@domain.local"/>
+      <column name="PROPKEY" value="email"/>
+      <column name="DATE_NEW" valueDate="2021-11-24T16:34:49"/>
+    </insert>
+    <insert tableName="ASYS_USERS">
+      <column name="GROUPID" value="ROLE"/>
+      <column name="NAME" value="_____USER_3e626d92-1304-4d8c-acd4-8fdc051ffa5b"/>
+      <column name="DATE_EDIT" valueDate="2021-11-24T16:34:49"/>
+      <column name="ID" value="e78e2b78-1e3b-47cb-a6ef-e361642e2e85"/>
+      <column name="PROPVAL" value="INTERNAL_WEBSERVICE"/>
+      <column name="PROPKEY" value="roleNames"/>
+      <column name="DATE_NEW" valueDate="2021-11-24T16:34:49"/>
+    </insert>
+    <insert tableName="ASYS_USERS">
+      <column name="GROUPID" value="BASIC"/>
+      <column name="NAME" value="_____USER_3e626d92-1304-4d8c-acd4-8fdc051ffa5b"/>
+      <column name="DATE_EDIT" valueDate="2021-11-24T16:34:49"/>
+      <column name="ID" value="bdf76bcc-6a34-4d3a-93f9-cd4f98804d1a"/>
+      <column name="PROPVAL" value="mosaico@domain.local"/>
+      <column name="PROPKEY" value="calendarID"/>
+      <column name="DATE_NEW" valueDate="2021-11-24T16:34:49"/>
+    </insert>
+    <insert tableName="ASYS_USERS">
+      <column name="GROUPID" value="PASSWORD"/>
+      <column name="NAME" value="_____USER_3e626d92-1304-4d8c-acd4-8fdc051ffa5b"/>
+      <column name="DATE_EDIT" valueDate="2021-11-24T16:37:03"/>
+      <column name="ID" value="d53e9db4-f3a1-43c6-8d38-4d8c5b9b3473"/>
+      <column name="PROPVAL" value="SHA256S:249D7F44D7D245C7266E62C21C72F1565F2A1C2B076CA821B8EAC4EFB661B4D1:88F3122AD175CCDFDB591B2F4002DF57DF519DA910655DE73D9DFEDDFC85D800"/>
+      <column name="PROPKEY" value="password"/>
+      <column name="DATE_NEW" valueDate="2021-11-24T16:37:03"/>
+    </insert>
+    <insert tableName="ASYS_USERS">
+      <column name="GROUPID" value="PASSWORD"/>
+      <column name="NAME" value="_____USER_3e626d92-1304-4d8c-acd4-8fdc051ffa5b"/>
+      <column name="DATE_EDIT" valueDate="2021-11-24T16:37:03"/>
+      <column name="ID" value="1e7424e2-7b3c-49d1-8f57-d896bc247b0f"/>
+      <column name="PROPVAL" value="1637768223896"/>
+      <column name="PROPKEY" value="passwordChanged"/>
+      <column name="DATE_NEW" valueDate="2021-11-24T16:37:03"/>
+    </insert>
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/_____SYSTEMALIAS/changelog.xml b/.liquibase/_____SYSTEMALIAS/changelog.xml
index 40897d5582f04861c07ae8d2ca69453d47912712..a18e97913674c3c03655a7c7ae44b5fc831c19d4 100644
--- a/.liquibase/_____SYSTEMALIAS/changelog.xml
+++ b/.liquibase/_____SYSTEMALIAS/changelog.xml
@@ -2,6 +2,7 @@
 <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
     <include relativeToChangelogFile="true" file="basic/init/init.xml"/>
     <include relativeToChangelogFile="true" file="basic/mailbridge/mailbridgeUser.xml"/>
+    <include relativeToChangelogFile="true" file="basic/mosaico/insert_mosaicoWebserviceUser"/>
 
     <include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/>
     
diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod
index e0fe2ce5865b77fc70df40d6a685472d792643d2..ba1fab51c67bced627727bc281adc7ce921dd37e 100644
--- a/aliasDefinition/Data_alias/Data_alias.aod
+++ b/aliasDefinition/Data_alias/Data_alias.aod
@@ -2305,6 +2305,20 @@
                 <title>Product price Id</title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>CURRENCYRATE_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <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>
@@ -3193,6 +3207,20 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>CURRENCYRATE_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <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>
@@ -3545,8 +3573,8 @@
                 <name>SHOWPRICE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-7" />
-                <size v="3" />
+                <columnType v="5" />
+                <size v="5" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -3899,6 +3927,20 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>CURRENCYRATE_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <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>
@@ -5027,6 +5069,20 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>CURRENCYRATE_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <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>
@@ -10356,9 +10412,9 @@
                 <name>VOLUME</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="4" />
-                <size v="10" />
-                <scale v="0" />
+                <columnType v="2" />
+                <size v="14" />
+                <scale v="2" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -11241,20 +11297,6 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
-              <entityFieldDb>
-                <name>PROBLEM</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
               <entityFieldDb>
                 <name>EMAIL_ADDRESS</name>
                 <dbName></dbName>
@@ -17086,6 +17128,76 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>SUMMARY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USEINALLTICKETCATEGORIES</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="-7" />
+                <size v="3" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USEINALLINBOXES</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="-7" />
+                <size v="3" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>NUMBEROFVIEWS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>KNOWLEDGEMANAGEMENTCATEGORY_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></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -22540,6 +22652,20 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>CURRENCYRATE_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <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>
@@ -25506,11 +25632,11 @@
             </entityFields>
           </entityDb>
           <entityDb>
-            <name>ASYS_VERSIONHISTORY</name>
+            <name>AB_CURRENCY</name>
             <category></category>
             <dbName></dbName>
-            <idColumn></idColumn>
-            <idGeneratorType v="1" />
+            <idColumn>ISO4</idColumn>
+            <idGeneratorType v="0" />
             <idGeneratorInterval v="1" />
             <documentation></documentation>
             <title></title>
@@ -25525,13 +25651,13 @@
             </auditSyncConfig>
             <entityFields>
               <entityFieldDb>
-                <name>TABLE_NAME</name>
+                <name>NUMBERCODE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="255" />
+                <columnType v="4" />
+                <size v="10" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -25539,39 +25665,53 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>VERSION</name>
+                <name>SIGN</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="36" />
+                <size v="100" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="false" />
-                <index v="true" />
+                <index v="false" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>DATE_NEW</name>
+                <name>ISACTIVE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="93" />
-                <size v="23" />
+                <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>
+              <entityFieldDb>
+                <name>ISO4</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="3" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
                 <index v="true" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>OPERATION_DESCRIPTION</name>
+                <name>NAME</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="255" />
+                <size v="100" />
                 <scale v="0" />
                 <notNull v="true" />
                 <isUnique v="false" />
@@ -25580,14 +25720,49 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>CURRENCYRATE</name>
+            <category></category>
+            <dbName></dbName>
+            <idColumn>CURRENCYRATEID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
               <entityFieldDb>
-                <name>USER_NEW</name>
+                <name>CURRENCYRATEID</name>
                 <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="12" />
+                <primaryKey v="true" />
+                <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
                 <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>TARGETCURRENCYISO</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>
@@ -25595,13 +25770,636 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>OPERATION_TYPE</name>
+                <name>CURRENCYRATE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="255" />
+                <columnType v="8" />
+                <size v="52" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SOURCECURRENCYISO</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>USER_NEW</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>
+              <entityFieldDb>
+                <name>VALID_FROM</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>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>ASYS_VERSIONHISTORY</name>
+            <category></category>
+            <dbName></dbName>
+            <idColumn></idColumn>
+            <idGeneratorType v="1" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>TABLE_NAME</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>VERSION</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="23" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>OPERATION_DESCRIPTION</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>OPERATION_TYPE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>KNOWLEDGEMANAGEMENTTICKETCATEGORY</name>
+            <category></category>
+            <dbName></dbName>
+            <idColumn>KNOWLEDGEMANAGEMENTTICKETCATEGORYID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>DATE_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>KNOWLEDGEMANAGEMENT_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></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CLASSIFICATION</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>KNOWLEDGEMANAGEMENTTICKETCATEGORYID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>KNOWLEDGEMANAGEMENTCATEGORY</name>
+            <category></category>
+            <dbName></dbName>
+            <idColumn>KNOWLEDGEMANAGEMENTCATEGORYID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>SUMMARY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>ORDERNO</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>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>ICON</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="-1" />
+                <size v="2147483647" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>KNOWLEDGEMANAGEMENTCATEGORYID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>NAME</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>
+            <name>LIKEBUTTON</name>
+            <category></category>
+            <dbName></dbName>
+            <idColumn>LIKEBUTTONID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>LIKEBUTTONID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <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>CONTACT_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></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="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>KNOWLEDGEMANAGEMENTINBOX</name>
+            <category></category>
+            <dbName></dbName>
+            <idColumn>KNOWLEDGEMANAGEMENTINBOXID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>KNOWLEDGEMANAGEMENTINBOXID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>KNOWLEDGEMANAGEMENT_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></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>INBOX_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></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
diff --git a/aliasDefinition/Data_alias_noAudit/Data_alias_noAudit.aod b/aliasDefinition/Data_alias_noAudit/Data_alias_noAudit.aod
index c0c4b00661a6a2b38fe821cd45215b5ff7d1e164..9aaf174fec9f94ba3900d6b9a17bba87e33a85b8 100644
--- a/aliasDefinition/Data_alias_noAudit/Data_alias_noAudit.aod
+++ b/aliasDefinition/Data_alias_noAudit/Data_alias_noAudit.aod
@@ -7513,20 +7513,6 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
-              <entityFieldDb>
-                <name>PROBLEM</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
               <entityFieldDb>
                 <name>BULKMAILRECIPIENTID</name>
                 <dbName></dbName>
diff --git a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod
index 398dbbf9241d918d6a018d63ef044619687c9029..a120cb9231fb8c8d54b29efc1bcf5c23c61b5377 100644
--- a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod
+++ b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod
@@ -378,6 +378,10 @@
             <name>Group5</name>
             <kind v="123" />
             <childNodes>
+              <entityNode>
+                <name>KnowledgeManagementCategory</name>
+                <kind v="10077" />
+              </entityNode>
               <entityNode>
                 <name>INTERNAL_EVERYONE</name>
                 <kind v="159" />
diff --git a/cypress.json b/cypress.json
index 316ecafbaa23430ee5c1905117ff1a301b9eacc6..6099676a75eb22dc14d9e1db38ab4549e0dba193 100644
--- a/cypress.json
+++ b/cypress.json
@@ -3,7 +3,8 @@
   "defaultCommandTimeout": 25000,
   "env": {
     "DEFAULT_LOCALE": "de-DE",
-    "CYPRESS_INCLUDE_TAGS": "DEFAULT,QA"
+    "CYPRESS_INCLUDE_TAGS": "DEFAULT,QA",
+    "ADMIN_PASSWORD": ""
   },
   "reporter": "../node_modules/mochawesome/src/mochawesome.js",
   "reporterOptions": {
diff --git a/entity/Activity_entity/entityfields/hasadvertising/valueProcess.js b/entity/Activity_entity/entityfields/hasadvertising/valueProcess.js
index c6ea91ecd1d6cef3113e7db772e506a53299d23c..e0a720422221e8a94078a8594e53145359fc1567 100644
--- a/entity/Activity_entity/entityfields/hasadvertising/valueProcess.js
+++ b/entity/Activity_entity/entityfields/hasadvertising/valueProcess.js
@@ -12,10 +12,11 @@ if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
 }
 else if(vars.get("$field.ACTIVITYID"))
 { 
-    var count = new SqlBuilder().selectCount()
-                .from("ADVERTISING")
-                .where("ADVERTISING.OBJECT_ROWID", "ACTIVITY.ACTIVITYID")
-                .toString()
+    var count = new SqlBuilder()
+                        .selectCount()
+                        .from("ADVERTISING")
+                        .where("ADVERTISING.OBJECT_ROWID", "ACTIVITY.ACTIVITYID")
+                        .cell();
 
     result.string(count);
 }
diff --git a/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod b/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod
index 70f7df7f4ad5bf2715a2454845ee7abdbc065921..1046c7f1073eae176fa019e29afaf57b814b3d93 100644
--- a/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod
+++ b/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod
@@ -119,10 +119,6 @@
         </entityActionField>
       </children>
     </entityActionGroup>
-    <entityField>
-      <name>PROBLEM</name>
-      <title>Problem</title>
-    </entityField>
     <entityConsumer>
       <name>EmailAdresses</name>
       <dependency>
@@ -190,13 +186,7 @@
         <entityParameter>
           <name>ExcludedStatus_param</name>
           <valueProcess>%aditoprj%/entity/BulkMailRecipient_entity/entityfields/recipientstobemailed/children/excludedstatus_param/valueProcess.js</valueProcess>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>ExcludeCommunicationRejecting_param</name>
-          <valueProcess>%aditoprj%/entity/BulkMailRecipient_entity/entityfields/recipientstobemailed/children/excludecommunicationrejecting_param/valueProcess.js</valueProcess>
-          <expose v="false" />
-          <title></title>
+          <expose v="true" />
         </entityParameter>
       </children>
     </entityProvider>
@@ -293,14 +283,6 @@
           <recordfield>BULKMAILRECIPIENT.EMAIL_ADDRESS</recordfield>
           <isFilterable v="true" />
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>PROBLEM.value</name>
-          <recordfield>BULKMAILRECIPIENT.PROBLEM</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>PROBLEM.displayValue</name>
-          <expression>%aditoprj%/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/problem.displayvalue/expression.js</expression>
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>IS_TEST_RECIPIENT.value</name>
           <recordfield>BULKMAILRECIPIENT.IS_TEST_RECIPIENT</recordfield>
diff --git a/entity/BulkMailRecipient_entity/entityfields/recipientstobemailed/children/excludecommunicationrejecting_param/valueProcess.js b/entity/BulkMailRecipient_entity/entityfields/recipientstobemailed/children/excludecommunicationrejecting_param/valueProcess.js
deleted file mode 100644
index 40effa0178464da0c7850912345f19c7fa95975a..0000000000000000000000000000000000000000
--- a/entity/BulkMailRecipient_entity/entityfields/recipientstobemailed/children/excludecommunicationrejecting_param/valueProcess.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import("system.result");
-
-result.string(true);
\ No newline at end of file
diff --git a/entity/BulkMailRecipient_entity/entityfields/recipientstobemailed/children/excludedstatus_param/valueProcess.js b/entity/BulkMailRecipient_entity/entityfields/recipientstobemailed/children/excludedstatus_param/valueProcess.js
index 492f4b9cfe105df811d83daafb6e792c09f758b2..5991cbeae673acd85f1ffb3eb99da7b637a46c5f 100644
--- a/entity/BulkMailRecipient_entity/entityfields/recipientstobemailed/children/excludedstatus_param/valueProcess.js
+++ b/entity/BulkMailRecipient_entity/entityfields/recipientstobemailed/children/excludedstatus_param/valueProcess.js
@@ -3,6 +3,8 @@ import("system.result");
 
 result.string(JSON.stringify([
     $KeywordRegistry.bulkMailRecipientStatus$sent(),
-    $KeywordRegistry.bulkMailRecipientStatus$hardBounce(),
-    $KeywordRegistry.bulkMailRecipientStatus$failed()
+    $KeywordRegistry.bulkMailRecipientStatus$failed(), 
+    $KeywordRegistry.bulkMailRecipientStatus$softBounce(),
+    $KeywordRegistry.bulkMailRecipientStatus$hardBounce(), 
+    $KeywordRegistry.bulkMailRecipientStatus$added() 
 ]));
\ No newline at end of file
diff --git a/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js b/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js
index 2b9b21b9b789c2d7823fc09837e0bac6469a8c68..39ae66b34c14d31a1a0b565835f0b92d2b1ae78e 100644
--- a/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js
+++ b/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js
@@ -1,30 +1,7 @@
-import("system.vars");
-import("Util_lib");
-import("Sql_lib");
-import("Contact_lib");
-import("system.translate");
 import("system.result");
 import("Keyword_lib");
 import("KeywordRegistry_basic");
-import("MarketingCondition_lib");
 
 var keywordSql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.bulkMailRecipientStatus(), "BULKMAILRECIPIENT.STATUS");
-var sql;
-if (!Utils.toBoolean(vars.get("$param.ExcludeCommunicationRejecting_param")))
-{
-    var communicationSettingsCondition = new CommunicationSettingsCondition()
-        .medium($KeywordRegistry.communicationMediumCampaign$mail(), "BULKMAILRECIPIENT.EMAIL_ADDRESS")
-        .rejected()
-        .existSettings()
-        .buildCondition();
-
-    sql = SqlBuilder.caseWhen(communicationSettingsCondition)
-        .thenString(translate.text("Advertising ban"))
-        .elseValue(keywordSql);
-}
-else
-{
-    sql = keywordSql;
-}
-    
-result.string(sql.toString());
+   
+result.string(keywordSql.toString());
diff --git a/entity/BulkMail_entity/BulkMail_entity.aod b/entity/BulkMail_entity/BulkMail_entity.aod
index 7d370947a623fbbc3218d72e73046c7451c00865..a20a8140185ca68c3efaf49f8dddee4636277095 100644
--- a/entity/BulkMail_entity/BulkMail_entity.aod
+++ b/entity/BulkMail_entity/BulkMail_entity.aod
@@ -602,6 +602,13 @@
       <stateProcess>%aditoprj%/entity/BulkMail_entity/entityfields/sendmail/stateProcess.js</stateProcess>
       <tooltipProcess>%aditoprj%/entity/BulkMail_entity/entityfields/sendmail/tooltipProcess.js</tooltipProcess>
     </entityActionField>
+    <entityActionField>
+      <name>ContinueMailing_action</name>
+      <title>Continue mailing</title>
+      <onActionProcess>%aditoprj%/entity/BulkMail_entity/entityfields/continuemailing_action/onActionProcess.js</onActionProcess>
+      <iconId>NEON:RECURRING_APPOINTMENT</iconId>
+      <stateProcess>%aditoprj%/entity/BulkMail_entity/entityfields/continuemailing_action/stateProcess.js</stateProcess>
+    </entityActionField>
     <entityActionField>
       <name>downloadTemplate</name>
       <title>Download template</title>
diff --git a/entity/BulkMail_entity/entityfields/continuemailing_action/onActionProcess.js b/entity/BulkMail_entity/entityfields/continuemailing_action/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..1eec20a3a5185d7fb9f35717eff13a65fd13f12d
--- /dev/null
+++ b/entity/BulkMail_entity/entityfields/continuemailing_action/onActionProcess.js
@@ -0,0 +1,19 @@
+import("system.translate");
+import("system.question");
+import("Sql_lib");
+import("system.neon");
+import("system.vars");
+import("Bulkmail_lib");
+import("system.db");
+import("KeywordRegistry_basic");
+
+var send = question.askYesNo(translate.text("Bulk mail"), translate.text("Should the mail be sent now?"), false);
+if (send)
+{
+    //UPDATE BULKMAIL STATUS
+    newWhere("BULKMAIL.BULKMAILID", "$field.BULKMAILID")
+        .updateFields({"STATUS" : $KeywordRegistry.bulkMailStatus$beingSent()});
+    
+    neon.refreshAll();
+    BulkMailUtils.sendBulkMailOnServer(vars.get("$field.BULKMAILID"));
+}
\ No newline at end of file
diff --git a/entity/BulkMail_entity/entityfields/continuemailing_action/stateProcess.js b/entity/BulkMail_entity/entityfields/continuemailing_action/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..df467a0cf000de3ab3f27c43971af080dd24655e
--- /dev/null
+++ b/entity/BulkMail_entity/entityfields/continuemailing_action/stateProcess.js
@@ -0,0 +1,17 @@
+import("KeywordRegistry_basic");
+import("system.result");
+import("system.vars");
+import("system.tools");
+import("Bulkmail_lib");
+import("system.neon");
+
+if (tools.currentUserHasRole("INTERNAL_ADMINISTRATOR") 
+    && vars.get("$field.STATUS") === $KeywordRegistry.bulkMailStatus$failed()
+    && BulkMailUtils.hasPendingRecipient(vars.get("$field.BULKMAILID")))
+{
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+}
+else
+{
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
+}
\ No newline at end of file
diff --git a/entity/BulkMail_entity/recordcontainers/db/onDBInsert.js b/entity/BulkMail_entity/recordcontainers/db/onDBInsert.js
index 0fcb3e3f16afbaa4c7be3b0c9fae3fa58a08042f..7ceed04d82a542a694b07638eb59b990978baaf6 100644
--- a/entity/BulkMail_entity/recordcontainers/db/onDBInsert.js
+++ b/entity/BulkMail_entity/recordcontainers/db/onDBInsert.js
@@ -55,7 +55,7 @@ if (vars.get("$param.CopyBulkMailId_param") && Utils.toBoolean(vars.get("$field.
         return sqlBuilder.buildInsertStatement({
             "BULKMAIL_ID": bulkMailId,
             "CONTACT_ID": contactId,
-            "STATUS": $KeywordRegistry.bulkMailRecipientStatus$pending(),
+            "STATUS": $KeywordRegistry.bulkMailRecipientStatus$added(),
             "EMAIL_ADDRESS": email,
             "IS_TEST_RECIPIENT": test
         }, "BULKMAILRECIPIENT", "BULKMAILRECIPIENTID");
diff --git a/entity/DocumentTemplateTicketCategory_entity/DocumentTemplateTicketCategory_entity.aod b/entity/DocumentTemplateTicketCategory_entity/DocumentTemplateTicketCategory_entity.aod
index fb3d1cdf65752ee6fc02bb022c88ffee5b0ce4a0..e020ee18f0a04effb85044eee5d801fb6a847643 100644
--- a/entity/DocumentTemplateTicketCategory_entity/DocumentTemplateTicketCategory_entity.aod
+++ b/entity/DocumentTemplateTicketCategory_entity/DocumentTemplateTicketCategory_entity.aod
@@ -21,7 +21,7 @@
     <entityField>
       <name>CLASSIFICATION</name>
       <title>Category</title>
-      <consumer>KeywordsCathegories</consumer>
+      <consumer>KeywordsCategories</consumer>
       <displayValueProcess>%aditoprj%/entity/DocumentTemplateTicketCategory_entity/entityfields/classification/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityParameter>
@@ -29,7 +29,7 @@
       <expose v="true" />
     </entityParameter>
     <entityConsumer>
-      <name>KeywordsCathegories</name>
+      <name>KeywordsCategories</name>
       <dependency>
         <name>dependency</name>
         <entityName>KeywordEntry_entity</entityName>
@@ -38,12 +38,12 @@
       <children>
         <entityParameter>
           <name>ContainerName_param</name>
-          <valueProcess>%aditoprj%/entity/DocumentTemplateTicketCategory_entity/entityfields/keywordscathegories/children/containername_param/valueProcess.js</valueProcess>
+          <valueProcess>%aditoprj%/entity/DocumentTemplateTicketCategory_entity/entityfields/keywordscategories/children/containername_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
     </entityConsumer>
     <entityProvider>
-      <name>DocumentTemplateClasificationsProv</name>
+      <name>DocumentTemplateClassificationsProv</name>
       <titlePlural>Service ticket categories</titlePlural>
       <children>
         <entityParameter>
diff --git a/entity/DocumentTemplateTicketCategory_entity/entityfields/keywordscathegories/children/containername_param/valueProcess.js b/entity/DocumentTemplateTicketCategory_entity/entityfields/keywordscategories/children/containername_param/valueProcess.js
similarity index 100%
rename from entity/DocumentTemplateTicketCategory_entity/entityfields/keywordscathegories/children/containername_param/valueProcess.js
rename to entity/DocumentTemplateTicketCategory_entity/entityfields/keywordscategories/children/containername_param/valueProcess.js
diff --git a/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod b/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod
index 83929ce1e780a18979c94cd5716189833be06e38..ac9f857fd98cd924db917c433489a5698906afac 100644
--- a/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod
+++ b/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod
@@ -232,7 +232,7 @@
           <expose v="true" />
         </entityParameter>
         <entityParameter>
-          <name>ClasifcationMail_param</name>
+          <name>ClassificationMail_param</name>
           <expose v="true" />
         </entityParameter>
       </children>
@@ -299,7 +299,7 @@
       <valueProcess>%aditoprj%/entity/DocumentTemplate_entity/entityfields/documenttemplate_objecttype/valueProcess.js</valueProcess>
     </entityField>
     <entityParameter>
-      <name>ClasifcationMail_param</name>
+      <name>ClassificationMail_param</name>
       <expose v="true" />
     </entityParameter>
     <entityProvider>
@@ -319,7 +319,7 @@
       <dependency>
         <name>dependency</name>
         <entityName>DocumentTemplateTicketCategory_entity</entityName>
-        <fieldName>DocumentTemplateClasificationsProv</fieldName>
+        <fieldName>DocumentTemplateClassificationsProv</fieldName>
       </dependency>
       <children>
         <entityParameter>
diff --git a/entity/EmployeeGroupContactRelation_entity/entityfields/contact_id/onValidation.js b/entity/EmployeeGroupContactRelation_entity/entityfields/contact_id/onValidation.js
index 89007aafec39152c565838fe3b89fdeefe7c4c3c..27fb9b3c27b2712280f57c5ee8f100f9cdb32df0 100644
--- a/entity/EmployeeGroupContactRelation_entity/entityfields/contact_id/onValidation.js
+++ b/entity/EmployeeGroupContactRelation_entity/entityfields/contact_id/onValidation.js
@@ -4,7 +4,7 @@ import("system.result");
 import("system.vars");
 import("Sql_lib");
 
-var sql = new SqlBuilder()
+var count = new SqlBuilder()
                     .selectCount("CONTACT_ID")
                     .from("EMPLOYEEGROUP_CONTACT_RELATION")
                     .where("EMPLOYEEGROUP_CONTACT_RELATION.CONTACT_ID", vars.get("$field.CONTACT_ID"))
@@ -12,8 +12,7 @@ var sql = new SqlBuilder()
                     .andIfSet("EMPLOYEEGROUP_CONTACT_RELATION.EMPLOYEEGROUP_CONTACT_RELATIONID", vars.get("$field.EMPLOYEEGROUP_CONTACT_RELATIONID"),SqlBuilder.NOT_EQUAL())
                     .cell();
 
-
-if (sql > 0 )
+if (count > 0)
 {
     result.string(translate.text("Employee already selected") + ".");
 }
diff --git a/entity/EmployeeGroupRuleGroupRelation_entity/EmployeeGroupRuleGroupRelation_entity.aod b/entity/EmployeeGroupRuleGroupRelation_entity/EmployeeGroupRuleGroupRelation_entity.aod
index 9e50a6dabeb63ed49f42e7aa9867e2a7ae4b628a..1d5e3b2957745ad457e04db5b47881837b37d7c9 100644
--- a/entity/EmployeeGroupRuleGroupRelation_entity/EmployeeGroupRuleGroupRelation_entity.aod
+++ b/entity/EmployeeGroupRuleGroupRelation_entity/EmployeeGroupRuleGroupRelation_entity.aod
@@ -20,6 +20,7 @@
       <title>Employee group filter group</title>
       <consumer>EmpGorupRuGroups</consumer>
       <displayValueProcess>%aditoprj%/entity/EmployeeGroupRuleGroupRelation_entity/entityfields/employeegroup_rulegroup_id/displayValueProcess.js</displayValueProcess>
+      <onValidation>%aditoprj%/entity/EmployeeGroupRuleGroupRelation_entity/entityfields/employeegroup_rulegroup_id/onValidation.js</onValidation>
     </entityField>
     <entityField>
       <name>EMPLOYEEGROUP_RULEGROUP_RELATIONID</name>
diff --git a/entity/EmployeeGroupRuleGroupRelation_entity/entityfields/employeegroup_rulegroup_id/onValidation.js b/entity/EmployeeGroupRuleGroupRelation_entity/entityfields/employeegroup_rulegroup_id/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..c3791daf0720f42b772ac6653674f916b9190a5e
--- /dev/null
+++ b/entity/EmployeeGroupRuleGroupRelation_entity/entityfields/employeegroup_rulegroup_id/onValidation.js
@@ -0,0 +1,18 @@
+import("system.neon");
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+
+var count = new SqlBuilder()
+                    .selectCount("EMPLOYEEGROUP_RULEGROUP_ID")
+                    .from("EMPLOYEEGROUP_RULEGROUP_RELATION")
+                    .where("EMPLOYEEGROUP_RULEGROUP_RELATION.EMPLOYEEGROUP_RULEGROUP_ID", vars.get("$field.EMPLOYEEGROUP_RULEGROUP_ID"))
+                    .and("EMPLOYEEGROUP_RULEGROUP_RELATION.EMPLOYEEGROUP_ID", vars.get("$field.EMPLOYEEGROUP_ID"))
+                    .andIfSet("EMPLOYEEGROUP_RULEGROUP_RELATION.EMPLOYEEGROUP_RULEGROUP_RELATIONID", vars.get("$field.EMPLOYEEGROUP_RULEGROUP_RELATIONID"),SqlBuilder.NOT_EQUAL())
+                    .cell();
+
+if (count > 0)
+{
+    result.string(translate.text("Rulegroup already selected") + ".");
+}
\ No newline at end of file
diff --git a/entity/EmployeeGroupRuleGroup_entity/entityfields/name/onValidation.js b/entity/EmployeeGroupRuleGroup_entity/entityfields/name/onValidation.js
index 51c6c78bd8d0d652995e37eaca003fec14c6ea74..de38c88fe4c6fe38606fca313693d4c97b459286 100644
--- a/entity/EmployeeGroupRuleGroup_entity/entityfields/name/onValidation.js
+++ b/entity/EmployeeGroupRuleGroup_entity/entityfields/name/onValidation.js
@@ -4,14 +4,14 @@ import("system.result");
 import("system.vars");
 import("Sql_lib");
 
-var sql = new SqlBuilder()
+var count = new SqlBuilder()
                     .selectCount("NAME")
                     .from("EMPLOYEEGROUP_RULEGROUP")
                     .where("EMPLOYEEGROUP_RULEGROUP.NAME", vars.get("$field.NAME"))
-                    .and("EMPLOYEEGROUP_RULEGROUP.EMPLOYEEGROUP_RULEGROUPID", vars.get("sys.uid"),SqlBuilder.NOT_EQUAL())
+                    .andIfSet("EMPLOYEEGROUP_RULEGROUP.EMPLOYEEGROUP_RULEGROUPID", vars.get("$field.EMPLOYEEGROUP_RULEGROUPID"),SqlBuilder.NOT_EQUAL())
                     .cell();
 
-if (sql > 0)
+if (count > 0)
 {
     result.string(translate.text("Name has to be unique") + ".");
 }
\ No newline at end of file
diff --git a/entity/EmployeeGroupRuleGroup_entity/recordcontainers/db/recordfieldmappings/state.displayvalue/expression.js b/entity/EmployeeGroupRuleGroup_entity/recordcontainers/db/recordfieldmappings/state.displayvalue/expression.js
index bb49dedeca7eb9b5e9066e15a6a0119f3f737f10..94d98457fc41c79ce0b6940bf45fad65af21423a 100644
--- a/entity/EmployeeGroupRuleGroup_entity/recordcontainers/db/recordfieldmappings/state.displayvalue/expression.js
+++ b/entity/EmployeeGroupRuleGroup_entity/recordcontainers/db/recordfieldmappings/state.displayvalue/expression.js
@@ -1,4 +1,3 @@
-import("system.logging");
 import("system.result");
 import("Keyword_lib");
 import("KeywordRegistry_basic");
@@ -6,6 +5,4 @@ import("system.util");
 
 var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.employeeGroupStatus(), "STATE"); 
 
-
-
 result.string(sql);
\ No newline at end of file
diff --git a/entity/EmployeeGroupRule_entity/entityfields/name/onValidation.js b/entity/EmployeeGroupRule_entity/entityfields/name/onValidation.js
index 6cd8121c41e8437c62ae7265945b9ff48507a15e..8c83356e370abcf4960d35d7c525dccf2d50a676 100644
--- a/entity/EmployeeGroupRule_entity/entityfields/name/onValidation.js
+++ b/entity/EmployeeGroupRule_entity/entityfields/name/onValidation.js
@@ -4,13 +4,15 @@ import("system.result");
 import("system.vars");
 import("Sql_lib");
 
-var sql = new SqlBuilder()
-                        .selectCount("NAME")
-                        .from("EMPLOYEEGROUP_RULEGROUP")
-                        .where("EMPLOYEEGROUP_RULEGROUP.NAME", vars.get("$field.NAME"))
-                        .andIfSet("EMPLOYEEGROUP_RULEGROUP.EMPLOYEEGROUP_RULEGROUPID", vars.get("$field.EMPLOYEEGROUP_RULEGROUP_ID"),SqlBuilder.NOT_EQUAL())
-                        .cell();
-if (sql > 0)
+var count = new SqlBuilder()
+                    .selectCount("NAME")
+                    .from("EMPLOYEEGROUP_RULE")
+                    .where("EMPLOYEEGROUP_RULE.NAME", vars.get("$field.NAME"))
+                    .and("EMPLOYEEGROUP_RULE.EMPLOYEEGROUP_RULEGROUP_ID", vars.get("$field.EMPLOYEEGROUP_RULEGROUP_ID"))
+                    .andIfSet("EMPLOYEEGROUP_RULE.EMPLOYEEGROUP_RULEID", vars.get("$field.EMPLOYEEGROUP_RULEID"),SqlBuilder.NOT_EQUAL())
+                    .cell();
+
+if (count > 0)
 {
     result.string(translate.text("Name has to be unique") + ".");
 }
\ No newline at end of file
diff --git a/entity/EmployeeGroup_entity/entityfields/groupname/onValidation.js b/entity/EmployeeGroup_entity/entityfields/groupname/onValidation.js
index 4d5b4ab6249c90e9e99530f3eb71af910ca7ce41..7927ea768952f97af77979221b7425cbce2083bf 100644
--- a/entity/EmployeeGroup_entity/entityfields/groupname/onValidation.js
+++ b/entity/EmployeeGroup_entity/entityfields/groupname/onValidation.js
@@ -4,13 +4,14 @@ import("system.result");
 import("system.vars");
 import("Sql_lib");
 
-var sql = new SqlBuilder()
-                        .selectCount("GROUPNAME")
-                        .from("EMPLOYEEGROUP")
-                        .where("EMPLOYEEGROUP.GROUPNAME", vars.get("$field.GROUPNAME"))
-                        .and("EMPLOYEEGROUP.EMPLOYEEGROUPID", vars.get("sys.uid"),SqlBuilder.NOT_EQUAL())
-                        .cell();
-if (sql > 0)
+var count = new SqlBuilder()
+                    .selectCount("GROUPNAME")
+                    .from("EMPLOYEEGROUP")
+                    .where("EMPLOYEEGROUP.GROUPNAME", vars.get("$field.GROUPNAME"))
+                    .andIfSet("EMPLOYEEGROUP.EMPLOYEEGROUPID", vars.get("$field.EMPLOYEEGROUPID"),SqlBuilder.NOT_EQUAL())
+                    .cell();
+
+if (count > 0)
 {
     result.string(translate.text("Name has to be unique") + ".");
 }
\ No newline at end of file
diff --git a/entity/EmployeeGroup_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js b/entity/EmployeeGroup_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js
index 457e173653479529664f2ade1cbd2d77f25ac394..58cb64faa1a57231010dd72bb8ca8048c26979f7 100644
--- a/entity/EmployeeGroup_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js
+++ b/entity/EmployeeGroup_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js
@@ -1,4 +1,3 @@
-import("system.logging");
 import("system.result");
 import("Keyword_lib");
 import("KeywordRegistry_basic");
@@ -6,6 +5,4 @@ import("system.util");
 
 var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.employeeGroupStatus(), "STATUS"); 
 
-
-
 result.string(sql);
\ No newline at end of file
diff --git a/entity/InboxFilterGroupRelation_entity/entityfields/inboxfiltergroup_id/onValidation.js b/entity/InboxFilterGroupRelation_entity/entityfields/inboxfiltergroup_id/onValidation.js
index 1d234c44a60d6d854f716b853f947d021ea8e13d..7795eca99963e039cd845fac6942fbf4c678aa6b 100644
--- a/entity/InboxFilterGroupRelation_entity/entityfields/inboxfiltergroup_id/onValidation.js
+++ b/entity/InboxFilterGroupRelation_entity/entityfields/inboxfiltergroup_id/onValidation.js
@@ -4,14 +4,16 @@ import("system.result");
 import("system.vars");
 import("Sql_lib");
 
-var sql = new SqlBuilder()
-                .selectCount("INBOXFILTERGROUP_ID")
-                .from("INBOXFILTERGROUP_RELATION")
-                .where("INBOXFILTERGROUP_RELATION.INBOXFILTERGROUP_ID", vars.get("$field.INBOXFILTERGROUP_ID"))
-                .cell();
+var count = new SqlBuilder()
+                    .selectCount("INBOXFILTERGROUP_ID")
+                    .from("INBOXFILTERGROUP_RELATION")
+                    .where("INBOXFILTERGROUP_RELATION.INBOXFILTERGROUP_ID", vars.get("$field.INBOXFILTERGROUP_ID"))
+                    .and("INBOXFILTERGROUP_RELATION.INBOX_ID", vars.get("$field.INBOX_ID"))
+                    .andIfSet("INBOXFILTERGROUP_RELATION.INBOXFILTERGROUP_RELATIONID", vars.get("$field.INBOXFILTERGROUP_RELATIONID"),SqlBuilder.NOT_EQUAL())
+                    .cell();
 
-if (sql > 0)
+if (count > 0)
 {
     result.string(translate.text("Rulegroup already selected") + ".");
-} 
+}
 
diff --git a/entity/InboxFilterGroup_entity/entityfields/name/onValidation.js b/entity/InboxFilterGroup_entity/entityfields/name/onValidation.js
index 5f2a7b84bb1a7be48d3319a6978042734c878416..be35d6f5b2fe34016e9339d8ba48947e47602984 100644
--- a/entity/InboxFilterGroup_entity/entityfields/name/onValidation.js
+++ b/entity/InboxFilterGroup_entity/entityfields/name/onValidation.js
@@ -4,16 +4,14 @@ import("system.result");
 import("system.vars");
 import("Sql_lib");
 
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-{
-    var sql = new SqlBuilder()
+var count = new SqlBuilder()
                     .selectCount("NAME")
                     .from("INBOXFILTERGROUP")
                     .where("INBOXFILTERGROUP.NAME", vars.get("$field.NAME"))
+                    .andIfSet("INBOXFILTERGROUP.INBOXFILTERGROUPID", vars.get("$field.INBOXFILTERGROUPID"),SqlBuilder.NOT_EQUAL())
                     .cell();
 
-    if (sql > 0)
-    {
-        result.string(translate.text("Name has to be unique") + ".");
-    } 
-}
+if (count > 0)
+{
+    result.string(translate.text("Name has to be unique") + ".");
+}
\ No newline at end of file
diff --git a/entity/KnowledgeManagementCategory_entity/KnowledgeManagementCategory_entity.aod b/entity/KnowledgeManagementCategory_entity/KnowledgeManagementCategory_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..8cbe4a14ded1a3b7ee1157e6e4e6d4796030c48d
--- /dev/null
+++ b/entity/KnowledgeManagementCategory_entity/KnowledgeManagementCategory_entity.aod
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.22" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.22">
+  <name>KnowledgeManagementCategory_entity</name>
+  <title>Knowledge category</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <grantCreate v="false" />
+  <grantCreateProcess>%aditoprj%/entity/KnowledgeManagementCategory_entity/grantCreateProcess.js</grantCreateProcess>
+  <grantUpdate v="false" />
+  <grantUpdateProcess>%aditoprj%/entity/KnowledgeManagementCategory_entity/grantUpdateProcess.js</grantUpdateProcess>
+  <grantDelete v="false" />
+  <grantDeleteProcess>%aditoprj%/entity/KnowledgeManagementCategory_entity/grantDeleteProcess.js</grantDeleteProcess>
+  <titlePlural>Knowledge categories</titlePlural>
+  <recordContainer>db</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityProvider>
+      <name>#PROVIDER_AGGREGATES</name>
+      <useAggregates v="true" />
+    </entityProvider>
+    <entityField>
+      <name>KNOWLEDGEMANAGEMENTCATEGORYID</name>
+    </entityField>
+    <entityField>
+      <name>NAME</name>
+      <title>Name</title>
+      <mandatory v="true" />
+    </entityField>
+    <entityField>
+      <name>DATE_NEW</name>
+      <valueProcess>%aditoprj%/entity/KnowledgeManagementCategory_entity/entityfields/date_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_EDIT</name>
+      <valueProcess>%aditoprj%/entity/KnowledgeManagementCategory_entity/entityfields/date_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_NEW</name>
+      <valueProcess>%aditoprj%/entity/KnowledgeManagementCategory_entity/entityfields/user_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_EDIT</name>
+      <valueProcess>%aditoprj%/entity/KnowledgeManagementCategory_entity/entityfields/user_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityProvider>
+      <name>KnowledgeManagementCategories</name>
+    </entityProvider>
+    <entityField>
+      <name>ICON</name>
+      <title>Icon</title>
+      <contentType>IMAGE</contentType>
+      <mandatory v="true" />
+    </entityField>
+    <entityConsumer>
+      <name>KnowledgeManagementEntries</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KnowledgeManagement_entity</entityName>
+        <fieldName>Provider</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>Category_param</name>
+          <valueProcess>%aditoprj%/entity/KnowledgeManagementCategory_entity/entityfields/knowledgemanagemententries/children/category_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityField>
+      <name>ORDERNO</name>
+      <title>order</title>
+    </entityField>
+    <entityField>
+      <name>numberOfArticles</name>
+      <displayValueProcess>%aditoprj%/entity/KnowledgeManagementCategory_entity/entityfields/numberofarticles/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityField>
+      <name>SUMMARY</name>
+      <title>Summary</title>
+      <contentType>LONG_TEXT</contentType>
+    </entityField>
+  </entityFields>
+  <recordContainers>
+    <dbRecordContainer>
+      <name>db</name>
+      <orderClauseProcess>%aditoprj%/entity/KnowledgeManagementCategory_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
+      <alias>Data_alias</alias>
+      <recordFieldMappings>
+        <dbRecordFieldMapping>
+          <name>KNOWLEDGEMANAGEMENTCATEGORYID.value</name>
+          <recordfield>KNOWLEDGEMANAGEMENTCATEGORY.KNOWLEDGEMANAGEMENTCATEGORYID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_EDIT.value</name>
+          <recordfield>KNOWLEDGEMANAGEMENTCATEGORY.DATE_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>KNOWLEDGEMANAGEMENTCATEGORY.DATE_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_EDIT.value</name>
+          <recordfield>KNOWLEDGEMANAGEMENTCATEGORY.USER_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_NEW.value</name>
+          <recordfield>KNOWLEDGEMANAGEMENTCATEGORY.USER_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>NAME.value</name>
+          <recordfield>KNOWLEDGEMANAGEMENTCATEGORY.NAME</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>ICON.value</name>
+          <recordfield>KNOWLEDGEMANAGEMENTCATEGORY.ICON</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>ORDERNO.value</name>
+          <recordfield>KNOWLEDGEMANAGEMENTCATEGORY.ORDERNO</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>numberOfArticles.value</name>
+          <expression>%aditoprj%/entity/KnowledgeManagementCategory_entity/recordcontainers/db/recordfieldmappings/numberofarticles.value/expression.js</expression>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>SUMMARY.value</name>
+          <recordfield>KNOWLEDGEMANAGEMENTCATEGORY.SUMMARY</recordfield>
+        </dbRecordFieldMapping>
+      </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>14b22e62-6305-47f5-bd5a-20bb9cc2ad68</name>
+          <tableName>KNOWLEDGEMANAGEMENTCATEGORY</tableName>
+          <primaryKey>KNOWLEDGEMANAGEMENTCATEGORYID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
+    </dbRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/KnowledgeManagementCategory_entity/entityfields/date_edit/valueProcess.js b/entity/KnowledgeManagementCategory_entity/entityfields/date_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..24a5c38e010cb67d1243bfbbe67938d0251cc0e1
--- /dev/null
+++ b/entity/KnowledgeManagementCategory_entity/entityfields/date_edit/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+{
+    result.string(vars.get("$sys.date"));
+}
\ No newline at end of file
diff --git a/entity/KnowledgeManagementCategory_entity/entityfields/date_new/valueProcess.js b/entity/KnowledgeManagementCategory_entity/entityfields/date_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4f9b8563e6464ea5602efa9f8b12506a0b3db374
--- /dev/null
+++ b/entity/KnowledgeManagementCategory_entity/entityfields/date_new/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    result.string(vars.get("$sys.date"));
+}
\ No newline at end of file
diff --git a/entity/KnowledgeManagementCategory_entity/entityfields/knowledgemanagemententries/children/category_param/valueProcess.js b/entity/KnowledgeManagementCategory_entity/entityfields/knowledgemanagemententries/children/category_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..198b83be9d7addcfb4e98006c7c4746793f838b2
--- /dev/null
+++ b/entity/KnowledgeManagementCategory_entity/entityfields/knowledgemanagemententries/children/category_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+
+
+result.string(vars.get("$field.KNOWLEDGEMANAGEMENTCATEGORYID"));
\ No newline at end of file
diff --git a/entity/KnowledgeManagementCategory_entity/entityfields/numberofarticles/displayValueProcess.js b/entity/KnowledgeManagementCategory_entity/entityfields/numberofarticles/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..6bac4b08f200d947eba2845b440b91f6aa56d7f7
--- /dev/null
+++ b/entity/KnowledgeManagementCategory_entity/entityfields/numberofarticles/displayValueProcess.js
@@ -0,0 +1,14 @@
+import("system.vars");
+import("system.translate");
+import("system.result");
+
+var numberofarticles = vars.get("this.value");
+
+if(numberofarticles == null)
+{
+    result.string(translate.text("Entries") + ": 0");
+}
+else
+{
+    result.string(translate.text("Entries") + ": " + vars.get("$this.value")); 
+}
\ No newline at end of file
diff --git a/entity/KnowledgeManagementCategory_entity/entityfields/user_edit/valueProcess.js b/entity/KnowledgeManagementCategory_entity/entityfields/user_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..101f9115ca7d48575761308d7d8403f96c241128
--- /dev/null
+++ b/entity/KnowledgeManagementCategory_entity/entityfields/user_edit/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+{
+    result.string(vars.get("$sys.user"));
+}
\ No newline at end of file
diff --git a/entity/KnowledgeManagementCategory_entity/entityfields/user_new/valueProcess.js b/entity/KnowledgeManagementCategory_entity/entityfields/user_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..d4d90b08dd78fadbba8b3d6e4aa4d5b719072f14
--- /dev/null
+++ b/entity/KnowledgeManagementCategory_entity/entityfields/user_new/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    result.string(vars.get("$sys.user"));
+}
\ No newline at end of file
diff --git a/entity/KnowledgeManagementCategory_entity/grantCreateProcess.js b/entity/KnowledgeManagementCategory_entity/grantCreateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..14edd3e5db0e49cc565605c4e57dd2d4e53d9596
--- /dev/null
+++ b/entity/KnowledgeManagementCategory_entity/grantCreateProcess.js
@@ -0,0 +1,4 @@
+import("Context_lib");
+import("system.result");
+
+result.string(AdminViewUtils.userHasAdminRole());
\ No newline at end of file
diff --git a/entity/KnowledgeManagementCategory_entity/grantDeleteProcess.js b/entity/KnowledgeManagementCategory_entity/grantDeleteProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..14edd3e5db0e49cc565605c4e57dd2d4e53d9596
--- /dev/null
+++ b/entity/KnowledgeManagementCategory_entity/grantDeleteProcess.js
@@ -0,0 +1,4 @@
+import("Context_lib");
+import("system.result");
+
+result.string(AdminViewUtils.userHasAdminRole());
\ No newline at end of file
diff --git a/entity/KnowledgeManagementCategory_entity/grantUpdateProcess.js b/entity/KnowledgeManagementCategory_entity/grantUpdateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..14edd3e5db0e49cc565605c4e57dd2d4e53d9596
--- /dev/null
+++ b/entity/KnowledgeManagementCategory_entity/grantUpdateProcess.js
@@ -0,0 +1,4 @@
+import("Context_lib");
+import("system.result");
+
+result.string(AdminViewUtils.userHasAdminRole());
\ No newline at end of file
diff --git a/entity/KnowledgeManagementCategory_entity/recordcontainers/db/orderClauseProcess.js b/entity/KnowledgeManagementCategory_entity/recordcontainers/db/orderClauseProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..0bed230ddd5362b5d71bdbde014bf70c1ddac08a
--- /dev/null
+++ b/entity/KnowledgeManagementCategory_entity/recordcontainers/db/orderClauseProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("system.db");
+
+result.object({"KNOWLEDGEMANAGEMENTCATEGORY.ORDERNO": db.ASCENDING});
\ No newline at end of file
diff --git a/entity/KnowledgeManagementCategory_entity/recordcontainers/db/recordfieldmappings/numberofarticles.value/expression.js b/entity/KnowledgeManagementCategory_entity/recordcontainers/db/recordfieldmappings/numberofarticles.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..c84064cfa14e619a6f78ac71fbc81b99d0e8e71d
--- /dev/null
+++ b/entity/KnowledgeManagementCategory_entity/recordcontainers/db/recordfieldmappings/numberofarticles.value/expression.js
@@ -0,0 +1,11 @@
+import("system.result");
+import("Sql_lib");
+
+
+var sql = new SqlBuilder()
+                .selectCount("KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID")
+                .from("KNOWLEDGEMANAGEMENT")
+                .where("KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTCATEGORY_ID = KNOWLEDGEMANAGEMENTCATEGORY.KNOWLEDGEMANAGEMENTCATEGORYID")
+                .toString();
+                
+result.string(sql);
\ No newline at end of file
diff --git a/entity/KnowledgeManagementInbox_entity/KnowledgeManagementInbox_entity.aod b/entity/KnowledgeManagementInbox_entity/KnowledgeManagementInbox_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..c21d4f9066b17b04ffcbc9ea083207dd2ca1af0c
--- /dev/null
+++ b/entity/KnowledgeManagementInbox_entity/KnowledgeManagementInbox_entity.aod
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.22" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.22">
+  <name>KnowledgeManagementInbox_entity</name>
+  <title>Inbox</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <titlePlural>Inboxes</titlePlural>
+  <recordContainer>db</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityProvider>
+      <name>#PROVIDER_AGGREGATES</name>
+      <useAggregates v="true" />
+    </entityProvider>
+    <entityField>
+      <name>DATE_NEW</name>
+      <contentType>DATE</contentType>
+      <valueProcess>%aditoprj%/entity/KnowledgeManagementInbox_entity/entityfields/date_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_EDIT</name>
+      <contentType>DATE</contentType>
+      <valueProcess>%aditoprj%/entity/KnowledgeManagementInbox_entity/entityfields/date_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_NEW</name>
+      <valueProcess>%aditoprj%/entity/KnowledgeManagementInbox_entity/entityfields/user_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_EDIT</name>
+      <valueProcess>%aditoprj%/entity/KnowledgeManagementInbox_entity/entityfields/user_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>KNOWLEDGEMANAGEMENT_ID</name>
+      <valueProcess>%aditoprj%/entity/KnowledgeManagementInbox_entity/entityfields/knowledgemanagement_id/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>KNOWLEDGEMANAGEMENTINBOXID</name>
+    </entityField>
+    <entityField>
+      <name>INBOX_ID</name>
+      <consumer>Inboxes</consumer>
+    </entityField>
+    <entityParameter>
+      <name>KnowledgeManagementId_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityProvider>
+      <name>KnowledgeManagementInboxesProv</name>
+      <children>
+        <entityParameter>
+          <name>KnowledgeManagementId_param</name>
+          <mandatory v="true" />
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityConsumer>
+      <name>Inboxes</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Inbox_entity</entityName>
+        <fieldName>Indexes</fieldName>
+      </dependency>
+    </entityConsumer>
+  </entityFields>
+  <recordContainers>
+    <dbRecordContainer>
+      <name>db</name>
+      <alias>Data_alias</alias>
+      <recordFieldMappings>
+        <dbRecordFieldMapping>
+          <name>DATE_EDIT.value</name>
+          <recordfield>KNOWLEDGEMANAGEMENTINBOX.DATE_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>KNOWLEDGEMANAGEMENTINBOX.DATE_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>INBOX_ID.value</name>
+          <recordfield>KNOWLEDGEMANAGEMENTINBOX.INBOX_ID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>KNOWLEDGEMANAGEMENT_ID.value</name>
+          <recordfield>KNOWLEDGEMANAGEMENTINBOX.KNOWLEDGEMANAGEMENT_ID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>KNOWLEDGEMANAGEMENTINBOXID.value</name>
+          <recordfield>KNOWLEDGEMANAGEMENTINBOX.KNOWLEDGEMANAGEMENTINBOXID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_EDIT.value</name>
+          <recordfield>KNOWLEDGEMANAGEMENTINBOX.USER_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_NEW.value</name>
+          <recordfield>KNOWLEDGEMANAGEMENTINBOX.USER_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>INBOX_ID.displayValue</name>
+          <expression>%aditoprj%/entity/KnowledgeManagementInbox_entity/recordcontainers/db/recordfieldmappings/inbox_id.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
+      </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>e9683624-d1e6-47a2-9d27-d67a9ad286f2</name>
+          <tableName>KNOWLEDGEMANAGEMENTINBOX</tableName>
+          <primaryKey>KNOWLEDGEMANAGEMENTINBOXID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
+    </dbRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/KnowledgeManagementInbox_entity/entityfields/date_edit/valueProcess.js b/entity/KnowledgeManagementInbox_entity/entityfields/date_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2af46a8e46789056c6c341a8e4e087f8e1edc0c4
--- /dev/null
+++ b/entity/KnowledgeManagementInbox_entity/entityfields/date_edit/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+{
+    result.string(vars.get("$sys.date"));
+}
\ No newline at end of file
diff --git a/entity/KnowledgeManagementInbox_entity/entityfields/date_new/valueProcess.js b/entity/KnowledgeManagementInbox_entity/entityfields/date_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..d5cf2ff4f91546bf853125bec438493692a5e048
--- /dev/null
+++ b/entity/KnowledgeManagementInbox_entity/entityfields/date_new/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    result.string(vars.get("$sys.date"));
+}
\ No newline at end of file
diff --git a/entity/KnowledgeManagementInbox_entity/entityfields/knowledgemanagement_id/valueProcess.js b/entity/KnowledgeManagementInbox_entity/entityfields/knowledgemanagement_id/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..8f4567920d831c18446147de4313d4ccf4bb56a0
--- /dev/null
+++ b/entity/KnowledgeManagementInbox_entity/entityfields/knowledgemanagement_id/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.vars");
+ 
+var KnowledgeManagementId = vars.get("$param.KnowledgeManagementId_param");
+if (KnowledgeManagementId)
+{
+    result.string(KnowledgeManagementId);
+}
\ No newline at end of file
diff --git a/entity/KnowledgeManagementInbox_entity/entityfields/user_edit/valueProcess.js b/entity/KnowledgeManagementInbox_entity/entityfields/user_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b874a7ac426b8e99383ac949299b9753e4951f2b
--- /dev/null
+++ b/entity/KnowledgeManagementInbox_entity/entityfields/user_edit/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+{
+    result.string(vars.get("$sys.user"));
+}
\ No newline at end of file
diff --git a/entity/KnowledgeManagementInbox_entity/entityfields/user_new/valueProcess.js b/entity/KnowledgeManagementInbox_entity/entityfields/user_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..3f8db68b950a0505d6179cb67c14dde624c45070
--- /dev/null
+++ b/entity/KnowledgeManagementInbox_entity/entityfields/user_new/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    result.string(vars.get("$sys.user"));
+}
\ No newline at end of file
diff --git a/entity/KnowledgeManagementInbox_entity/recordcontainers/db/recordfieldmappings/inbox_id.displayvalue/expression.js b/entity/KnowledgeManagementInbox_entity/recordcontainers/db/recordfieldmappings/inbox_id.displayvalue/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..69e09efc9d1db6d8baed3515651a25c44f6d1afb
--- /dev/null
+++ b/entity/KnowledgeManagementInbox_entity/recordcontainers/db/recordfieldmappings/inbox_id.displayvalue/expression.js
@@ -0,0 +1,7 @@
+import("system.result");
+import("Sql_lib");
+
+result.string(newSelect("INBOX.NAME")
+                    .from("INBOX")
+                    .where("KNOWLEDGEMANAGEMENTINBOX.INBOX_ID = INBOX.INBOXID"));
+    
\ No newline at end of file
diff --git a/entity/KnowledgeManagementTicketCategory_entity/KnowledgeManagementTicketCategory_entity.aod b/entity/KnowledgeManagementTicketCategory_entity/KnowledgeManagementTicketCategory_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..7d439d9f9d1109804f1d26e1fae6cce17ed0a14f
--- /dev/null
+++ b/entity/KnowledgeManagementTicketCategory_entity/KnowledgeManagementTicketCategory_entity.aod
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.22" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.22">
+  <name>KnowledgeManagementTicketCategory_entity</name>
+  <title>Service category</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <titlePlural>Service categories</titlePlural>
+  <recordContainer>db</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityProvider>
+      <name>#PROVIDER_AGGREGATES</name>
+      <useAggregates v="true" />
+    </entityProvider>
+    <entityField>
+      <name>DATE_NEW</name>
+      <valueProcess>%aditoprj%/entity/KnowledgeManagementTicketCategory_entity/entityfields/date_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_EDIT</name>
+      <valueProcess>%aditoprj%/entity/KnowledgeManagementTicketCategory_entity/entityfields/date_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_EDIT</name>
+      <tooltip></tooltip>
+      <valueProcess>%aditoprj%/entity/KnowledgeManagementTicketCategory_entity/entityfields/user_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_NEW</name>
+      <valueProcess>%aditoprj%/entity/KnowledgeManagementTicketCategory_entity/entityfields/user_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>CLASSIFICATION</name>
+      <title>Category</title>
+      <consumer>KeywordsCategories</consumer>
+      <displayValueProcess>%aditoprj%/entity/KnowledgeManagementTicketCategory_entity/entityfields/classification/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityField>
+      <name>KNOWLEDGEMANAGEMENT_ID</name>
+      <valueProcess>%aditoprj%/entity/KnowledgeManagementTicketCategory_entity/entityfields/knowledgemanagement_id/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>KNOWLEDGEMANAGEMENT_TICKETCATEGORYID</name>
+    </entityField>
+    <entityParameter>
+      <name>KnowledgeManagementId_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityProvider>
+      <name>KnowledgeManagementClassificationsProv</name>
+      <children>
+        <entityParameter>
+          <name>KnowledgeManagementId_param</name>
+          <mandatory v="true" />
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityConsumer>
+      <name>KeywordsCategories</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContainerName_param</name>
+          <valueProcess>%aditoprj%/entity/KnowledgeManagementTicketCategory_entity/entityfields/keywordscategories/children/containername_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+  </entityFields>
+  <recordContainers>
+    <dbRecordContainer>
+      <name>db</name>
+      <conditionProcess>%aditoprj%/entity/KnowledgeManagementTicketCategory_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
+      <alias>Data_alias</alias>
+      <recordFieldMappings>
+        <dbRecordFieldMapping>
+          <name>CLASSIFICATION.value</name>
+          <recordfield>KNOWLEDGEMANAGEMENTTICKETCATEGORY.CLASSIFICATION</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_EDIT.value</name>
+          <recordfield>KNOWLEDGEMANAGEMENTTICKETCATEGORY.DATE_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>KNOWLEDGEMANAGEMENTTICKETCATEGORY.DATE_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_EDIT.value</name>
+          <recordfield>KNOWLEDGEMANAGEMENTTICKETCATEGORY.USER_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_NEW.value</name>
+          <recordfield>KNOWLEDGEMANAGEMENTTICKETCATEGORY.USER_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>KNOWLEDGEMANAGEMENT_ID.value</name>
+          <recordfield>KNOWLEDGEMANAGEMENTTICKETCATEGORY.KNOWLEDGEMANAGEMENT_ID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>KNOWLEDGEMANAGEMENT_TICKETCATEGORYID.value</name>
+          <recordfield>KNOWLEDGEMANAGEMENTTICKETCATEGORY.KNOWLEDGEMANAGEMENTTICKETCATEGORYID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>CLASSIFICATION.displayValue</name>
+          <expression>%aditoprj%/entity/KnowledgeManagementTicketCategory_entity/recordcontainers/db/recordfieldmappings/classification.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
+      </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>580de8a2-e2ef-4100-a84f-5b732f3fb13d</name>
+          <tableName>KNOWLEDGEMANAGEMENTTICKETCATEGORY</tableName>
+          <primaryKey>KNOWLEDGEMANAGEMENTTICKETCATEGORYID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
+    </dbRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/KnowledgeManagementTicketCategory_entity/entityfields/classification/displayValueProcess.js b/entity/KnowledgeManagementTicketCategory_entity/entityfields/classification/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2afe26447e4a371fd3ebb24ed6eff54635e1834f
--- /dev/null
+++ b/entity/KnowledgeManagementTicketCategory_entity/entityfields/classification/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("KeywordRegistry_basic");
+import("system.vars");
+import("system.result");
+import("Keyword_lib");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.ticketCategory(), vars.get("$field.CLASSIFICATION")));
\ No newline at end of file
diff --git a/entity/KnowledgeManagementTicketCategory_entity/entityfields/date_edit/valueProcess.js b/entity/KnowledgeManagementTicketCategory_entity/entityfields/date_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2af46a8e46789056c6c341a8e4e087f8e1edc0c4
--- /dev/null
+++ b/entity/KnowledgeManagementTicketCategory_entity/entityfields/date_edit/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+{
+    result.string(vars.get("$sys.date"));
+}
\ No newline at end of file
diff --git a/entity/KnowledgeManagementTicketCategory_entity/entityfields/date_new/valueProcess.js b/entity/KnowledgeManagementTicketCategory_entity/entityfields/date_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..d5cf2ff4f91546bf853125bec438493692a5e048
--- /dev/null
+++ b/entity/KnowledgeManagementTicketCategory_entity/entityfields/date_new/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    result.string(vars.get("$sys.date"));
+}
\ No newline at end of file
diff --git a/entity/KnowledgeManagementTicketCategory_entity/entityfields/keywordscategories/children/containername_param/valueProcess.js b/entity/KnowledgeManagementTicketCategory_entity/entityfields/keywordscategories/children/containername_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..41b0c58f1ffe5e105d040c154670115bc953ccb6
--- /dev/null
+++ b/entity/KnowledgeManagementTicketCategory_entity/entityfields/keywordscategories/children/containername_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string($KeywordRegistry.ticketCategory());
\ No newline at end of file
diff --git a/entity/KnowledgeManagementTicketCategory_entity/entityfields/knowledgemanagement_id/valueProcess.js b/entity/KnowledgeManagementTicketCategory_entity/entityfields/knowledgemanagement_id/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..8f4567920d831c18446147de4313d4ccf4bb56a0
--- /dev/null
+++ b/entity/KnowledgeManagementTicketCategory_entity/entityfields/knowledgemanagement_id/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.vars");
+ 
+var KnowledgeManagementId = vars.get("$param.KnowledgeManagementId_param");
+if (KnowledgeManagementId)
+{
+    result.string(KnowledgeManagementId);
+}
\ No newline at end of file
diff --git a/entity/KnowledgeManagementTicketCategory_entity/entityfields/user_edit/valueProcess.js b/entity/KnowledgeManagementTicketCategory_entity/entityfields/user_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b874a7ac426b8e99383ac949299b9753e4951f2b
--- /dev/null
+++ b/entity/KnowledgeManagementTicketCategory_entity/entityfields/user_edit/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+{
+    result.string(vars.get("$sys.user"));
+}
\ No newline at end of file
diff --git a/entity/KnowledgeManagementTicketCategory_entity/entityfields/user_new/valueProcess.js b/entity/KnowledgeManagementTicketCategory_entity/entityfields/user_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..3f8db68b950a0505d6179cb67c14dde624c45070
--- /dev/null
+++ b/entity/KnowledgeManagementTicketCategory_entity/entityfields/user_new/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    result.string(vars.get("$sys.user"));
+}
\ No newline at end of file
diff --git a/entity/KnowledgeManagementTicketCategory_entity/recordcontainers/db/conditionProcess.js b/entity/KnowledgeManagementTicketCategory_entity/recordcontainers/db/conditionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4e17ed702090523189c0073b50b24120aba64771
--- /dev/null
+++ b/entity/KnowledgeManagementTicketCategory_entity/recordcontainers/db/conditionProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Sql_lib");
+
+
+var cond = newWhere();
+cond.andIfSet("KNOWLEDGEMANAGEMENTTICKETCATEGORY.KNOWLEDGEMANAGEMENT_ID", "$param.KnowledgeManagementId_param");     
+
+result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/problem.displayvalue/expression.js b/entity/KnowledgeManagementTicketCategory_entity/recordcontainers/db/recordfieldmappings/classification.displayvalue/expression.js
similarity index 56%
rename from entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/problem.displayvalue/expression.js
rename to entity/KnowledgeManagementTicketCategory_entity/recordcontainers/db/recordfieldmappings/classification.displayvalue/expression.js
index 5ebe6375ca2a8aa560389d7de16cb6a19dd98298..46bb72e9e5381eb270e07d71b099499ee8de7c5b 100644
--- a/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/problem.displayvalue/expression.js
+++ b/entity/KnowledgeManagementTicketCategory_entity/recordcontainers/db/recordfieldmappings/classification.displayvalue/expression.js
@@ -1,8 +1,7 @@
-import("Contact_lib");
-import("system.db");
 import("system.result");
 import("Keyword_lib");
 import("KeywordRegistry_basic");
 
-var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.bulkMailProblem(), "BULKMAILRECIPIENT.STATUS");
-result.string(sql);
+var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.ticketCategory(), "CLASSIFICATION"); 
+
+result.string(sql);
\ No newline at end of file
diff --git a/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod b/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod
index 2bafd40619419a08e00d284c9b3a4457b45d16cf..b89414460a3f72d4478adef3e5d9dd19f88a1661 100644
--- a/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod
+++ b/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod
@@ -91,6 +91,7 @@
       <title>Type</title>
       <consumer>KeywordKnowledgeType</consumer>
       <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/type/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/type/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>htmlView</name>
@@ -336,6 +337,113 @@
       <name>ObjectType_param</name>
       <expose v="true" />
     </entityParameter>
+    <entityActionField>
+      <name>openAdminView</name>
+      <title>Open admin view</title>
+      <onActionProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/openadminview/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:CURLY_BRACKETS</iconId>
+      <stateProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/openadminview/stateProcess.js</stateProcess>
+    </entityActionField>
+    <entityField>
+      <name>USEINALLTICKETCATEGORIES</name>
+      <title>Use all categories</title>
+      <contentType>BOOLEAN</contentType>
+      <state>INVISIBLE</state>
+      <stateProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/useinallticketcategories/stateProcess.js</stateProcess>
+      <onValueChange>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/useinallticketcategories/onValueChange.js</onValueChange>
+    </entityField>
+    <entityField>
+      <name>USEINALLINBOXES</name>
+      <title>Use all inboxes</title>
+      <contentType>BOOLEAN</contentType>
+      <state>INVISIBLE</state>
+      <stateProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/useinallinboxes/stateProcess.js</stateProcess>
+      <onValueChange>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/useinallinboxes/onValueChange.js</onValueChange>
+      <onValueChangeTypes>
+        <element>MASK</element>
+      </onValueChangeTypes>
+    </entityField>
+    <entityConsumer>
+      <name>KnowledgeManagementTicketCategories</name>
+      <state>AUTO</state>
+      <stateProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/knowledgemanagementticketcategories/stateProcess.js</stateProcess>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KnowledgeManagementTicketCategory_entity</entityName>
+        <fieldName>KnowledgeManagementClassificationsProv</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>KnowledgeManagementId_param</name>
+          <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/knowledgemanagementticketcategories/children/knowledgemanagementid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityParameter>
+      <name>TicketCategory_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityConsumer>
+      <name>KnowledgeManagementInboxes</name>
+      <state>AUTO</state>
+      <stateProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/knowledgemanagementinboxes/stateProcess.js</stateProcess>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KnowledgeManagementInbox_entity</entityName>
+        <fieldName>KnowledgeManagementInboxesProv</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>KnowledgeManagementId_param</name>
+          <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/knowledgemanagementinboxes/children/knowledgemanagementid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityParameter>
+      <name>Inbox_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityField>
+      <name>NUMBEROFVIEWS</name>
+      <title>Views</title>
+      <contentType>NUMBER</contentType>
+      <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/numberofviews/valueProcess.js</valueProcess>
+    </entityField>
+    <entityActionField>
+      <name>Likes</name>
+      <onActionProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/likes/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:THUMBS_UP</iconId>
+      <titleProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/likes/titleProcess.js</titleProcess>
+    </entityActionField>
+    <entityConsumer>
+      <name>KnowledgeManagementCategories</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KnowledgeManagementCategory_entity</entityName>
+        <fieldName>KnowledgeManagementCategories</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityField>
+      <name>KNOWLEDGEMANAGEMENTCATEGORY_ID</name>
+      <title>Category</title>
+      <consumer>KnowledgeManagementCategories</consumer>
+      <groupable v="true" />
+      <displayValueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/knowledgemanagementcategory_id/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityParameter>
+      <name>Category_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityField>
+      <name>numberOfLikes</name>
+      <title>Likes</title>
+      <contentType>NUMBER</contentType>
+    </entityField>
+    <entityField>
+      <name>SUMMARY</name>
+      <title>Summary</title>
+      <contentType>LONG_TEXT</contentType>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -441,10 +549,41 @@
           <name>PUBLISH.displayValue</name>
           <expression>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/publish.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USEINALLINBOXES.value</name>
+          <recordfield>KNOWLEDGEMANAGEMENT.USEINALLINBOXES</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USEINALLTICKETCATEGORIES.value</name>
+          <recordfield>KNOWLEDGEMANAGEMENT.USEINALLTICKETCATEGORIES</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>NUMBEROFVIEWS.value</name>
+          <recordfield>KNOWLEDGEMANAGEMENT.NUMBEROFVIEWS</recordfield>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>KNOWLEDGEMANAGEMENTCATEGORY_ID.value</name>
+          <recordfield>KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTCATEGORY_ID</recordfield>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>KNOWLEDGEMANAGEMENTCATEGORY_ID.displayValue</name>
+          <expression>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/knowledgemanagement_category_id.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>numberOfLikes.value</name>
+          <expression>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/numberoflikes.value/expression.js</expression>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>SUMMARY.value</name>
+          <recordfield>KNOWLEDGEMANAGEMENT.SUMMARY</recordfield>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
       <linkInformation>
         <linkInformation>
-          <name>9d4a7198-a4d1-45b3-867f-bf12cd558274</name>
+          <name>91537b81-91ec-4e16-a630-8bd1d512dfe9</name>
           <tableName>KNOWLEDGEMANAGEMENT</tableName>
           <primaryKey>KNOWLEDGEMANAGEMENTID</primaryKey>
           <isUIDTable v="true" />
diff --git a/entity/KnowledgeManagement_entity/afterUiInit.js b/entity/KnowledgeManagement_entity/afterUiInit.js
index d90e107fcd4e6770480fdf4fed9b89f5b75cecb9..769431446713a0448620026e0711538004227ba7 100644
--- a/entity/KnowledgeManagement_entity/afterUiInit.js
+++ b/entity/KnowledgeManagement_entity/afterUiInit.js
@@ -1,3 +1,4 @@
+import("Sql_lib");
 import("system.vars");
 import("system.neon");
 
@@ -9,3 +10,21 @@ if(vars.get("$param.ObjectRowId_param") && vars.get("$param.ObjectType_param"))
         "OBJECT_TYPE": vars.get("$param.ObjectType_param")
     });
 }
+
+if (vars.get("$sys.presentationmode") === neon.CONTEXT_PRESENTATIONMODE_FULL)
+{
+    var ViewValues = {};
+    var currentViews = newSelect("KNOWLEDGEMANAGEMENT.NUMBEROFVIEWS")
+                        .from("KNOWLEDGEMANAGEMENT")
+                        .where("KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID","$field.KNOWLEDGEMANAGEMENTID")
+                        .cell();
+    if (currentViews == "")
+    {
+        ViewValues["NUMBEROFVIEWS"] = 1;
+    }
+    else
+    {
+        ViewValues["NUMBEROFVIEWS"] = Number(currentViews) + 1;
+    }
+    newWhereIfSet("KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID","$field.KNOWLEDGEMANAGEMENTID").updateFields(ViewValues);
+}
diff --git a/entity/KnowledgeManagement_entity/entityfields/knowledgemanagementcategory_id/displayValueProcess.js b/entity/KnowledgeManagement_entity/entityfields/knowledgemanagementcategory_id/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..dc91c65806897d8d6ac5a884909bfbe3b349075f
--- /dev/null
+++ b/entity/KnowledgeManagement_entity/entityfields/knowledgemanagementcategory_id/displayValueProcess.js
@@ -0,0 +1,11 @@
+import("system.vars");
+import("system.result");
+import("Sql_lib");
+
+
+var sql = newSelect(["KNOWLEDGEMANAGEMENTCATEGORY.NAME"])
+                 .from("KNOWLEDGEMANAGEMENTCATEGORY")
+                 .where("KNOWLEDGEMANAGEMENTCATEGORY.KNOWLEDGEMANAGEMENTCATEGORYID", vars.get("$field.KNOWLEDGEMANAGEMENTCATEGORY_ID"))
+                 .cell();
+                 
+result.string(sql);
\ No newline at end of file
diff --git a/entity/KnowledgeManagement_entity/entityfields/knowledgemanagementinboxes/children/knowledgemanagementid_param/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/knowledgemanagementinboxes/children/knowledgemanagementid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..78c1da185830c7db84eedbde260e8a2d7df71e52
--- /dev/null
+++ b/entity/KnowledgeManagement_entity/entityfields/knowledgemanagementinboxes/children/knowledgemanagementid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.KNOWLEDGEMANAGEMENTID"));
\ No newline at end of file
diff --git a/entity/KnowledgeManagement_entity/entityfields/knowledgemanagementinboxes/stateProcess.js b/entity/KnowledgeManagement_entity/entityfields/knowledgemanagementinboxes/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..fd07ae5edd25dfb668fccf38efb0f80978f8b983
--- /dev/null
+++ b/entity/KnowledgeManagement_entity/entityfields/knowledgemanagementinboxes/stateProcess.js
@@ -0,0 +1,16 @@
+import("KeywordRegistry_basic");
+import("system.neon");
+import("system.result");
+import("Util_lib");
+import("system.vars");
+
+
+if(vars.get("$field.TYPE") == $KeywordRegistry.knowledgeType$solution() &&
+   !Utils.toBoolean(vars.get("$field.USEINALLINBOXES")))
+{
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+}
+else
+{
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
+}
\ No newline at end of file
diff --git a/entity/KnowledgeManagement_entity/entityfields/knowledgemanagementticketcategories/children/knowledgemanagementid_param/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/knowledgemanagementticketcategories/children/knowledgemanagementid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..78c1da185830c7db84eedbde260e8a2d7df71e52
--- /dev/null
+++ b/entity/KnowledgeManagement_entity/entityfields/knowledgemanagementticketcategories/children/knowledgemanagementid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.KNOWLEDGEMANAGEMENTID"));
\ No newline at end of file
diff --git a/entity/KnowledgeManagement_entity/entityfields/knowledgemanagementticketcategories/stateProcess.js b/entity/KnowledgeManagement_entity/entityfields/knowledgemanagementticketcategories/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..09c6076bf668464d870b1ea3622a04ce5457161e
--- /dev/null
+++ b/entity/KnowledgeManagement_entity/entityfields/knowledgemanagementticketcategories/stateProcess.js
@@ -0,0 +1,16 @@
+import("KeywordRegistry_basic");
+import("system.neon");
+import("system.result");
+import("Util_lib");
+import("system.vars");
+
+
+if(vars.get("$field.TYPE") == $KeywordRegistry.knowledgeType$solution() &&
+   !Utils.toBoolean(vars.get("$field.USEINALLTICKETCATEGORIES")))
+{
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+}
+else
+{
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
+}
\ No newline at end of file
diff --git a/entity/KnowledgeManagement_entity/entityfields/likes/onActionProcess.js b/entity/KnowledgeManagement_entity/entityfields/likes/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a03dedf226c1bee27328cb6b4f54b1fddfd8a278
--- /dev/null
+++ b/entity/KnowledgeManagement_entity/entityfields/likes/onActionProcess.js
@@ -0,0 +1,66 @@
+import("system.logging");
+import("system.tools");
+import("Contact_lib");
+import("system.notification");
+import("system.translate");
+import("system.entities");
+import("Context_lib");
+import("Employee_lib");
+import("system.util");
+import("system.neon");
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+
+var likeButtonId = newSelect("LIKEBUTTON.LIKEBUTTONID")
+            .from("LIKEBUTTON")
+            .where("LIKEBUTTON.OBJECT_ROWID",vars.get("$field.KNOWLEDGEMANAGEMENTID"))
+            .cell();
+
+if (likeButtonId != "")
+{
+     var deleteConfig = entities.createConfigForDeletingRows()
+                                .entity("LikeButton_entity")
+                                .uid(likeButtonId);
+
+    entities.deleteRow(deleteConfig);
+}
+else
+{
+    var LikeButtonData = {
+        "LIKEBUTTONID" : util.getNewUUID(),
+        "CONTACT_ID"   : EmployeeUtils.getCurrentContactId(),
+        "OBJECT_ROWID" : vars.get("$field.KNOWLEDGEMANAGEMENTID"),
+        "OBJECT_TYPE"  : ContextUtils.getCurrentContextId()
+    }
+
+    var addConfig = entities.createConfigForAddingRows()
+                        .entity("LikeButton_entity")
+                        .fieldValues(LikeButtonData);
+
+    entities.createRow(addConfig);
+    
+    var authorContactId = vars.get("$field.AUTHOR_CONTACT_ID");
+    var employee = EmployeeUtils.getUserByContactId(authorContactId);
+    var employeeUserId = employee[tools.NAME];
+    var employeeUserName = employee[tools.TITLE];
+
+    let articleName = vars.get("$field.TITLE");
+    let user = EmployeeUtils.getCurrentContactId();
+    let username = ContactUtils.getTitleByContactId(user);
+    let caption = translate.text("Someone liked one of your articles");
+    
+    let description = employeeUserName + " " + translate.text("liked your knowledge article") + " " + articleName + ".";
+
+    let notificationConfig = notification.createConfig()
+        .addUserWithId(employeeUserId)
+        .forcedPriority(notification.PRIO_LOW)
+        .notificationType("Like")
+        .initialState(notification.STATE_UNSEEN)
+        .caption(caption)
+        .description(description);
+
+    notification.addNotificationWith(notificationConfig);   
+}
+neon.refresh();
+
diff --git a/entity/KnowledgeManagement_entity/entityfields/likes/titleProcess.js b/entity/KnowledgeManagement_entity/entityfields/likes/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..ba32c656bda6389b0f63af1134ff354b13b28c4f
--- /dev/null
+++ b/entity/KnowledgeManagement_entity/entityfields/likes/titleProcess.js
@@ -0,0 +1,19 @@
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+import("system.neon");
+
+var likeButtonId = newSelect("LIKEBUTTON.LIKEBUTTONID")
+            .from("LIKEBUTTON")
+            .where("LIKEBUTTON.OBJECT_ROWID",vars.get("$field.KNOWLEDGEMANAGEMENTID"))
+            .cell();
+
+if (likeButtonId != "")
+{
+    result.string(translate.text("Remove Like"));
+}
+else
+{
+    result.string("Like");
+}
\ No newline at end of file
diff --git a/entity/KnowledgeManagement_entity/entityfields/numberofviews/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/numberofviews/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9096d023604fba5323a4325821b57e263a98ed24
--- /dev/null
+++ b/entity/KnowledgeManagement_entity/entityfields/numberofviews/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.vars");
+
+
+if (vars.get("$this.value") == null)
+{
+    result.string(0);
+}
\ No newline at end of file
diff --git a/entity/KnowledgeManagement_entity/entityfields/openadminview/onActionProcess.js b/entity/KnowledgeManagement_entity/entityfields/openadminview/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b2396b10d04a36559acd0a4a69f3d2bf91b0a0c7
--- /dev/null
+++ b/entity/KnowledgeManagement_entity/entityfields/openadminview/onActionProcess.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("Context_lib");
+
+AdminViewUtils.open("KNOWLEDGEMANAGMENTID", [
+    ["RESPONSIBLE_CONTACT_ID", vars.get("$field.RESPONSIBLE_CONTACT_ID")],
+]);
\ No newline at end of file
diff --git a/entity/KnowledgeManagement_entity/entityfields/openadminview/stateProcess.js b/entity/KnowledgeManagement_entity/entityfields/openadminview/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..38f2298db7304b4d44a15fbad7f720558c02da99
--- /dev/null
+++ b/entity/KnowledgeManagement_entity/entityfields/openadminview/stateProcess.js
@@ -0,0 +1,4 @@
+import("Context_lib");
+import("system.result");
+
+result.string(AdminViewUtils.getActionState());
\ No newline at end of file
diff --git a/entity/KnowledgeManagement_entity/entityfields/type/displayValueProcess.js b/entity/KnowledgeManagement_entity/entityfields/type/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f800e68e588a0caa5a2e1d03e875f19c18669f21
--- /dev/null
+++ b/entity/KnowledgeManagement_entity/entityfields/type/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("KeywordRegistry_basic");
+import("system.vars");
+import("system.result");
+import("Keyword_lib");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.knowledgeType(), vars.get("$field.TYPE")));
\ No newline at end of file
diff --git a/entity/KnowledgeManagement_entity/entityfields/useinallinboxes/onValueChange.js b/entity/KnowledgeManagement_entity/entityfields/useinallinboxes/onValueChange.js
new file mode 100644
index 0000000000000000000000000000000000000000..2807fbb892dd2a32f26a60e28e45c1e9e115317d
--- /dev/null
+++ b/entity/KnowledgeManagement_entity/entityfields/useinallinboxes/onValueChange.js
@@ -0,0 +1,14 @@
+import("system.vars");
+import("system.neon");
+import("Entity_lib");
+
+if(vars.get("$local.value") == "1")
+{
+    var ticketCategoriesConsumer = "KnowledgeManagementTicketCategories";
+    var currentTicketCategories = EntityConsumerRowsHelper.getCurrentConsumerRows(ticketCategoriesConsumer, ["KNOWLEDGEMANAGEMENT_TICKETCATEGORYID"]);
+    
+    currentTicketCategories.forEach(function(ticketCategory)
+    {
+        neon.deleteRecord(ticketCategoriesConsumer, ticketCategory["#UID"]);
+    });
+}
diff --git a/entity/KnowledgeManagement_entity/entityfields/useinallinboxes/stateProcess.js b/entity/KnowledgeManagement_entity/entityfields/useinallinboxes/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2702ce1ca28162f59f0bdfb92f5c0fba872d2f3c
--- /dev/null
+++ b/entity/KnowledgeManagement_entity/entityfields/useinallinboxes/stateProcess.js
@@ -0,0 +1,9 @@
+import("KeywordRegistry_basic");
+import("system.vars");
+import("system.neon");
+import("system.result");
+
+if(vars.get("$field.TYPE") == $KeywordRegistry.knowledgeType$solution())
+{
+    result.string(neon.COMPONENTSTATE_EDITABLE);   
+}
diff --git a/entity/KnowledgeManagement_entity/entityfields/useinallticketcategories/onValueChange.js b/entity/KnowledgeManagement_entity/entityfields/useinallticketcategories/onValueChange.js
new file mode 100644
index 0000000000000000000000000000000000000000..768a4c00ba7f5a9628aabe7b874f5e55f8bb5681
--- /dev/null
+++ b/entity/KnowledgeManagement_entity/entityfields/useinallticketcategories/onValueChange.js
@@ -0,0 +1,14 @@
+import("system.vars");
+import("system.neon");
+import("Entity_lib");
+
+if(vars.get("$local.value") == "1")
+{
+    var ticketCategoriesConsumer = "KnowledgeManagementInboxes";
+    var currentTicketCategories = EntityConsumerRowsHelper.getCurrentConsumerRows(ticketCategoriesConsumer, ["KNOWLEDGEMANAGEMENT_TICKETCATEGORYID"]);
+    
+    currentTicketCategories.forEach(function(ticketCategory)
+    {
+        neon.deleteRecord(ticketCategoriesConsumer, ticketCategory["#UID"]);
+    });
+}
\ No newline at end of file
diff --git a/entity/KnowledgeManagement_entity/entityfields/useinallticketcategories/stateProcess.js b/entity/KnowledgeManagement_entity/entityfields/useinallticketcategories/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2702ce1ca28162f59f0bdfb92f5c0fba872d2f3c
--- /dev/null
+++ b/entity/KnowledgeManagement_entity/entityfields/useinallticketcategories/stateProcess.js
@@ -0,0 +1,9 @@
+import("KeywordRegistry_basic");
+import("system.vars");
+import("system.neon");
+import("system.result");
+
+if(vars.get("$field.TYPE") == $KeywordRegistry.knowledgeType$solution())
+{
+    result.string(neon.COMPONENTSTATE_EDITABLE);   
+}
diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/conditionProcess.js b/entity/KnowledgeManagement_entity/recordcontainers/db/conditionProcess.js
index 1fafde255863d73379c9939c0639ac59e0039645..2c77e937c9e8287ca47f33490795d30aa1424025 100644
--- a/entity/KnowledgeManagement_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/KnowledgeManagement_entity/recordcontainers/db/conditionProcess.js
@@ -33,4 +33,30 @@ if(vars.get("$param.ObjectRowId_param") && vars.get("$param.ObjectType_param"))
             SqlBuilder.IN());
 }
 
+if(vars.get("$param.Category_param"))
+{
+    cond.and("KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTCATEGORY_ID", 
+            newSelect("KNOWLEDGEMANAGEMENTCATEGORYID")
+            .from("KNOWLEDGEMANAGEMENTCATEGORY")
+            .whereIfSet("KNOWLEDGEMANAGEMENTCATEGORY.KNOWLEDGEMANAGEMENTCATEGORYID", "$param.Category_param"), SqlBuilder.IN())
+            
+}
+
+if(vars.get("$param.TicketCategory_param"))
+{
+    cond.and("KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID", 
+            newSelect("KNOWLEDGEMANAGEMENT_ID")
+            .from("KNOWLEDGEMANAGEMENTTICKETCATEGORY")
+            .whereIfSet("KNOWLEDGEMANAGEMENTTICKETCATEGORY.CLASSIFICATION", "$param.TicketCategory_param"), SqlBuilder.IN())
+            .or("KNOWLEDGEMANAGEMENT.USEINALLTICKETCATEGORIES", 1);;
+}
+
+if(vars.get("$param.Inbox_param"))
+{
+    cond.and("KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID", 
+            newSelect("KNOWLEDGEMANAGEMENT_ID")
+            .from("KNOWLEDGEMANAGEMENTINBOX")
+            .whereIfSet("KNOWLEDGEMANAGEMENTINBOX.INBOX_ID", "$param.Inbox_param"), SqlBuilder.IN())
+            .or("KNOWLEDGEMANAGEMENT.USEINALLINBOXES", 1);
+}
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/knowledgemanagement_category_id.displayvalue/expression.js b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/knowledgemanagement_category_id.displayvalue/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..6caee254e0a37a92bd420682ef89ce307357d2c9
--- /dev/null
+++ b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/knowledgemanagement_category_id.displayvalue/expression.js
@@ -0,0 +1,9 @@
+import("system.result");
+import("Sql_lib");
+
+result.string(
+    newSelect(["KNOWLEDGEMANAGEMENTCATEGORY.NAME"])
+        .from("KNOWLEDGEMANAGEMENTCATEGORY")
+        .where("KNOWLEDGEMANAGEMENTCATEGORY.KNOWLEDGEMANAGEMENTCATEGORYID = KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTCATEGORY_ID")
+        .toString()
+);
\ No newline at end of file
diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/numberoflikes.value/expression.js b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/numberoflikes.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..1931df219ea29a538f2a461e826a30443bc3d908
--- /dev/null
+++ b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/numberoflikes.value/expression.js
@@ -0,0 +1,9 @@
+import("system.result");
+import("Sql_lib");
+
+var sql = new SqlBuilder()
+            .selectCount(["LIKEBUTTON.OBJECT_ROWID"])
+            .from("LIKEBUTTON")
+            .where("LIKEBUTTON.OBJECT_ROWID = KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID")
+            .toString();
+result.string(sql);
\ No newline at end of file
diff --git a/entity/LikeButton_entity/LikeButton_entity.aod b/entity/LikeButton_entity/LikeButton_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..c8216feb0bcb68e912dde48f34c177758d2d1c85
--- /dev/null
+++ b/entity/LikeButton_entity/LikeButton_entity.aod
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.22" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.22">
+  <name>LikeButton_entity</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <recordContainer>db</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityProvider>
+      <name>#PROVIDER_AGGREGATES</name>
+      <useAggregates v="true" />
+    </entityProvider>
+    <entityField>
+      <name>LIKEBUTTONID</name>
+    </entityField>
+    <entityField>
+      <name>CONTACT_ID</name>
+    </entityField>
+    <entityField>
+      <name>OBJECT_ROWID</name>
+    </entityField>
+    <entityField>
+      <name>OBJECT_TYPE</name>
+    </entityField>
+    <entityParameter>
+      <name>ObjectRowId_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityParameter>
+      <name>ObjectType_param</name>
+      <expose v="true" />
+    </entityParameter>
+  </entityFields>
+  <recordContainers>
+    <dbRecordContainer>
+      <name>db</name>
+      <alias>Data_alias</alias>
+      <recordFieldMappings>
+        <dbRecordFieldMapping>
+          <name>CONTACT_ID.value</name>
+          <recordfield>LIKEBUTTON.CONTACT_ID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>LIKEBUTTONID.value</name>
+          <recordfield>LIKEBUTTON.LIKEBUTTONID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>OBJECT_ROWID.value</name>
+          <recordfield>LIKEBUTTON.OBJECT_ROWID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>OBJECT_TYPE.value</name>
+          <recordfield>LIKEBUTTON.OBJECT_TYPE</recordfield>
+        </dbRecordFieldMapping>
+      </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>862241a7-a93e-4c27-8644-ee06f1d82e05</name>
+          <tableName>LIKEBUTTON</tableName>
+          <primaryKey>LIKEBUTTONID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
+    </dbRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/MailSignature_entity/recordcontainers/db/conditionProcess.js b/entity/MailSignature_entity/recordcontainers/db/conditionProcess.js
index 5ef8b14372db3bdac10253cb3f8c2456772b167c..24b4f9bf55eb9cb305a39b9bf1c69d0ab747829d 100644
--- a/entity/MailSignature_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/MailSignature_entity/recordcontainers/db/conditionProcess.js
@@ -1,4 +1,3 @@
-import("system.logging");
 import("system.neon");
 import("system.vars");
 import("system.result");
diff --git a/entity/Offer_entity/Offer_entity.aod b/entity/Offer_entity/Offer_entity.aod
index eee6ec2641707e66bc8baa06f2078aadc08dfcf6..cb0fc3514397f8fef6c70d7fe034e2dcbe31642c 100644
--- a/entity/Offer_entity/Offer_entity.aod
+++ b/entity/Offer_entity/Offer_entity.aod
@@ -1037,6 +1037,38 @@
       <name>Approval_param</name>
       <expose v="true" />
     </entityParameter>
+    <entityConsumer>
+      <name>KeywordProductGroup</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContainerName_param</name>
+          <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/keywordproductgroup/children/containername_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityField>
+      <name>DISCOUNT_NET</name>
+      <contentType>NUMBER</contentType>
+      <outputFormat>#,##0.00</outputFormat>
+      <inputFormat>#,##0.00</inputFormat>
+      <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/discount_net/stateProcess.js</stateProcess>
+      <titleProcess>%aditoprj%/entity/Offer_entity/entityfields/discount_net/titleProcess.js</titleProcess>
+      <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/discount_net/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityField>
+      <name>GROSS</name>
+      <title>Total gross</title>
+      <contentType>NUMBER</contentType>
+      <outputFormat>#,##0.00</outputFormat>
+      <inputFormat>#,##0.00</inputFormat>
+      <state>READONLY</state>
+      <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/gross/displayValueProcess.js</displayValueProcess>
+    </entityField>
     <entityActionGroup>
       <name>observeActionGroup</name>
       <children>
@@ -1148,6 +1180,12 @@
       <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/approveoffer/stateProcess.js</stateProcess>
       <titleProcess>%aditoprj%/entity/Offer_entity/entityfields/approveoffer/titleProcess.js</titleProcess>
     </entityActionField>
+    <entityActionField>
+      <name>newSupportTicket</name>
+      <title>New Service ticket</title>
+      <onActionProcess>%aditoprj%/entity/Offer_entity/entityfields/newsupportticket/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:TICKET</iconId>
+    </entityActionField>
     <entityActionField>
       <name>openAdminView</name>
       <title>Open admin view</title>
@@ -1155,44 +1193,6 @@
       <iconId>VAADIN:CURLY_BRACKETS</iconId>
       <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/openadminview/stateProcess.js</stateProcess>
     </entityActionField>
-    <entityActionField>
-      <name>newSupportTicket</name>
-      <title>New Service ticket</title>
-      <onActionProcess>%aditoprj%/entity/Offer_entity/entityfields/newsupportticket/onActionProcess.js</onActionProcess>
-      <iconId>VAADIN:TICKET</iconId>
-    </entityActionField>
-    <entityConsumer>
-      <name>KeywordProductGroup</name>
-      <dependency>
-        <name>dependency</name>
-        <entityName>KeywordEntry_entity</entityName>
-        <fieldName>SpecificContainerKeywords</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>ContainerName_param</name>
-          <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/keywordproductgroup/children/containername_param/valueProcess.js</valueProcess>
-        </entityParameter>
-      </children>
-    </entityConsumer>
-    <entityField>
-      <name>DISCOUNT_NET</name>
-      <contentType>NUMBER</contentType>
-      <outputFormat>#,##0.00</outputFormat>
-      <inputFormat>#,##0.00</inputFormat>
-      <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/discount_net/stateProcess.js</stateProcess>
-      <titleProcess>%aditoprj%/entity/Offer_entity/entityfields/discount_net/titleProcess.js</titleProcess>
-      <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/discount_net/displayValueProcess.js</displayValueProcess>
-    </entityField>
-    <entityField>
-      <name>GROSS</name>
-      <title>Total gross</title>
-      <contentType>NUMBER</contentType>
-      <outputFormat>#,##0.00</outputFormat>
-      <inputFormat>#,##0.00</inputFormat>
-      <state>READONLY</state>
-      <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/gross/displayValueProcess.js</displayValueProcess>
-    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/Offeritem_entity/afterSave.js b/entity/Offeritem_entity/afterSave.js
index 0fc435de6530b8e80d7e205b331ace1191a336ac..2041fcb06ebb03186268f931bc460f18ab937d96 100644
--- a/entity/Offeritem_entity/afterSave.js
+++ b/entity/Offeritem_entity/afterSave.js
@@ -2,6 +2,7 @@ import("system.neon");
 import("system.entities");
 import("system.vars");
 import("Sql_lib");
+import("Offer_lib");
 
 if(vars.get("$local.recordstate") == neon.OPERATINGSTATE_EDIT)
 {
diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod
index 1a54cbd02b1c4159ec649c07eb897079c75f6cc2..2a7526b67352219e7289f9df4805b8a891596cb9 100644
--- a/entity/Organisation_entity/Organisation_entity.aod
+++ b/entity/Organisation_entity/Organisation_entity.aod
@@ -17,27 +17,6 @@
   <titlePlural>Companies</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
-    <entityActionGroup>
-      <name>observeActionGroup</name>
-      <children>
-        <entityActionField>
-          <name>observe</name>
-          <title>Observe</title>
-          <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js</onActionProcess>
-          <isObjectAction v="true" />
-          <iconId>VAADIN:EYE</iconId>
-          <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/observeactiongroup/children/observe/stateProcess.js</stateProcess>
-          <titleProcess>%aditoprj%/entity/Organisation_entity/entityfields/observeactiongroup/children/observe/titleProcess.js</titleProcess>
-        </entityActionField>
-        <entityActionField>
-          <name>cancelObservation</name>
-          <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js</onActionProcess>
-          <iconId>VAADIN:EYE_SLASH</iconId>
-          <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js</stateProcess>
-          <titleProcess>%aditoprj%/entity/Organisation_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js</titleProcess>
-        </entityActionField>
-      </children>
-    </entityActionGroup>
     <entityField>
       <name>CUSTOMERCODE</name>
       <title>Customercode</title>
@@ -1077,6 +1056,221 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityConsumer>
+      <name>DuplicatesOrganisation</name>
+      <selectionMode>MULTI</selectionMode>
+      <selectionModeProcess>%aditoprj%/entity/Organisation_entity/entityfields/duplicatesorganisation/selectionModeProcess.js</selectionModeProcess>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Duplicate_entity</entityName>
+        <fieldName>Duplicates</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>DuplicateObject_param</name>
+          <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/duplicatesorganisation/children/duplicateobject_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Plannings</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Planning_entity</entityName>
+        <fieldName>Plannings</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContactId_param</name>
+          <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/plannings/children/contactid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Turnovers</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Turnover_entity</entityName>
+        <fieldName>DynamicTurnover</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContactIds_param</name>
+          <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/turnovers/children/contactids_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>conversionrates</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>SalesprojectConversionRate_entity</entityName>
+        <fieldName>#PROVIDER</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityConsumer>
+      <name>ContactCommunicationSettings</name>
+      <refreshParent v="true" />
+      <dependency>
+        <name>dependency</name>
+        <entityName>CommunicationSettings_entity</entityName>
+        <fieldName>SettingsForContact</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContactId_param</name>
+          <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/contactcommunicationsettings/children/contactid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityParameter>
+      <name>SearchSyncCondition_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityConsumer>
+      <name>Campaigns</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Campaign_entity</entityName>
+        <fieldName>Campaigns</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Bulkmails</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>BulkMail_entity</entityName>
+        <fieldName>#PROVIDER</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityConsumer>
+      <name>CommunicationSettingStatusKeyword</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContainerName_param</name>
+          <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/communicationsettingstatuskeyword/children/containername_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>ChecklistEntryValues</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>ChecklistEntryValue_entity</entityName>
+        <fieldName>ChecklistEntryValues</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ObjectRowId_param</name>
+          <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/checklistentryvalues/children/objectrowid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectType_param</name>
+          <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/checklistentryvalues/children/objecttype_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>ChecklistIds_param</name>
+          <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/checklistentryvalues/children/checklistids_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>Presentationmode_param</name>
+          <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/checklistentryvalues/children/presentationmode_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityParameter>
+      <name>IgnoreOrderBy_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityProvider>
+      <name>OrganisationForQuickEntry</name>
+      <lookupIdfield>ORGANISATIONID</lookupIdfield>
+      <documentation>%aditoprj%/entity/Organisation_entity/entityfields/organisationforquickentry/documentation.adoc</documentation>
+      <children>
+        <entityParameter>
+          <name>WithPrivate_param</name>
+        </entityParameter>
+        <entityParameter>
+          <name>AttributeId_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>AttributeKeyId_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>ExcludedContactIds_param</name>
+        </entityParameter>
+        <entityParameter>
+          <name>ExcludeOrganisationsByPersonId</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>MapViewAdditionalFeatures_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>MapViewCenterLat_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>MapViewCenterLon_param</name>
+          <expose v="false" />
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityConsumer>
+      <name>AllTopics</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>TopicTree_entity</entityName>
+        <fieldName>#PROVIDER</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>Expanded_param</name>
+          <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/alltopics/children/expanded_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>OnlyActive_param</name>
+          <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/alltopics/children/onlyactive_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityParameter>
+      <name>IsQuickEntry_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityParameter>
+      <name>OnlyNotInCampaignId_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityActionGroup>
+      <name>observeActionGroup</name>
+      <children>
+        <entityActionField>
+          <name>observe</name>
+          <title>Observe</title>
+          <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js</onActionProcess>
+          <isObjectAction v="true" />
+          <iconId>VAADIN:EYE</iconId>
+          <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/observeactiongroup/children/observe/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Organisation_entity/entityfields/observeactiongroup/children/observe/titleProcess.js</titleProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>cancelObservation</name>
+          <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:EYE_SLASH</iconId>
+          <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Organisation_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js</titleProcess>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
     <entityActionField>
       <name>openEditDefaultsView</name>
       <documentation>%aditoprj%/entity/Organisation_entity/entityfields/openeditdefaultsview/documentation.adoc</documentation>
@@ -1272,6 +1466,12 @@
         </entityActionField>
       </children>
     </entityActionGroup>
+    <entityActionField>
+      <name>openClassificationOverView</name>
+      <title>Show Classification</title>
+      <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/openclassificationoverview/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:LIST_OL</iconId>
+    </entityActionField>
     <entityActionField>
       <name>openAdminView</name>
       <title>Open admin view</title>
@@ -1279,206 +1479,6 @@
       <iconId>VAADIN:CURLY_BRACKETS</iconId>
       <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/openadminview/stateProcess.js</stateProcess>
     </entityActionField>
-    <entityConsumer>
-      <name>DuplicatesOrganisation</name>
-      <selectionMode>MULTI</selectionMode>
-      <selectionModeProcess>%aditoprj%/entity/Organisation_entity/entityfields/duplicatesorganisation/selectionModeProcess.js</selectionModeProcess>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Duplicate_entity</entityName>
-        <fieldName>Duplicates</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>DuplicateObject_param</name>
-          <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/duplicatesorganisation/children/duplicateobject_param/valueProcess.js</valueProcess>
-        </entityParameter>
-      </children>
-    </entityConsumer>
-    <entityConsumer>
-      <name>Plannings</name>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Planning_entity</entityName>
-        <fieldName>Plannings</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>ContactId_param</name>
-          <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/plannings/children/contactid_param/valueProcess.js</valueProcess>
-        </entityParameter>
-      </children>
-    </entityConsumer>
-    <entityConsumer>
-      <name>Turnovers</name>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Turnover_entity</entityName>
-        <fieldName>DynamicTurnover</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>ContactIds_param</name>
-          <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/turnovers/children/contactids_param/valueProcess.js</valueProcess>
-        </entityParameter>
-      </children>
-    </entityConsumer>
-    <entityConsumer>
-      <name>conversionrates</name>
-      <dependency>
-        <name>dependency</name>
-        <entityName>SalesprojectConversionRate_entity</entityName>
-        <fieldName>#PROVIDER</fieldName>
-      </dependency>
-    </entityConsumer>
-    <entityConsumer>
-      <name>ContactCommunicationSettings</name>
-      <refreshParent v="true" />
-      <dependency>
-        <name>dependency</name>
-        <entityName>CommunicationSettings_entity</entityName>
-        <fieldName>SettingsForContact</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>ContactId_param</name>
-          <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/contactcommunicationsettings/children/contactid_param/valueProcess.js</valueProcess>
-        </entityParameter>
-      </children>
-    </entityConsumer>
-    <entityParameter>
-      <name>SearchSyncCondition_param</name>
-      <expose v="true" />
-    </entityParameter>
-    <entityConsumer>
-      <name>Campaigns</name>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Campaign_entity</entityName>
-        <fieldName>Campaigns</fieldName>
-      </dependency>
-    </entityConsumer>
-    <entityConsumer>
-      <name>Bulkmails</name>
-      <dependency>
-        <name>dependency</name>
-        <entityName>BulkMail_entity</entityName>
-        <fieldName>#PROVIDER</fieldName>
-      </dependency>
-    </entityConsumer>
-    <entityConsumer>
-      <name>CommunicationSettingStatusKeyword</name>
-      <dependency>
-        <name>dependency</name>
-        <entityName>KeywordEntry_entity</entityName>
-        <fieldName>SpecificContainerKeywords</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>ContainerName_param</name>
-          <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/communicationsettingstatuskeyword/children/containername_param/valueProcess.js</valueProcess>
-        </entityParameter>
-      </children>
-    </entityConsumer>
-    <entityActionField>
-      <name>openClassificationOverView</name>
-      <title>Show Classification</title>
-      <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/openclassificationoverview/onActionProcess.js</onActionProcess>
-      <iconId>VAADIN:LIST_OL</iconId>
-    </entityActionField>
-    <entityConsumer>
-      <name>ChecklistEntryValues</name>
-      <dependency>
-        <name>dependency</name>
-        <entityName>ChecklistEntryValue_entity</entityName>
-        <fieldName>ChecklistEntryValues</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>ObjectRowId_param</name>
-          <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/checklistentryvalues/children/objectrowid_param/valueProcess.js</valueProcess>
-        </entityParameter>
-        <entityParameter>
-          <name>ObjectType_param</name>
-          <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/checklistentryvalues/children/objecttype_param/valueProcess.js</valueProcess>
-        </entityParameter>
-        <entityParameter>
-          <name>ChecklistIds_param</name>
-          <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/checklistentryvalues/children/checklistids_param/valueProcess.js</valueProcess>
-        </entityParameter>
-        <entityParameter>
-          <name>Presentationmode_param</name>
-          <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/checklistentryvalues/children/presentationmode_param/valueProcess.js</valueProcess>
-        </entityParameter>
-      </children>
-    </entityConsumer>
-    <entityParameter>
-      <name>IgnoreOrderBy_param</name>
-      <expose v="true" />
-    </entityParameter>
-    <entityProvider>
-      <name>OrganisationForQuickEntry</name>
-      <lookupIdfield>ORGANISATIONID</lookupIdfield>
-      <documentation>%aditoprj%/entity/Organisation_entity/entityfields/organisationforquickentry/documentation.adoc</documentation>
-      <children>
-        <entityParameter>
-          <name>WithPrivate_param</name>
-        </entityParameter>
-        <entityParameter>
-          <name>AttributeId_param</name>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>AttributeKeyId_param</name>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>ExcludedContactIds_param</name>
-        </entityParameter>
-        <entityParameter>
-          <name>ExcludeOrganisationsByPersonId</name>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>MapViewAdditionalFeatures_param</name>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>MapViewCenterLat_param</name>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>MapViewCenterLon_param</name>
-          <expose v="false" />
-        </entityParameter>
-      </children>
-    </entityProvider>
-    <entityConsumer>
-      <name>AllTopics</name>
-      <dependency>
-        <name>dependency</name>
-        <entityName>TopicTree_entity</entityName>
-        <fieldName>#PROVIDER</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>Expanded_param</name>
-          <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/alltopics/children/expanded_param/valueProcess.js</valueProcess>
-        </entityParameter>
-        <entityParameter>
-          <name>OnlyActive_param</name>
-          <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/alltopics/children/onlyactive_param/valueProcess.js</valueProcess>
-        </entityParameter>
-      </children>
-    </entityConsumer>
-    <entityParameter>
-      <name>IsQuickEntry_param</name>
-      <expose v="true" />
-    </entityParameter>
-    <entityParameter>
-      <name>OnlyNotInCampaignId_param</name>
-      <expose v="true" />
-    </entityParameter>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod
index 482f939243f6babf1f4767cefb2e68a17b2cf774..d888f5fb1dc08eda16b52a61442c14863215b23d 100644
--- a/entity/Person_entity/Person_entity.aod
+++ b/entity/Person_entity/Person_entity.aod
@@ -23,27 +23,6 @@
   <titlePlural>Contacts</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
-    <entityActionGroup>
-      <name>observeActionGroup</name>
-      <children>
-        <entityActionField>
-          <name>observe</name>
-          <title>Observe</title>
-          <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js</onActionProcess>
-          <isObjectAction v="true" />
-          <iconId>VAADIN:EYE</iconId>
-          <stateProcess>%aditoprj%/entity/Person_entity/entityfields/observeactiongroup/children/observe/stateProcess.js</stateProcess>
-          <titleProcess>%aditoprj%/entity/Person_entity/entityfields/observeactiongroup/children/observe/titleProcess.js</titleProcess>
-        </entityActionField>
-        <entityActionField>
-          <name>cancelObservation</name>
-          <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js</onActionProcess>
-          <iconId>VAADIN:EYE_SLASH</iconId>
-          <stateProcess>%aditoprj%/entity/Person_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js</stateProcess>
-          <titleProcess>%aditoprj%/entity/Person_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js</titleProcess>
-        </entityActionField>
-      </children>
-    </entityActionGroup>
     <entityField>
       <name>DATEOFBIRTH</name>
       <title>Date of birth</title>
@@ -1046,6 +1025,187 @@
       <inputFormat>dd.MM.</inputFormat>
       <state>READONLY</state>
     </entityField>
+    <entityConsumer>
+      <name>DSGVODeleteFlags</name>
+      <stateProcess>%aditoprj%/entity/Person_entity/entityfields/dsgvodeleteflags/stateProcess.js</stateProcess>
+      <dependency>
+        <name>dependency</name>
+        <entityName>DSGVODeleteFlag_entity</entityName>
+        <fieldName>DSGVODeleteFlags</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContactId_param</name>
+          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/dsgvodeleteflags/children/contactid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Campaigns</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Campaign_entity</entityName>
+        <fieldName>Campaigns</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityParameter>
+      <name>FilterPreSet_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityConsumer>
+      <name>DuplicatesPerson</name>
+      <selectionMode>MULTI</selectionMode>
+      <selectionModeProcess>%aditoprj%/entity/Person_entity/entityfields/duplicatesperson/selectionModeProcess.js</selectionModeProcess>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Duplicate_entity</entityName>
+        <fieldName>Duplicates</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>DuplicateObject_param</name>
+          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/duplicatesperson/children/duplicateobject_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>ContactCommunicationSettings</name>
+      <refreshParent v="true" />
+      <dependency>
+        <name>dependency</name>
+        <entityName>CommunicationSettings_entity</entityName>
+        <fieldName>SettingsForContact</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContactId_param</name>
+          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/contactcommunicationsettings/children/contactid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>InterestLinks</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>InterestLink_entity</entityName>
+        <fieldName>InterestsForContact</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContactId_param</name>
+          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/interestlinks/children/contactid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityParameter>
+      <name>SearchSyncCondition_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityConsumer>
+      <name>Interests</name>
+      <description>Used for the filterExtension "InterestLink_filter"</description>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Interest_entity</entityName>
+        <fieldName>#PROVIDER</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Bulkmails</name>
+      <description>Used for the filterExtension "BulkmailReceived_filter"</description>
+      <dependency>
+        <name>dependency</name>
+        <entityName>BulkMail_entity</entityName>
+        <fieldName>#PROVIDER</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityConsumer>
+      <name>CommunicationSettingStatusKeyword</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContainerName_param</name>
+          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/communicationsettingstatuskeyword/children/containername_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Salesprojects</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Salesproject_entity</entityName>
+        <fieldName>Salesprojects</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityConsumer>
+      <name>AllTopics</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>TopicTree_entity</entityName>
+        <fieldName>#PROVIDER</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>Expanded_param</name>
+          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/alltopics/children/expanded_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Servicetickets</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>SupportTicket_entity</entityName>
+        <fieldName>SupportTickets</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ReturnEmpty_param</name>
+          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/servicetickets/children/returnempty_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>TaskRequestorContactId_param</name>
+          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/servicetickets/children/taskrequestorcontactid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityField>
+      <name>LETTERSALUTATION</name>
+      <title>Lettersalutation</title>
+    </entityField>
+    <entityField>
+      <name>contenttitle</name>
+      <valueProcess>%aditoprj%/entity/Person_entity/entityfields/contenttitle/valueProcess.js</valueProcess>
+    </entityField>
+    <entityParameter>
+      <name>OnlyNotInCampaignId_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityActionGroup>
+      <name>observeActionGroup</name>
+      <children>
+        <entityActionField>
+          <name>observe</name>
+          <title>Observe</title>
+          <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js</onActionProcess>
+          <isObjectAction v="true" />
+          <iconId>VAADIN:EYE</iconId>
+          <stateProcess>%aditoprj%/entity/Person_entity/entityfields/observeactiongroup/children/observe/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Person_entity/entityfields/observeactiongroup/children/observe/titleProcess.js</titleProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>cancelObservation</name>
+          <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:EYE_SLASH</iconId>
+          <stateProcess>%aditoprj%/entity/Person_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Person_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js</titleProcess>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
     <entityActionField>
       <name>openEditDefaultsView</name>
       <title>Edit defaults</title>
@@ -1216,6 +1376,12 @@
       <iconId>NEON:TRASH</iconId>
       <stateProcess>%aditoprj%/entity/Person_entity/entityfields/deletefunction/stateProcess.js</stateProcess>
     </entityActionField>
+    <entityActionField>
+      <name>newSupportTicket</name>
+      <title>New Service ticket</title>
+      <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/newsupportticket/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:TICKET</iconId>
+    </entityActionField>
     <entityActionField>
       <name>openAdminView</name>
       <title>Open admin view</title>
@@ -1223,172 +1389,6 @@
       <iconId>VAADIN:CURLY_BRACKETS</iconId>
       <stateProcess>%aditoprj%/entity/Person_entity/entityfields/openadminview/stateProcess.js</stateProcess>
     </entityActionField>
-    <entityConsumer>
-      <name>DSGVODeleteFlags</name>
-      <stateProcess>%aditoprj%/entity/Person_entity/entityfields/dsgvodeleteflags/stateProcess.js</stateProcess>
-      <dependency>
-        <name>dependency</name>
-        <entityName>DSGVODeleteFlag_entity</entityName>
-        <fieldName>DSGVODeleteFlags</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>ContactId_param</name>
-          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/dsgvodeleteflags/children/contactid_param/valueProcess.js</valueProcess>
-        </entityParameter>
-      </children>
-    </entityConsumer>
-    <entityConsumer>
-      <name>Campaigns</name>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Campaign_entity</entityName>
-        <fieldName>Campaigns</fieldName>
-      </dependency>
-    </entityConsumer>
-    <entityParameter>
-      <name>FilterPreSet_param</name>
-      <expose v="true" />
-    </entityParameter>
-    <entityConsumer>
-      <name>DuplicatesPerson</name>
-      <selectionMode>MULTI</selectionMode>
-      <selectionModeProcess>%aditoprj%/entity/Person_entity/entityfields/duplicatesperson/selectionModeProcess.js</selectionModeProcess>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Duplicate_entity</entityName>
-        <fieldName>Duplicates</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>DuplicateObject_param</name>
-          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/duplicatesperson/children/duplicateobject_param/valueProcess.js</valueProcess>
-        </entityParameter>
-      </children>
-    </entityConsumer>
-    <entityConsumer>
-      <name>ContactCommunicationSettings</name>
-      <refreshParent v="true" />
-      <dependency>
-        <name>dependency</name>
-        <entityName>CommunicationSettings_entity</entityName>
-        <fieldName>SettingsForContact</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>ContactId_param</name>
-          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/contactcommunicationsettings/children/contactid_param/valueProcess.js</valueProcess>
-        </entityParameter>
-      </children>
-    </entityConsumer>
-    <entityConsumer>
-      <name>InterestLinks</name>
-      <dependency>
-        <name>dependency</name>
-        <entityName>InterestLink_entity</entityName>
-        <fieldName>InterestsForContact</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>ContactId_param</name>
-          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/interestlinks/children/contactid_param/valueProcess.js</valueProcess>
-        </entityParameter>
-      </children>
-    </entityConsumer>
-    <entityParameter>
-      <name>SearchSyncCondition_param</name>
-      <expose v="true" />
-    </entityParameter>
-    <entityConsumer>
-      <name>Interests</name>
-      <description>Used for the filterExtension "InterestLink_filter"</description>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Interest_entity</entityName>
-        <fieldName>#PROVIDER</fieldName>
-      </dependency>
-    </entityConsumer>
-    <entityConsumer>
-      <name>Bulkmails</name>
-      <description>Used for the filterExtension "BulkmailReceived_filter"</description>
-      <dependency>
-        <name>dependency</name>
-        <entityName>BulkMail_entity</entityName>
-        <fieldName>#PROVIDER</fieldName>
-      </dependency>
-    </entityConsumer>
-    <entityConsumer>
-      <name>CommunicationSettingStatusKeyword</name>
-      <dependency>
-        <name>dependency</name>
-        <entityName>KeywordEntry_entity</entityName>
-        <fieldName>SpecificContainerKeywords</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>ContainerName_param</name>
-          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/communicationsettingstatuskeyword/children/containername_param/valueProcess.js</valueProcess>
-        </entityParameter>
-      </children>
-    </entityConsumer>
-    <entityConsumer>
-      <name>Salesprojects</name>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Salesproject_entity</entityName>
-        <fieldName>Salesprojects</fieldName>
-      </dependency>
-    </entityConsumer>
-    <entityConsumer>
-      <name>AllTopics</name>
-      <dependency>
-        <name>dependency</name>
-        <entityName>TopicTree_entity</entityName>
-        <fieldName>#PROVIDER</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>Expanded_param</name>
-          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/alltopics/children/expanded_param/valueProcess.js</valueProcess>
-        </entityParameter>
-      </children>
-    </entityConsumer>
-    <entityActionField>
-      <name>newSupportTicket</name>
-      <title>New Service ticket</title>
-      <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/newsupportticket/onActionProcess.js</onActionProcess>
-      <iconId>VAADIN:TICKET</iconId>
-    </entityActionField>
-    <entityConsumer>
-      <name>Servicetickets</name>
-      <dependency>
-        <name>dependency</name>
-        <entityName>SupportTicket_entity</entityName>
-        <fieldName>SupportTickets</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>ReturnEmpty_param</name>
-          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/servicetickets/children/returnempty_param/valueProcess.js</valueProcess>
-        </entityParameter>
-        <entityParameter>
-          <name>TaskRequestorContactId_param</name>
-          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/servicetickets/children/taskrequestorcontactid_param/valueProcess.js</valueProcess>
-        </entityParameter>
-      </children>
-    </entityConsumer>
-    <entityField>
-      <name>LETTERSALUTATION</name>
-      <title>Lettersalutation</title>
-    </entityField>
-    <entityField>
-      <name>contenttitle</name>
-      <valueProcess>%aditoprj%/entity/Person_entity/entityfields/contenttitle/valueProcess.js</valueProcess>
-    </entityField>
-    <entityParameter>
-      <name>OnlyNotInCampaignId_param</name>
-      <expose v="true" />
-    </entityParameter>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/Person_entity/recordcontainers/db/filterextensions/communicationsettings_filter/filterConditionProcess.js b/entity/Person_entity/recordcontainers/db/filterextensions/communicationsettings_filter/filterConditionProcess.js
index b45b894a148f0b32658a19efcd0c383f070059d3..64e7cabe7f6ee78726ba88dd7b7940288ccb8ba8 100644
--- a/entity/Person_entity/recordcontainers/db/filterextensions/communicationsettings_filter/filterConditionProcess.js
+++ b/entity/Person_entity/recordcontainers/db/filterextensions/communicationsettings_filter/filterConditionProcess.js
@@ -1,3 +1,4 @@
+import("KeywordRegistry_basic");
 import("Sql_lib");
 import("system.result");
 import("system.vars");
@@ -5,8 +6,17 @@ import("MarketingCondition_lib");
 
 var mediumId = vars.get("$local.name");
 mediumId = mediumId.slice(mediumId.lastIndexOf(".") + 1);
-var condition = new CommunicationSettingsCondition()
+var condition;
+if (mediumId != $KeywordRegistry.communicationMediumCampaign$letter())
+{
+     condition = new CommunicationSettingsCondition()
     .medium(mediumId);
+}
+else 
+{
+    condition = new CommunicationSettingsCondition()
+    .address();
+}
     
 var operator = vars.get("$local.comparison");
 if (operator == "EQUAL" || operator == "NOT_EQUAL")
diff --git a/entity/Person_entity/recordcontainers/db/filterextensions/communicationsettings_filter/filterFieldsProcess.js b/entity/Person_entity/recordcontainers/db/filterextensions/communicationsettings_filter/filterFieldsProcess.js
index 3aeb275fdc4ce59e8e84360cdb889c8ebabc0a3c..49963ec0c78e246c75d4bdb9e1b4b09a07fac780 100644
--- a/entity/Person_entity/recordcontainers/db/filterextensions/communicationsettings_filter/filterFieldsProcess.js
+++ b/entity/Person_entity/recordcontainers/db/filterextensions/communicationsettings_filter/filterFieldsProcess.js
@@ -7,19 +7,16 @@ var mediums = KeywordUtils.getEntryArray($KeywordRegistry.communicationMediumCam
 var filterFields = [];
 mediums.forEach(function ([mediumId, mediumTitle])
 {
-    if (mediumId != $KeywordRegistry.communicationMediumCampaign$letter())
-    {
-        filterFields.push({
-            name: mediumId,
-            title: translate.withArguments("Communication Setting: %0", [mediumTitle]),
-            contentType: "TEXT",
-            hasDropDownValues: false,
-            isGroupable: false,
-            groupedRecordField: null,
-            titleRecordField: null,
-            consumer: "CommunicationSettingStatusKeyword"
-        });
-    }
+    filterFields.push({
+        name: mediumId,
+        title: translate.withArguments("Communication Setting: %0", [mediumTitle]),
+        contentType: "TEXT",
+        hasDropDownValues: false,
+        isGroupable: false,
+        groupedRecordField: null,
+        titleRecordField: null,
+        consumer: "CommunicationSettingStatusKeyword"
+    });    
 });
 
 result.string(JSON.stringify(filterFields));
\ No newline at end of file
diff --git a/entity/Prod2prod_entity/Prod2prod_entity.aod b/entity/Prod2prod_entity/Prod2prod_entity.aod
index ead47cfc2b7ce1a9f304350248ad64201065a2a0..b475bac9dd4e5570cee7881d426849d6c88d0217 100644
--- a/entity/Prod2prod_entity/Prod2prod_entity.aod
+++ b/entity/Prod2prod_entity/Prod2prod_entity.aod
@@ -4,6 +4,7 @@
   <title>Parts list</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Prod2prod_entity/documentation.adoc</documentation>
+  <afterSave>%aditoprj%/entity/Prod2prod_entity/afterSave.js</afterSave>
   <titlePlural>Parts list</titlePlural>
   <recordContainer>jDito</recordContainer>
   <entityFields>
@@ -39,6 +40,10 @@
       <consumer>Products</consumer>
       <mandatory v="true" />
       <onValueChange>%aditoprj%/entity/Prod2prod_entity/entityfields/source_id/onValueChange.js</onValueChange>
+      <onValueChangeTypes>
+        <element>MASK</element>
+        <element>PROCESS_SETVALUE</element>
+      </onValueChangeTypes>
     </entityField>
     <entityField>
       <name>TAKEPRICE</name>
diff --git a/entity/Prod2prod_entity/afterSave.js b/entity/Prod2prod_entity/afterSave.js
new file mode 100644
index 0000000000000000000000000000000000000000..63e2dbbb087479724e6a7b79a912391d6f875276
--- /dev/null
+++ b/entity/Prod2prod_entity/afterSave.js
@@ -0,0 +1,16 @@
+import("system.neon");
+import("system.vars");
+import("system.question");
+import("system.translate");
+import("Sql_lib");
+
+if(vars.get("$local.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    var sql = new SqlBuilder().selectCount().from("PRODUCTPRICE")
+        .where("PRODUCTPRICE.PRODUCT_ID", vars.get("$field.DEST_ID"));
+    if(sql.cell() == 0)
+    {
+        var message = translate.text("Please add the price of the product");
+        question.showMessage(message, question.WARNING, translate.text("Warning"));
+    }
+}
diff --git a/entity/Prod2prod_entity/entityfields/source_id/onValueChange.js b/entity/Prod2prod_entity/entityfields/source_id/onValueChange.js
index 6b7340b99f92da214cf9f70f511e441c2d15ec55..c9db8f5da2ee3395ae89925242b80f5860b479c4 100644
--- a/entity/Prod2prod_entity/entityfields/source_id/onValueChange.js
+++ b/entity/Prod2prod_entity/entityfields/source_id/onValueChange.js
@@ -166,17 +166,20 @@ function _calcPrices()
 
     }
 
-    for (i = 0; i < productAndChildProducts[null].length; i++)
+    if(productAndChildProducts[null])
     {
-        var currentProdId = productAndChildProducts[null][i];
-
-        if(Utils.isNotNullOrEmptyString(productPrices[currentProdId]["PP"]))
-        {
-            buyPrice = eMath.addDec(buyPrice, productPrices[currentProdId]["PP"]);
-        }
-        if(Utils.isNotNullOrEmptyString(productPrices[currentProdId]["SP"]))
+        for(i = 0; i < productAndChildProducts[null].length; i++)
         {
-            sellPrice = eMath.addDec(sellPrice, productPrices[currentProdId]["SP"]);
+            var currentProdId = productAndChildProducts[null][i];
+
+            if(Utils.isNotNullOrEmptyString(productPrices[currentProdId]["PP"]))
+            {
+                buyPrice = eMath.addDec(buyPrice, productPrices[currentProdId]["PP"]);
+            }
+            if(Utils.isNotNullOrEmptyString(productPrices[currentProdId]["SP"]))
+            {
+                sellPrice = eMath.addDec(sellPrice, productPrices[currentProdId]["SP"]);
+            }
         }
     }
     buyPrice =(
diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod
index 08c5f993e915b02599172230abbf143418f26843..5975340055c762f4085f0ddd8e070b380072b4d4 100644
--- a/entity/Salesproject_entity/Salesproject_entity.aod
+++ b/entity/Salesproject_entity/Salesproject_entity.aod
@@ -749,81 +749,6 @@
         </entityParameter>
       </children>
     </entityProvider>
-    <entityActionGroup>
-      <name>observeActionGroup</name>
-      <children>
-        <entityActionField>
-          <name>observe</name>
-          <title>Observe</title>
-          <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js</onActionProcess>
-          <isObjectAction v="true" />
-          <iconId>VAADIN:EYE</iconId>
-          <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/observe/stateProcess.js</stateProcess>
-          <titleProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/observe/titleProcess.js</titleProcess>
-        </entityActionField>
-        <entityActionField>
-          <name>cancelObservation</name>
-          <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js</onActionProcess>
-          <iconId>VAADIN:EYE_SLASH</iconId>
-          <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js</stateProcess>
-          <titleProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js</titleProcess>
-        </entityActionField>
-        <entityActionField>
-          <name>export</name>
-          <title>Export</title>
-          <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/export/onActionProcess.js</onActionProcess>
-          <isMenuAction v="true" />
-          <isObjectAction v="false" />
-          <iconId>NEON:EXPORT</iconId>
-          <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/export/stateProcess.js</stateProcess>
-          <tooltip>Export fields of this table</tooltip>
-          <tooltipProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/export/tooltipProcess.js</tooltipProcess>
-        </entityActionField>
-      </children>
-    </entityActionGroup>
-    <entityActionField>
-      <name>newOffer</name>
-      <documentation>%aditoprj%/entity/Salesproject_entity/entityfields/newoffer/documentation.adoc</documentation>
-      <title>New offer</title>
-      <description>Opens the Offer context in NEW-Mode and fills salesproject and contact.</description>
-      <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/newoffer/onActionProcess.js</onActionProcess>
-      <iconId>VAADIN:CART</iconId>
-    </entityActionField>
-    <entityActionField>
-      <name>newTimetracking</name>
-      <title>New time tracking</title>
-      <description>Opens the time tracking context in new-mode for the selected salesproject</description>
-      <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/newtimetracking/onActionProcess.js</onActionProcess>
-      <iconId>VAADIN:STOPWATCH</iconId>
-    </entityActionField>
-    <entityActionField>
-      <name>newActivity</name>
-      <title>New activity</title>
-      <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/newactivity/onActionProcess.js</onActionProcess>
-      <iconId>VAADIN:HOURGLASS_END</iconId>
-      <tooltip>New activity</tooltip>
-      <tooltipProcess>%aditoprj%/entity/Salesproject_entity/entityfields/newactivity/tooltipProcess.js</tooltipProcess>
-    </entityActionField>
-    <entityActionField>
-      <name>newTask</name>
-      <title>New task</title>
-      <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/newtask/onActionProcess.js</onActionProcess>
-      <iconId>VAADIN:TASKS</iconId>
-    </entityActionField>
-    <entityActionField>
-      <name>startWorkflow</name>
-      <title>Start workflow</title>
-      <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/startworkflow/onActionProcess.js</onActionProcess>
-      <iconId>VAADIN:PLAY</iconId>
-      <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/startworkflow/stateProcess.js</stateProcess>
-    </entityActionField>
-    <entityActionField>
-      <name>openAdminView</name>
-      <title>Open admin view</title>
-      <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/openadminview/onActionProcess.js</onActionProcess>
-      <iconId>VAADIN:CURLY_BRACKETS</iconId>
-      <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/openadminview/stateProcess.js</stateProcess>
-    </entityActionField>
     <entityAggregateField>
       <name>PROBABILITY_aggregate</name>
       <parentField>PROBABILITY</parentField>
@@ -862,12 +787,6 @@
         </entityParameter>
       </children>
     </entityConsumer>
-    <entityActionField>
-      <name>openClassificationOverView</name>
-      <title>Show Classification</title>
-      <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/openclassificationoverview/onActionProcess.js</onActionProcess>
-      <iconId>VAADIN:LIST_OL</iconId>
-    </entityActionField>
     <entityParameter>
       <name>IgnoreChecklists_param</name>
       <expose v="true" />
@@ -910,6 +829,87 @@
         <fieldName>Contacts</fieldName>
       </dependency>
     </entityConsumer>
+    <entityActionGroup>
+      <name>observeActionGroup</name>
+      <children>
+        <entityActionField>
+          <name>observe</name>
+          <title>Observe</title>
+          <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js</onActionProcess>
+          <isObjectAction v="true" />
+          <iconId>VAADIN:EYE</iconId>
+          <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/observe/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/observe/titleProcess.js</titleProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>cancelObservation</name>
+          <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:EYE_SLASH</iconId>
+          <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js</titleProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>export</name>
+          <title>Export</title>
+          <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/export/onActionProcess.js</onActionProcess>
+          <isMenuAction v="true" />
+          <isObjectAction v="false" />
+          <iconId>NEON:EXPORT</iconId>
+          <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/export/stateProcess.js</stateProcess>
+          <tooltip>Export fields of this table</tooltip>
+          <tooltipProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/export/tooltipProcess.js</tooltipProcess>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
+    <entityActionField>
+      <name>newOffer</name>
+      <documentation>%aditoprj%/entity/Salesproject_entity/entityfields/newoffer/documentation.adoc</documentation>
+      <title>New offer</title>
+      <description>Opens the Offer context in NEW-Mode and fills salesproject and contact.</description>
+      <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/newoffer/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:CART</iconId>
+    </entityActionField>
+    <entityActionField>
+      <name>newTimetracking</name>
+      <title>New time tracking</title>
+      <description>Opens the time tracking context in new-mode for the selected salesproject</description>
+      <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/newtimetracking/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:STOPWATCH</iconId>
+    </entityActionField>
+    <entityActionField>
+      <name>newActivity</name>
+      <title>New activity</title>
+      <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/newactivity/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:HOURGLASS_END</iconId>
+      <tooltip>New activity</tooltip>
+      <tooltipProcess>%aditoprj%/entity/Salesproject_entity/entityfields/newactivity/tooltipProcess.js</tooltipProcess>
+    </entityActionField>
+    <entityActionField>
+      <name>newTask</name>
+      <title>New task</title>
+      <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/newtask/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:TASKS</iconId>
+    </entityActionField>
+    <entityActionField>
+      <name>startWorkflow</name>
+      <title>Start workflow</title>
+      <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/startworkflow/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:PLAY</iconId>
+      <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/startworkflow/stateProcess.js</stateProcess>
+    </entityActionField>
+    <entityActionField>
+      <name>openClassificationOverView</name>
+      <title>Show Classification</title>
+      <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/openclassificationoverview/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:LIST_OL</iconId>
+    </entityActionField>
+    <entityActionField>
+      <name>openAdminView</name>
+      <title>Open admin view</title>
+      <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/openadminview/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:CURLY_BRACKETS</iconId>
+      <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/openadminview/stateProcess.js</stateProcess>
+    </entityActionField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/SupportTicketTemplate_entity/entityfields/openadminview/onActionProcess.js b/entity/SupportTicketTemplate_entity/entityfields/openadminview/onActionProcess.js
index c9a41d3781d124ddcda6ff7c65154d81dfc182d4..1c7c3a609b4fb862a1dad85fb3efa779aac91f80 100644
--- a/entity/SupportTicketTemplate_entity/entityfields/openadminview/onActionProcess.js
+++ b/entity/SupportTicketTemplate_entity/entityfields/openadminview/onActionProcess.js
@@ -1,5 +1,4 @@
 import("DocumentTemplate_lib");
-import("system.logging");
 import("system.vars");
 import("Context_lib");
 
diff --git a/entity/SupportTicket_entity/SupportTicket_entity.aod b/entity/SupportTicket_entity/SupportTicket_entity.aod
index b53b47a33f2b4ccf79950d2b2f7c21f066ff8342..e4dea0d870b5a8fc6ff3023c91a907e9ceafdd8a 100644
--- a/entity/SupportTicket_entity/SupportTicket_entity.aod
+++ b/entity/SupportTicket_entity/SupportTicket_entity.aod
@@ -771,7 +771,8 @@
     </entityField>
     <entityField>
       <name>IsOverDue</name>
-      <contentType>TEXT</contentType>
+      <title>Over due</title>
+      <contentType>BOOLEAN</contentType>
     </entityField>
     <entityField>
       <name>DATE_END</name>
@@ -962,6 +963,27 @@
       <contentType>DATE</contentType>
       <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/date_edit/valueProcess.js</valueProcess>
     </entityField>
+    <entityParameter>
+      <name>PullNextFilter_param</name>
+    </entityParameter>
+    <entityConsumer>
+      <name>KnowledgeEntries</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KnowledgeManagement_entity</entityName>
+        <fieldName>Provider</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>TicketCategory_param</name>
+          <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/knowledgeentries/children/ticketcategory_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>Inbox_param</name>
+          <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/knowledgeentries/children/inbox_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -1181,6 +1203,7 @@
         <dbRecordFieldMapping>
           <name>IsOverDue.value</name>
           <expression>%aditoprj%/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/isoverdue.value/expression.js</expression>
+          <isFilterable v="true" />
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>DATE_END.value</name>
@@ -1229,15 +1252,6 @@
         </linkInformation>
       </linkInformation>
       <filterExtensions>
-        <filterExtension>
-          <name>Favorite_filter</name>
-          <title>Favoritegroup</title>
-          <contentType>TEXT</contentType>
-          <filterValuesProcess>%aditoprj%/entity/SupportTicket_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js</filterValuesProcess>
-          <filterConditionProcess>%aditoprj%/entity/SupportTicket_entity/recordcontainers/db/filterextensions/favorite_filter/filterConditionProcess.js</filterConditionProcess>
-          <isLookupFilter v="false" />
-          <filtertype>BASIC</filtertype>
-        </filterExtension>
         <filterExtensionSet>
           <name>Attribute_filter</name>
           <filterFieldsProcess>%aditoprj%/entity/SupportTicket_entity/recordcontainers/db/filterextensions/attribute_filter/filterFieldsProcess.js</filterFieldsProcess>
diff --git a/entity/SupportTicket_entity/entityfields/code/valueProcess.js b/entity/SupportTicket_entity/entityfields/code/valueProcess.js
index b3745b58d06c37e5cdd691e0fab9a532fe53083a..74531e678fd10b70f4c91fe7ea90bf496c5ab2be 100644
--- a/entity/SupportTicket_entity/entityfields/code/valueProcess.js
+++ b/entity/SupportTicket_entity/entityfields/code/valueProcess.js
@@ -3,4 +3,6 @@ import("system.vars");
 import("system.result");
 
 if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string("-1");
\ No newline at end of file
+{
+    result.string("-1");
+}
\ No newline at end of file
diff --git a/entity/SupportTicket_entity/entityfields/is_overdue_symbol/valueProcess.js b/entity/SupportTicket_entity/entityfields/is_overdue_symbol/valueProcess.js
index 8aa84faafb8a12a9c61392a6e7ad8d31c6214f58..d47c8c67463a6e4bc3eaf3c7e09b88cdd8ccaefd 100644
--- a/entity/SupportTicket_entity/entityfields/is_overdue_symbol/valueProcess.js
+++ b/entity/SupportTicket_entity/entityfields/is_overdue_symbol/valueProcess.js
@@ -1,7 +1,8 @@
+import("Util_lib");
 import("system.result");
 import("system.vars");
 
-if (vars.get("$field.IsOverDue"))
+if(Utils.toBoolean(vars.get("$field.IsOverDue")))
 {
     result.string("vaadin:warning");
 }
\ No newline at end of file
diff --git a/entity/SupportTicket_entity/entityfields/knowledgeentries/children/inbox_param/valueProcess.js b/entity/SupportTicket_entity/entityfields/knowledgeentries/children/inbox_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2f8c39f1c827c33ba52b016777362e53bb5f9300
--- /dev/null
+++ b/entity/SupportTicket_entity/entityfields/knowledgeentries/children/inbox_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+
+
+result.string(vars.get("$field.INBOX_ID"));
\ No newline at end of file
diff --git a/entity/SupportTicket_entity/entityfields/knowledgeentries/children/ticketcategory_param/valueProcess.js b/entity/SupportTicket_entity/entityfields/knowledgeentries/children/ticketcategory_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..de86ee5975b7a56d58f1ac94fc454a72a5c32fd5
--- /dev/null
+++ b/entity/SupportTicket_entity/entityfields/knowledgeentries/children/ticketcategory_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+
+
+result.string(vars.get("$field.TICKETCATEGORY"));
\ No newline at end of file
diff --git a/entity/SupportTicket_entity/entityfields/pullnextticket/onActionProcess.js b/entity/SupportTicket_entity/entityfields/pullnextticket/onActionProcess.js
index 8d560f90102015edae43c4e4957e0164a0c25b9c..7d76af665602da02bd9c5fdce10d8be7bb623f1b 100644
--- a/entity/SupportTicket_entity/entityfields/pullnextticket/onActionProcess.js
+++ b/entity/SupportTicket_entity/entityfields/pullnextticket/onActionProcess.js
@@ -132,4 +132,4 @@ if(ticketID != "")
 else 
 {
     question.showMessage(translate.text("No new tickets available at this moment."));
-}
\ No newline at end of file
+}
diff --git a/entity/SupportTicket_entity/entityfields/reopenticket/stateProcess.js b/entity/SupportTicket_entity/entityfields/reopenticket/stateProcess.js
index bd519dff16f56661f215d99ca78674fa893e31c3..e7c12969c8711707f645c98acf3145ed675ec16d 100644
--- a/entity/SupportTicket_entity/entityfields/reopenticket/stateProcess.js
+++ b/entity/SupportTicket_entity/entityfields/reopenticket/stateProcess.js
@@ -4,12 +4,11 @@ import("system.vars");
 import("KeywordRegistry_basic");
 
 
-
-if (vars.get ("$field.TASK_STATUS") != $KeywordRegistry.taskStatus$ended())
+if (vars.get ("$field.TASK_STATUS") == $KeywordRegistry.taskStatus$ended())
 {
-    result.string(neon.COMPONENTSTATE_INVISIBLE);
+     result.string(neon.COMPONENTSTATE_INVISIBLE);
 }
-else
+else 
 {
-    result.string(neon.COMPONENTSTATE_EDITABLE);
+     result.string(neon.COMPONENTSTATE_EDITABLE);
 }
\ No newline at end of file
diff --git a/entity/SupportTicket_entity/entityfields/resubmitticket/stateProcess.js b/entity/SupportTicket_entity/entityfields/resubmitticket/stateProcess.js
index 82fc9b573f3fd68fd874b4b7b4c88cedcbaebefd..e7c12969c8711707f645c98acf3145ed675ec16d 100644
--- a/entity/SupportTicket_entity/entityfields/resubmitticket/stateProcess.js
+++ b/entity/SupportTicket_entity/entityfields/resubmitticket/stateProcess.js
@@ -1,13 +1,14 @@
-import("system.vars");
-import("KeywordRegistry_basic");
 import("system.neon");
 import("system.result");
+import("system.vars");
+import("KeywordRegistry_basic");
+
 
 if (vars.get ("$field.TASK_STATUS") == $KeywordRegistry.taskStatus$ended())
 {
-    result.string(neon.COMPONENTSTATE_INVISIBLE);
+     result.string(neon.COMPONENTSTATE_INVISIBLE);
 }
-else
+else 
 {
-    result.string(neon.COMPONENTSTATE_EDITABLE);
+     result.string(neon.COMPONENTSTATE_EDITABLE);
 }
\ No newline at end of file
diff --git a/entity/SupportTicket_entity/entityfields/returnticket/stateProcess.js b/entity/SupportTicket_entity/entityfields/returnticket/stateProcess.js
index 17de559118b4e70dc5114c02057c01c48e12770d..5c464d664a72dd749226c3c10a6065f524443a0d 100644
--- a/entity/SupportTicket_entity/entityfields/returnticket/stateProcess.js
+++ b/entity/SupportTicket_entity/entityfields/returnticket/stateProcess.js
@@ -4,7 +4,7 @@ import("system.vars");
 import("KeywordRegistry_basic");
 
 
-if(vars.get ("$field.TASK_STATUS") == $KeywordRegistry.taskStatus$ended())
+if (vars.get ("$field.TASK_STATUS") == $KeywordRegistry.taskStatus$ended())
 {
      result.string(neon.COMPONENTSTATE_DISABLED);
 }
diff --git a/entity/SupportTicket_entity/entityfields/task_maturity_date/colorProcess.js b/entity/SupportTicket_entity/entityfields/task_maturity_date/colorProcess.js
index 7d9f0d45cc43af221717e74e4226ddfa39e9999f..d4fe89a7045aa701e3adc69dfe2afab5c2b9e511 100644
--- a/entity/SupportTicket_entity/entityfields/task_maturity_date/colorProcess.js
+++ b/entity/SupportTicket_entity/entityfields/task_maturity_date/colorProcess.js
@@ -1,13 +1,10 @@
+import("Util_lib");
 import("system.neon");
 import("system.result");
-import("system.datetime");
 import("system.vars");
 
 
-
-var overdue =vars.get("$field.IsOverDue");
-
-if (!overdue)
+if (!Utils.toBoolean(vars.get("$field.IsOverDue")))
 {
     result.string(neon.PRIORITY_NONE_COLOR);
 }
diff --git a/entity/SupportTicket_entity/entityfields/task_requestor_contact_id/displayValueProcess.js b/entity/SupportTicket_entity/entityfields/task_requestor_contact_id/displayValueProcess.js
index 35ee9d5af270f7b70e4827ca1717b9d96882cea6..be62dd271eed3bb07cf8adadbf4de178111d21e6 100644
--- a/entity/SupportTicket_entity/entityfields/task_requestor_contact_id/displayValueProcess.js
+++ b/entity/SupportTicket_entity/entityfields/task_requestor_contact_id/displayValueProcess.js
@@ -4,4 +4,4 @@ import("Contact_lib");
 
 //show the simpel title since this is an employee-entry and therefore no organisation is needed
 var title = ContactUtils.getTitleByContactId(vars.get("$field.TASK_REQUESTOR_CONTACT_ID"));
-result.string(title);
\ No newline at end of file
+result.string(title);
diff --git a/entity/SupportTicket_entity/entityfields/task_status/onValueChange.js b/entity/SupportTicket_entity/entityfields/task_status/onValueChange.js
index 11e0d8c507174696fea38542dff5f8f113ae874e..ec8d0d9b003d3f5ecce80b5bf476148fbf654e8d 100644
--- a/entity/SupportTicket_entity/entityfields/task_status/onValueChange.js
+++ b/entity/SupportTicket_entity/entityfields/task_status/onValueChange.js
@@ -1,4 +1,3 @@
-import("system.logging");
 import("system.neon");
 import("system.vars");
 import("Employee_lib");
diff --git a/entity/SupportTicket_entity/recordcontainers/db/conditionProcess.js b/entity/SupportTicket_entity/recordcontainers/db/conditionProcess.js
index d40bba5ac7f7aee98aa22fc21fd6539b36cc2135..3489e443b426ff370d354092a0d7a7ca9dbd387a 100644
--- a/entity/SupportTicket_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/SupportTicket_entity/recordcontainers/db/conditionProcess.js
@@ -11,6 +11,7 @@ var cond = newWhere()
             .andIfSet("TICKET.TICKETTYPE", "$param.TicketType_param")
             .andIfSet("TICKET.INBOX_ID", "$param.InboxId_param")
             .andIfSet("TICKET.TICKETID", "$param.TicketId_param")
+            
 var loadNothing = false;
 
 if (Utils.toBoolean(vars.getString("$param.FilterOnlyOwnTicket_param")))
diff --git a/entity/SupportTicket_entity/recordcontainers/db/filterextensions/favorite_filter/filterConditionProcess.js b/entity/SupportTicket_entity/recordcontainers/db/filterextensions/favorite_filter/filterConditionProcess.js
deleted file mode 100644
index a49514ad69abfed288c70f506f3b9dd30bdd53de..0000000000000000000000000000000000000000
--- a/entity/SupportTicket_entity/recordcontainers/db/filterextensions/favorite_filter/filterConditionProcess.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import("system.vars");
-import("Favorites_lib");
-import("system.result");
-import("Sql_lib");
-
-var operator = vars.get("$local.operator");
-var rawvalue = vars.get("$local.rawvalue");
-
-var objecttype = vars.get("$field.SUPPORTTICKET_OBJECTTYPE");
-var idcolumn = "TICKET.TICKETID";
-
-result.string(FavoritesUtil.getFilterDisplayCondition(objecttype, operator, rawvalue, idcolumn));
diff --git a/entity/SupportTicket_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js b/entity/SupportTicket_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js
deleted file mode 100644
index 419128ca73fe597afc7ca4aeed50b28e610206ec..0000000000000000000000000000000000000000
--- a/entity/SupportTicket_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("Context_lib");
-import("system.result");
-import("Favorites_lib");
-
-result.object(FavoritesUtil.getUserFavoriteGroupsByContext(ContextUtils.getCurrentContextId()));
\ No newline at end of file
diff --git a/entity/SupportTicket_entity/recordcontainers/db/orderClauseProcess.js b/entity/SupportTicket_entity/recordcontainers/db/orderClauseProcess.js
index 0e288520769a327ff42141d7d00eb083ba9c9766..9cd8ad79b2defbbb2ab9e11cd02eff546a8cc88d 100644
--- a/entity/SupportTicket_entity/recordcontainers/db/orderClauseProcess.js
+++ b/entity/SupportTicket_entity/recordcontainers/db/orderClauseProcess.js
@@ -1,4 +1,14 @@
+import("Util_lib");
+import("system.vars");
 import("system.db");
 import("system.result");
 
-result.object({"TASK.START_DATE": db.DESCENDING});
\ No newline at end of file
+
+if(Utils.toBoolean(vars.get("$param.PullNextFilter_param")))
+{
+    result.object({"TASK.START_DATE": db.ASCENDING});
+}
+else
+{
+    result.object({"TASK.START_DATE": db.DESCENDING});
+}
\ No newline at end of file
diff --git a/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/isoverdue.value/expression.js b/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/isoverdue.value/expression.js
index 1f6de45f9e5cac81f7df63f7ea151f245405e2af..5e391090d4d0477334e5479930f1e3aeaf0917e5 100644
--- a/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/isoverdue.value/expression.js
+++ b/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/isoverdue.value/expression.js
@@ -5,8 +5,8 @@ import("system.result");
 import("KeywordRegistry_basic");
 
 result.string( SqlBuilder.caseStatement()
-               .when("TASK.MATURITY_DATE", datetime.date(), SqlBuilder.GREATER()).then("''")
-               .when( "TASK.MATURITY_DATE is null").then("''")
-               .when( "TASK.STATUS", $KeywordRegistry.taskStatus$ended()).then("''")
-               .elseString("true"));
+               .when("TASK.MATURITY_DATE", datetime.date(), SqlBuilder.GREATER()).then("0")
+               .when( "TASK.MATURITY_DATE is null").then("0")
+               .when( "TASK.STATUS", $KeywordRegistry.taskStatus$ended()).then("0")
+               .elseString("1"));
 
diff --git a/entity/TicketCategory_param/valueProcess.js b/entity/TicketCategory_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
index 0de471df7eea0b69b3ad0ed3c63b1a4c6fb1da84..5e7d445c78638868fe57be5ca859a1f6c4670a3e 100644
--- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
+++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
@@ -8169,9 +8169,6 @@
     <entry>
       <key>Ticket resubmitted</key>
     </entry>
-    <entry>
-      <key>New service ticket</key>
-    </entry>
     <entry>
       <key>New date due</key>
     </entry>
@@ -9031,25 +9028,67 @@
       <key>Show the finished Tickets in the last 4 weeks</key>
     </entry>
     <entry>
-      <key>completed</key>
+      <key>by title</key>
     </entry>
     <entry>
-      <key>Existing customer</key>
+      <key>by translated title</key>
     </entry>
     <entry>
-      <key>Cust.-No.</key>
+      <key>manually</key>
     </entry>
     <entry>
-      <key>by title</key>
+      <key>Remove Like</key>
     </entry>
     <entry>
-      <key>by translated title</key>
+      <key>liked your knowledge article</key>
     </entry>
     <entry>
-      <key>${TASK_PROTECTIONLEVEL}</key>
+      <key>Someone liked one of your articles</key>
     </entry>
     <entry>
-      <key>manually</key>
+      <key>Use all categories</key>
+    </entry>
+    <entry>
+      <key>Use all inboxes</key>
+    </entry>
+    <entry>
+      <key>solution</key>
+    </entry>
+    <entry>
+      <key>Service category</key>
+    </entry>
+    <entry>
+      <key>Knowledge category</key>
+    </entry>
+    <entry>
+      <key>Knowledge categories</key>
+    </entry>
+    <entry>
+      <key>Service categories</key>
+    </entry>
+    <entry>
+      <key>order</key>
+    </entry>
+    <entry>
+      <key>Entries</key>
+    </entry>
+    <entry>
+      <key>Summary</key>
+    </entry>
+    <entry>
+      <key>Kd.-Nr.</key>
+    </entry>
+    <entry>
+      <key>completed</key>
+    </entry>
+    <entry>
+      <key>Existing customer</key>
+    </entry>
+    <entry>
+      <key>Cust.-No.</key>
+    </entry>
+    <entry>
+      <key>${TASK_PROTECTIONLEVEL}</key>
     </entry>
     <entry>
       <key>Contact or company</key>
@@ -9099,6 +9138,27 @@
     <entry>
       <key>The status-change of the ticket was skipped. Any other changes were carried out.</key>
     </entry>
+    <entry>
+      <key>Focus</key>
+    </entry>
+    <entry>
+      <key>To re-opening tickets, please use the corresponding action.</key>
+    </entry>
+    <entry>
+      <key>Use all serviceticket categories</key>
+    </entry>
+    <entry>
+      <key>Overdue</key>
+    </entry>
+    <entry>
+      <key>Please add the price of the product</key>
+    </entry>
+    <entry>
+      <key>New service ticket</key>
+    </entry>
+    <entry>
+      <key>Continue mailing</key>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
   <sqlModels>
diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
index 68792eaf938f2756ebae4488e35bfa9fc417fd4a..d626de5fbf60c808d0d63022fed873eeb0160ff2 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -6,10 +6,22 @@
   <country></country>
   <variant></variant>
   <keyValueMap>
+    <entry>
+      <key>Remove Like</key>
+      <value>Like entfernen</value>
+    </entry>
     <entry>
       <key>The file did not contain any data</key>
       <value>Die Datei enthielt keine Daten</value>
     </entry>
+    <entry>
+      <key>Service category</key>
+      <value>Servicekategorie</value>
+    </entry>
+    <entry>
+      <key>Knowledge category</key>
+      <value>Wissenskategorie</value>
+    </entry>
     <entry>
       <key>by translated title</key>
       <value>Titel (übersetzt)</value>
@@ -42,6 +54,10 @@
       <key>Base Template</key>
       <value>Ursprungsvorlage</value>
     </entry>
+    <entry>
+      <key>Continue mailing</key>
+      <value>Versand fortsetzen</value>
+    </entry>
     <entry>
       <key>Only .odt, .docx and .docm files are supported for letters.</key>
       <value>Für Briefe werden nur .odt, .docx und .docm Dateien unterstützt</value>
@@ -469,6 +485,10 @@
       <key>Organisation Zip</key>
       <value>Firma PLZ</value>
     </entry>
+    <entry>
+      <key>Someone liked one of your articles</key>
+      <value>Jemand hat Ihren Wissenseintrag gelikt.</value>
+    </entry>
     <entry>
       <key>Attribute \"%0\" can only be inserted once with the same value.</key>
       <value>Eigenschaft \"%0\" kann nur einmal mit dem selben Wert ausgewählt werden.</value>
@@ -2056,6 +2076,10 @@
       <key>Type of contract</key>
       <value>Vertragsart</value>
     </entry>
+    <entry>
+      <key>Summary</key>
+      <value>Zusammenfassung</value>
+    </entry>
     <entry>
       <key>No</key>
       <value>Nein</value>
@@ -2963,6 +2987,10 @@
       <key>Container</key>
       <value>Container</value>
     </entry>
+    <entry>
+      <key>solution</key>
+      <value>Lösung</value>
+    </entry>
     <entry>
       <key>Administration</key>
       <value>Administration</value>
@@ -4675,6 +4703,10 @@
       <key>CIF</key>
       <value>CIF</value>
     </entry>
+    <entry>
+      <key>Entries</key>
+      <value>Einträge</value>
+    </entry>
     <entry>
       <key>ex works</key>
       <value>ab Werk</value>
@@ -6375,6 +6407,10 @@
       <key>Payment problem customer</key>
       <value>Zahlungsproblem Kunde</value>
     </entry>
+    <entry>
+      <key>Knowledge categories</key>
+      <value>Wissenskategorien</value>
+    </entry>
     <entry>
       <key>Agency</key>
       <value>Behörde</value>
@@ -7713,6 +7749,10 @@
       <key>Column 30</key>
       <value>Spalte 30</value>
     </entry>
+    <entry>
+      <key>Overdue</key>
+      <value>Überfällig</value>
+    </entry>
     <entry>
       <key>Duplicate status</key>
       <value>Dublettenstatus</value>
@@ -8099,6 +8139,10 @@
       <key>Test</key>
       <value>Test</value>
     </entry>
+    <entry>
+      <key>order</key>
+      <value>Reihenfolge</value>
+    </entry>
     <entry>
       <key>Trigger</key>
       <value>Auslöser</value>
@@ -10065,6 +10109,14 @@
       <key>Prev</key>
       <value>vorher</value>
     </entry>
+    <entry>
+      <key>Service categories</key>
+      <value>Servicekategorien</value>
+    </entry>
+    <entry>
+      <key>Focus</key>
+      <value>Focus</value>
+    </entry>
     <entry>
       <key>Next</key>
       <value>Weiter</value>
@@ -10514,6 +10566,10 @@
       <key>Done by</key>
       <value>Erledigt von</value>
     </entry>
+    <entry>
+      <key>liked your knowledge article</key>
+      <value>hat ihren Wissenbeitrag gelikt. Wissensbeitrag:</value>
+    </entry>
     <entry>
       <key>Done on</key>
       <value>Erledigt am</value>
@@ -11473,6 +11529,10 @@
     <entry>
       <key>Chart Number of tickets total (Mail)</key>
     </entry>
+    <entry>
+      <key>Use all inboxes</key>
+      <value>Alle Postkörbe</value>
+    </entry>
     <entry>
       <key>Chart Number of tickets per inbox (Status)</key>
     </entry>
@@ -11563,7 +11623,7 @@
     </entry>
     <entry>
       <key>Pull next ticket or create new ones</key>
-      <value></value>
+      <value>Neue Tickets ziehen oder erstellen</value>
     </entry>
     <entry>
       <key>Abgeschlossen</key>
@@ -11768,7 +11828,8 @@
       <value>Neues Serviceticket</value>
     </entry>
     <entry>
-      <key>Use all service ticket categories</key>
+      <key>Use all categories</key>
+      <value>Alle Kategorien</value>
     </entry>
     <entry>
       <key>Service ticket categories</key>
@@ -11873,6 +11934,7 @@
     </entry>
     <entry>
       <key>Show my tickets that are in process.</key>
+      <value>Meine Tickets anzeigen, die in Bearbeitung sind.</value>
     </entry>
     <entry>
       <key>Propkey</key>
@@ -11888,6 +11950,16 @@
     </entry>
     <entry>
       <key>Show the finished Tickets in the last 4 weeks</key>
+      <value>Zeigt die abgeschlossenen Tickets der letzten 4 Wochen an. </value>
+    </entry>
+    <entry>
+      <key>Manually</key>
+    </entry>
+    <entry>
+      <key>Use all service ticket categories</key>
+    </entry>
+    <entry>
+      <key>Use all serviceticket categories</key>
     </entry>
     <entry>
       <key>Cust.-No.</key>
@@ -11905,9 +11977,6 @@
       <key>${TASK_PROTECTIONLEVEL}</key>
       <value>Private Aufgabe</value>
     </entry>
-    <entry>
-      <key>Manually</key>
-    </entry>
     <entry>
       <key>Stufen</key>
     </entry>
@@ -11945,6 +12014,15 @@
       <key>Adito dark blue</key>
       <value>Adito dunkelblau</value>
     </entry>
+    <entry>
+      <key>To re-opening tickets, please use the corresponding action.</key>
+    </entry>
+    <entry>
+      <key>Kd.-Nr.</key>
+    </entry>
+    <entry>
+      <key>Please add the price of the product</key>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
 </language>
diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
index 9783b1bdcddc12507f83553cee2c50899aa1c16e..065c8306863474863094fdfb0fc6d610c7ead8f5 100644
--- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
+++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
@@ -9105,29 +9105,71 @@
       <key>Show the finished Tickets in the last 4 weeks</key>
     </entry>
     <entry>
-      <key>subject</key>
+      <key>by title</key>
     </entry>
     <entry>
-      <key>description</key>
+      <key>by translated title</key>
     </entry>
     <entry>
-      <key>Existing customer</key>
+      <key>manually</key>
     </entry>
     <entry>
-      <key>Cust.-No.</key>
+      <key>Remove Like</key>
     </entry>
     <entry>
-      <key>by title</key>
+      <key>liked your knowledge article</key>
     </entry>
     <entry>
-      <key>by translated title</key>
+      <key>Someone liked one of your articles</key>
     </entry>
     <entry>
-      <key>${TASK_PROTECTIONLEVEL}</key>
-      <value>Private task</value>
+      <key>Use all categories</key>
     </entry>
     <entry>
-      <key>manually</key>
+      <key>Use all inboxes</key>
+    </entry>
+    <entry>
+      <key>solution</key>
+    </entry>
+    <entry>
+      <key>Service category</key>
+    </entry>
+    <entry>
+      <key>Knowledge category</key>
+    </entry>
+    <entry>
+      <key>Knowledge categories</key>
+    </entry>
+    <entry>
+      <key>Service categories</key>
+    </entry>
+    <entry>
+      <key>order</key>
+    </entry>
+    <entry>
+      <key>Entries</key>
+    </entry>
+    <entry>
+      <key>Summary</key>
+    </entry>
+    <entry>
+      <key>Kd.-Nr.</key>
+    </entry>
+    <entry>
+      <key>subject</key>
+    </entry>
+    <entry>
+      <key>description</key>
+    </entry>
+    <entry>
+      <key>Existing customer</key>
+    </entry>
+    <entry>
+      <key>Cust.-No.</key>
+    </entry>
+    <entry>
+      <key>${TASK_PROTECTIONLEVEL}</key>
+      <value>Private task</value>
     </entry>
     <entry>
       <key>Contact or company</key>
@@ -9177,6 +9219,24 @@
     <entry>
       <key>The status-change of the ticket was skipped. Any other changes were carried out.</key>
     </entry>
+    <entry>
+      <key>Focus</key>
+    </entry>
+    <entry>
+      <key>To re-opening tickets, please use the corresponding action.</key>
+    </entry>
+    <entry>
+      <key>Use all serviceticket categories</key>
+    </entry>
+    <entry>
+      <key>Overdue</key>
+    </entry>
+    <entry>
+      <key>Please add the price of the product</key>
+    </entry>
+    <entry>
+      <key>Continue mailing</key>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
 </language>
diff --git a/neonContext/KnowledgeManagement/KnowledgeManagement.aod b/neonContext/KnowledgeManagement/KnowledgeManagement.aod
index ba9f4dc7f367ea19463e94e752d01a562fc20b58..d49635e79a601f9ebc93ae9e5a31010e4a192ed6 100644
--- a/neonContext/KnowledgeManagement/KnowledgeManagement.aod
+++ b/neonContext/KnowledgeManagement/KnowledgeManagement.aod
@@ -44,5 +44,9 @@
       <name>be95c2fc-b29b-4d46-a8fc-0d79c09f67b6</name>
       <view>KnowledgeManagementContent_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>69e79f0e-97d7-4744-a8cc-6fdbe01d898e</name>
+      <view>KnowledgeManagementFilterSearch_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/KnowledgeManagementCategory/KnowledgeManagementCategory.aod b/neonContext/KnowledgeManagementCategory/KnowledgeManagementCategory.aod
new file mode 100644
index 0000000000000000000000000000000000000000..e6ed4b6f3d76fc8dc37e7f46df4dab7edf0313b4
--- /dev/null
+++ b/neonContext/KnowledgeManagementCategory/KnowledgeManagementCategory.aod
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1">
+  <name>KnowledgeManagementCategory</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <icon>VAADIN:BOOKMARK</icon>
+  <mainView>KnowledgeManagementCategoryMain_view</mainView>
+  <filterView>KnowledgeManagementCategoryTiles_view</filterView>
+  <editView>KnowledgeManagementCategoryEdit_view</editView>
+  <lookupView>KnowledgeManagementCategoryFilter_view</lookupView>
+  <entity>KnowledgeManagementCategory_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>5bd5f84a-6b96-4db5-927c-02e9e2273be1</name>
+      <view>KnowledgeManagementCategoryEdit_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>d081ae19-997a-44ed-ba20-710c1a90965d</name>
+      <view>KnowledgeManagementCategoryFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>9efcbfb4-b51a-4f09-89d9-6185efed1dcb</name>
+      <view>KnowledgeManagementCategoryTiles_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>6cf8aff8-4998-4db6-81e2-188f90c72840</name>
+      <view>KnowledgeManagementCategoryMain_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonContext/KnowledgeManagementInbox/KnowledgeManagementInbox.aod b/neonContext/KnowledgeManagementInbox/KnowledgeManagementInbox.aod
new file mode 100644
index 0000000000000000000000000000000000000000..cc332c739ef33b859c7f5b34ed24c459382d187a
--- /dev/null
+++ b/neonContext/KnowledgeManagementInbox/KnowledgeManagementInbox.aod
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1">
+  <name>KnowledgeManagementInbox</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <entity>KnowledgeManagementInbox_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>cff1693c-5dbe-461b-84f6-48259cfde3ae</name>
+      <view>KnowledgeManagementInboxFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>c21b8dc3-47db-4676-ab4f-d6e8dc1d6aa7</name>
+      <view>KnowledgeManagementInboxList_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>bb252cc4-3a26-4218-85ad-8bf03fa65738</name>
+      <view>KnowledgeManagementInboxMultiEdit_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonContext/KnowledgeManagementTicketCategory/KnowledgeManagementTicketCategory.aod b/neonContext/KnowledgeManagementTicketCategory/KnowledgeManagementTicketCategory.aod
new file mode 100644
index 0000000000000000000000000000000000000000..47b2e8e7596491d5a173b5629240ee131ad0f06a
--- /dev/null
+++ b/neonContext/KnowledgeManagementTicketCategory/KnowledgeManagementTicketCategory.aod
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1">
+  <name>KnowledgeManagementTicketCategory</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <entity>KnowledgeManagementTicketCategory_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>8fb1ffa4-2d9c-4823-8066-cef2acb35f66</name>
+      <view>KnowledgeManagementTicketCategoryFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>bdfd922e-6f6c-4c23-91f7-2bd589c1f021</name>
+      <view>KnowledgeManagementTicketCategoryMultiEdit_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>84d672bd-8e71-4c8c-8a2a-a426438b0dae</name>
+      <view>KnowledgeManagementTicketCategoryList_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonContext/LikeButton/LikeButton.aod b/neonContext/LikeButton/LikeButton.aod
new file mode 100644
index 0000000000000000000000000000000000000000..f0e5731a8a1cefb138fe0d11119839be2f069792
--- /dev/null
+++ b/neonContext/LikeButton/LikeButton.aod
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1">
+  <name>LikeButton</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <entity>LikeButton_entity</entity>
+</neonContext>
diff --git a/neonDashboard/KnowledgeDashboard/KnowledgeDashboard.aod b/neonDashboard/KnowledgeDashboard/KnowledgeDashboard.aod
new file mode 100644
index 0000000000000000000000000000000000000000..77c2c41d7daae109eb933a529e85a23f5ea462e3
--- /dev/null
+++ b/neonDashboard/KnowledgeDashboard/KnowledgeDashboard.aod
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonDashboard xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonDashboard/1.1.0">
+  <name>KnowledgeDashboard</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <icon>VAADIN:ACADEMY_CAP</icon>
+  <editRoles />
+</neonDashboard>
diff --git a/neonNotificationType/Like/Like.aod b/neonNotificationType/Like/Like.aod
new file mode 100644
index 0000000000000000000000000000000000000000..e45a7a79f47ad42137a3f41a327d10821179c336
--- /dev/null
+++ b/neonNotificationType/Like/Like.aod
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonNotificationType xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonNotificationType/1.1.0">
+  <name>Like</name>
+  <title>Like</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <icon>VAADIN:THUMBS_UP</icon>
+</neonNotificationType>
diff --git a/neonView/EmployeeGroupConRelationFilter_view/EmployeeGroupConRelationFilter_view.aod b/neonView/EmployeeGroupConRelationFilter_view/EmployeeGroupConRelationFilter_view.aod
index 019ecd19a43a9b7cd6c2037e7142d3204c7b71ac..9c1504c745c59d4be1b95dc0821c33a6785526e7 100644
--- a/neonView/EmployeeGroupConRelationFilter_view/EmployeeGroupConRelationFilter_view.aod
+++ b/neonView/EmployeeGroupConRelationFilter_view/EmployeeGroupConRelationFilter_view.aod
@@ -16,7 +16,7 @@
         <element>TABLET</element>
         <element>DESKTOP</element>
       </devices>
-      <isEditable v="false" />
+      <isEditable v="true" />
       <columns>
         <neonTableColumn>
           <name>dff8536f-f394-4117-8a58-287fa51d26bc</name>
diff --git a/neonView/KnowledgeManagementCategoryEdit_view/KnowledgeManagementCategoryEdit_view.aod b/neonView/KnowledgeManagementCategoryEdit_view/KnowledgeManagementCategoryEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..337b7cb6f3bbf5ed2620671f58c2daa8ebfcb9f3
--- /dev/null
+++ b/neonView/KnowledgeManagementCategoryEdit_view/KnowledgeManagementCategoryEdit_view.aod
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>KnowledgeManagementCategoryEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <size>SMALL</size>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>Generic</name>
+      <editMode v="true" />
+      <hideEmptyFields v="false" />
+      <fields>
+        <entityFieldLink>
+          <name>adb6106f-47d5-4941-b922-55b125c0ba3e</name>
+          <entityField>NAME</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>f5f8cba6-ec05-457a-aab6-00ae7ec8017b</name>
+          <entityField>SUMMARY</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>c27e249b-5781-47ae-9cd3-54a472c26d54</name>
+          <entityField>ORDERNO</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>ab3b995c-ac0c-4a5f-82c0-5ca14b7b6fca</name>
+          <entityField>ICON</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/KnowledgeManagementCategoryFilter_view/KnowledgeManagementCategoryFilter_view.aod b/neonView/KnowledgeManagementCategoryFilter_view/KnowledgeManagementCategoryFilter_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..eb8947ab2ab2d38b1e3c300648edbee17c678271
--- /dev/null
+++ b/neonView/KnowledgeManagementCategoryFilter_view/KnowledgeManagementCategoryFilter_view.aod
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>KnowledgeManagementCategoryFilter_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>Table</name>
+      <columns>
+        <neonTableColumn>
+          <name>b1f16ad6-37f0-4266-b4af-691ff9fa5c45</name>
+          <entityField>ICON</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>2ceedad5-73c2-4b70-a885-1ce6995d8f54</name>
+          <entityField>NAME</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/KnowledgeManagementCategoryMain_view/KnowledgeManagementCategoryMain_view.aod b/neonView/KnowledgeManagementCategoryMain_view/KnowledgeManagementCategoryMain_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..f1856e1d078990e4a81d37688e1ced750e378677
--- /dev/null
+++ b/neonView/KnowledgeManagementCategoryMain_view/KnowledgeManagementCategoryMain_view.aod
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>KnowledgeManagementCategoryMain_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <neonViewReference>
+      <name>fe9e3b3d-c843-4399-bd9b-1cbceebd1632</name>
+      <entityField>KnowledgeManagementEntries</entityField>
+      <view>KnowledgeManagementFilter_view</view>
+    </neonViewReference>
+  </children>
+</neonView>
diff --git a/neonView/KnowledgeManagementCategoryTiles_view/KnowledgeManagementCategoryTiles_view.aod b/neonView/KnowledgeManagementCategoryTiles_view/KnowledgeManagementCategoryTiles_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..13e9ebcb53689c157048725eb0e5470f78249cc8
--- /dev/null
+++ b/neonView/KnowledgeManagementCategoryTiles_view/KnowledgeManagementCategoryTiles_view.aod
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>KnowledgeManagementCategoryTiles_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <tilesViewTemplate>
+      <name>Tiles</name>
+      <hideActions v="false" />
+      <iconField>ICON</iconField>
+      <titleField>NAME</titleField>
+      <descriptionField>SUMMARY</descriptionField>
+      <infoBottomField>numberOfArticles</infoBottomField>
+      <tilePresentation>PORTRAIT</tilePresentation>
+      <direction>VERTICAL</direction>
+      <isDeletable v="true" />
+      <isEditable v="true" />
+      <isCreatable v="true" />
+    </tilesViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/KnowledgeManagementEdit_view/KnowledgeManagementEdit_view.aod b/neonView/KnowledgeManagementEdit_view/KnowledgeManagementEdit_view.aod
index 47774ade04160fdb220a76e37b045e478d109536..159fff19a0b910e66ca53f4191661a95c3a4c1da 100644
--- a/neonView/KnowledgeManagementEdit_view/KnowledgeManagementEdit_view.aod
+++ b/neonView/KnowledgeManagementEdit_view/KnowledgeManagementEdit_view.aod
@@ -7,10 +7,9 @@
   <size>NORMAL</size>
   <quickEntry v="6" />
   <layout>
-    <boxLayout>
+    <noneLayout>
       <name>layout</name>
-      <autoHeight v="true" />
-    </boxLayout>
+    </noneLayout>
   </layout>
   <children>
     <genericViewTemplate>
@@ -33,6 +32,10 @@
           <name>59c18990-a0e2-4cbd-b728-f156a421081f</name>
           <entityField>CONTENT</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>d3829288-3db6-4e90-b1eb-40502e5c65e7</name>
+          <entityField>SUMMARY</entityField>
+        </entityFieldLink>
         <entityFieldLink>
           <name>781765cb-93a4-431e-bc92-9bef2a17e39f</name>
           <entityField>AUTHOR_CONTACT_ID</entityField>
@@ -45,8 +48,34 @@
           <name>bfa39723-52e1-45e5-945c-cc1db1c81b81</name>
           <entityField>PUBLISH</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>1dfe53e5-75e1-4fde-9cd7-19393a87a512</name>
+          <entityField>KNOWLEDGEMANAGEMENTCATEGORY_ID</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>67bbf539-27b9-4c61-8cf7-ac5549eb81bd</name>
+          <entityField>TYPE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>c751b6ab-e265-4700-86e9-6eaf44bf8980</name>
+          <entityField>USEINALLINBOXES</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>6111e070-c32d-4eb9-914c-ce6190184587</name>
+          <entityField>USEINALLTICKETCATEGORIES</entityField>
+        </entityFieldLink>
       </fields>
     </genericViewTemplate>
+    <neonViewReference>
+      <name>fe1f9490-f133-4a4d-ab75-de3cacbc3e07</name>
+      <entityField>KnowledgeManagementInboxes</entityField>
+      <view>KnowledgeManagementInboxMultiEdit_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>a74b6bfb-1a68-4f51-9993-b74501c5d2ca</name>
+      <entityField>KnowledgeManagementTicketCategories</entityField>
+      <view>KnowledgeManagementTicketCategoryMultiEdit_view</view>
+    </neonViewReference>
     <neonViewReference>
       <name>a62e4251-76b5-427c-b758-ae57bcdf5956</name>
       <entityField>TagsByKnowledgeId</entityField>
diff --git a/neonView/KnowledgeManagementFilterSearch_view/KnowledgeManagementFilterSearch_view.aod b/neonView/KnowledgeManagementFilterSearch_view/KnowledgeManagementFilterSearch_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..1e239ee3494d3bf1dd596cbd74593dd62cb9ce14
--- /dev/null
+++ b/neonView/KnowledgeManagementFilterSearch_view/KnowledgeManagementFilterSearch_view.aod
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>KnowledgeManagementFilterSearch_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <filterable v="true" />
+  <layout>
+    <groupLayout>
+      <name>layout</name>
+    </groupLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>FilterTable</name>
+      <hideContentSearch v="false" />
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTableColumn>
+          <name>6536f7bc-b655-4011-b8ce-20b27fb0f656</name>
+          <entityField>#ICON</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>6a5fd77d-537b-4f27-a372-93838a76ff2e</name>
+          <entityField>TITLE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>69905c5d-27c4-49aa-a10c-589fee93b67b</name>
+          <entityField>AUTHOR_CONTACT_ID</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>6f9daef0-872f-486c-8d1b-19fbde27efff</name>
+          <entityField>LastChange</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>df803a4c-7bd2-4429-96f9-3e94a57a4b5d</name>
+          <entityField>NUMBEROFVIEWS</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod b/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod
index 3b046fcd1fc066bbef1d10f60e9f4f843f46a791..3613968db4f04848908090732be3bf3271c33852 100644
--- a/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod
+++ b/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod
@@ -36,6 +36,10 @@
           <name>6a5fd77d-537b-4f27-a372-93838a76ff2e</name>
           <entityField>TITLE</entityField>
         </neonTableColumn>
+        <neonTableColumn>
+          <name>0be0e77d-9245-436a-ab5a-fdcf6707c8f9</name>
+          <entityField>KNOWLEDGEMANAGEMENTCATEGORY_ID</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>69905c5d-27c4-49aa-a10c-589fee93b67b</name>
           <entityField>AUTHOR_CONTACT_ID</entityField>
@@ -44,14 +48,48 @@
           <name>6f9daef0-872f-486c-8d1b-19fbde27efff</name>
           <entityField>LastChange</entityField>
         </neonTableColumn>
+        <neonTableColumn>
+          <name>d56608b0-f98f-4e90-ab76-9d300389ed86</name>
+          <entityField>NUMBEROFVIEWS</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>bb57f234-0c0f-4f82-ba90-195c3c29eaca</name>
+          <entityField>numberOfLikes</entityField>
+        </neonTableColumn>
       </columns>
     </tableViewTemplate>
-    <timelineViewTemplate>
-      <name>Timeline</name>
-      <dateField>LastChange</dateField>
-      <titleField>TITLE</titleField>
-      <descriptionField>CONTENT</descriptionField>
-      <subdescriptionField>AUTHOR_CONTACT_ID</subdescriptionField>
-    </timelineViewTemplate>
+    <treeTableViewTemplate>
+      <name>TreeTable</name>
+      <columns>
+        <neonTreeTableColumn>
+          <name>46fbe212-ee67-420b-bf50-2d89b0a3e1f8</name>
+          <entityField>#ICON</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>90d71d3c-ec83-4dc6-a391-dab1f3f90711</name>
+          <entityField>TITLE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>10281720-d159-4c2a-9c9d-2ae06d538015</name>
+          <entityField>KNOWLEDGEMANAGEMENTCATEGORY_ID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>6bda4383-2b6c-4325-a054-9eec63e14702</name>
+          <entityField>AUTHOR_CONTACT_ID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>3f0bce21-e23f-4a3f-a8c2-89904e7e2314</name>
+          <entityField>LastChange</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>aebf3cc2-f2d1-48ce-a649-09c3ff508ea6</name>
+          <entityField>NUMBEROFVIEWS</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>75669f4d-e9b2-4b75-912b-29d0349470d6</name>
+          <entityField>numberOfLikes</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/KnowledgeManagementInboxFilter_view/KnowledgeManagementInboxFilter_view.aod b/neonView/KnowledgeManagementInboxFilter_view/KnowledgeManagementInboxFilter_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..55ffe68df3113ae3682ae6871814f1c89f2c2cd7
--- /dev/null
+++ b/neonView/KnowledgeManagementInboxFilter_view/KnowledgeManagementInboxFilter_view.aod
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>KnowledgeManagementInboxFilter_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>Table</name>
+      <columns>
+        <neonTableColumn>
+          <name>d3562537-abdd-4bdb-88da-1f82f285d74f</name>
+          <entityField>INBOX_ID</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>687dc5ea-1154-48b5-a063-2b0240d164c8</name>
+          <entityField>USER_NEW</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>78e204d6-3670-46eb-8204-cbaaf8ad9540</name>
+          <entityField>DATE_NEW</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/KnowledgeManagementInboxList_view/KnowledgeManagementInboxList_view.aod b/neonView/KnowledgeManagementInboxList_view/KnowledgeManagementInboxList_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..9757d9218899b9436726f1171f1a2905b3eea0e2
--- /dev/null
+++ b/neonView/KnowledgeManagementInboxList_view/KnowledgeManagementInboxList_view.aod
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>KnowledgeManagementInboxList_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <titledListViewTemplate>
+      <name>TitledList</name>
+      <titleField>INBOX_ID</titleField>
+    </titledListViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/KnowledgeManagementInboxMultiEdit_view/KnowledgeManagementInboxMultiEdit_view.aod b/neonView/KnowledgeManagementInboxMultiEdit_view/KnowledgeManagementInboxMultiEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..70994d838e1f529865cd3cc020c8b876748ef8f0
--- /dev/null
+++ b/neonView/KnowledgeManagementInboxMultiEdit_view/KnowledgeManagementInboxMultiEdit_view.aod
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>KnowledgeManagementInboxMultiEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <genericMultipleViewTemplate>
+      <name>GenericMultiple</name>
+      <autoNewRow v="false" />
+      <columns>
+        <neonGenericMultipleTableColumn>
+          <name>627cc669-3894-4836-8376-fc9bffe3a6a8</name>
+          <entityField>INBOX_ID</entityField>
+          <fullWidth v="true" />
+        </neonGenericMultipleTableColumn>
+      </columns>
+    </genericMultipleViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/KnowledgeManagementPreview_view/KnowledgeManagementPreview_view.aod b/neonView/KnowledgeManagementPreview_view/KnowledgeManagementPreview_view.aod
index a71dc1b4a0e81a1043a6c3f25cfbd679ecd87ee9..c793f356e110326053facca20e055d2068dcd531 100644
--- a/neonView/KnowledgeManagementPreview_view/KnowledgeManagementPreview_view.aod
+++ b/neonView/KnowledgeManagementPreview_view/KnowledgeManagementPreview_view.aod
@@ -6,6 +6,7 @@
     <headerFooterLayout>
       <name>layout</name>
       <header>KnowledgeDetails</header>
+      <footer>ScoreCard</footer>
     </headerFooterLayout>
   </layout>
   <children>
@@ -24,6 +25,25 @@
       <entityField>#ENTITY</entityField>
       <title>Favorites</title>
     </favoriteViewTemplate>
+    <actionsViewTemplate>
+      <name>Actions</name>
+      <actions>
+        <element>Likes</element>
+      </actions>
+    </actionsViewTemplate>
+    <genericViewTemplate>
+      <name>Summary</name>
+      <editMode v="false" />
+      <showDrawer v="true" />
+      <drawerCaption>Summary</drawerCaption>
+      <hideLabels v="true" />
+      <fields>
+        <entityFieldLink>
+          <name>b83041d2-04ff-499e-bc36-5df270b06b37</name>
+          <entityField>SUMMARY</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
     <genericViewTemplate>
       <name>Details</name>
       <showDrawer v="true" />
@@ -50,12 +70,42 @@
           <name>6252c147-e35f-4c54-8e9c-f65eee2d5283</name>
           <entityField>PUBLISH</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>0e81b666-0d25-432c-a0bf-6713a3e7d90f</name>
+          <entityField>KNOWLEDGEMANAGEMENTCATEGORY_ID</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>9d04ce4d-b2b7-48d4-814f-302240aaa66e</name>
+          <entityField>USEINALLINBOXES</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>0dc54e94-d410-42c6-89cd-a40f7b6eb8dc</name>
+          <entityField>USEINALLTICKETCATEGORIES</entityField>
+        </entityFieldLink>
       </fields>
     </genericViewTemplate>
     <neonViewReference>
-      <name>9322369a-d82b-402e-aaff-dedac00d1971</name>
-      <entityField>TagsByKnowledgeId</entityField>
-      <view>KnowledgeTagList_view</view>
+      <name>403b68ad-7716-4ba1-bf51-ece4c91bed9d</name>
+      <entityField>KnowledgeManagementTicketCategories</entityField>
+      <view>KnowledgeManagementTicketCategoryList_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>5cf7c82d-16d8-4275-a63e-030f0908376f</name>
+      <entityField>KnowledgeManagementInboxes</entityField>
+      <view>KnowledgeManagementInboxList_view</view>
+    </neonViewReference>
+    <scoreCardViewTemplate>
+      <name>ScoreCard</name>
+      <fields>
+        <entityFieldLink>
+          <name>ae7c4523-2c4b-4c64-9e04-7cbc4bad98ad</name>
+          <entityField>NUMBEROFVIEWS</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>dc59f456-5084-461a-9d05-d2f79ac60210</name>
+          <entityField>numberOfLikes</entityField>
+        </entityFieldLink>
+      </fields>
+    </scoreCardViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/KnowledgeManagementTicketCategoryFilter_view/KnowledgeManagementTicketCategoryFilter_view.aod b/neonView/KnowledgeManagementTicketCategoryFilter_view/KnowledgeManagementTicketCategoryFilter_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..624fbb0e3e47656801c90c70478435fa93d5d97a
--- /dev/null
+++ b/neonView/KnowledgeManagementTicketCategoryFilter_view/KnowledgeManagementTicketCategoryFilter_view.aod
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>KnowledgeManagementTicketCategoryFilter_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>Table</name>
+      <columns>
+        <neonTableColumn>
+          <name>db1547b5-fcd3-40f7-8f5c-33b9f9b87760</name>
+          <entityField>CLASSIFICATION</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>649724a2-20a5-45d7-8669-be9ef91f5d3c</name>
+          <entityField>USER_NEW</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>b9b06516-c84a-4b5b-8b78-0627780a44bd</name>
+          <entityField>DATE_NEW</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/KnowledgeManagementTicketCategoryList_view/KnowledgeManagementTicketCategoryList_view.aod b/neonView/KnowledgeManagementTicketCategoryList_view/KnowledgeManagementTicketCategoryList_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..65d9de627ec16bc93f42f3587a10db8eaa5a4a00
--- /dev/null
+++ b/neonView/KnowledgeManagementTicketCategoryList_view/KnowledgeManagementTicketCategoryList_view.aod
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>KnowledgeManagementTicketCategoryList_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <titledListViewTemplate>
+      <name>TitledList</name>
+      <titleField>CLASSIFICATION</titleField>
+    </titledListViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/KnowledgeManagementTicketCategoryMultiEdit_view/KnowledgeManagementTicketCategoryMultiEdit_view.aod b/neonView/KnowledgeManagementTicketCategoryMultiEdit_view/KnowledgeManagementTicketCategoryMultiEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..0ba86dc0d5b5f6349c23e84c6b81cdb18cb0fa4d
--- /dev/null
+++ b/neonView/KnowledgeManagementTicketCategoryMultiEdit_view/KnowledgeManagementTicketCategoryMultiEdit_view.aod
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>KnowledgeManagementTicketCategoryMultiEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <genericMultipleViewTemplate>
+      <name>GenericMultiple</name>
+      <autoNewRow v="false" />
+      <columns>
+        <neonGenericMultipleTableColumn>
+          <name>b242afc9-1c77-4a47-a247-be8edf759659</name>
+          <entityField>CLASSIFICATION</entityField>
+          <fullWidth v="true" />
+        </neonGenericMultipleTableColumn>
+      </columns>
+    </genericMultipleViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/SupportTicketMain_view/SupportTicketMain_view.aod b/neonView/SupportTicketMain_view/SupportTicketMain_view.aod
index 0d0d8cfbf17cc84d46e6f64d7aa87c40d98c270a..1d096ca715653cae3c3e696bf6719ed61a7fee6b 100644
--- a/neonView/SupportTicketMain_view/SupportTicketMain_view.aod
+++ b/neonView/SupportTicketMain_view/SupportTicketMain_view.aod
@@ -49,5 +49,10 @@
       <entityField>Attributes</entityField>
       <view>AttributeRelationTree_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>1782c127-a09f-4bb9-af1b-ea5cc78b530f</name>
+      <entityField>KnowledgeEntries</entityField>
+      <view>KnowledgeManagementFilterSearch_view</view>
+    </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/SupportTicketPreviewHeader_view/SupportTicketPreviewHeader_view.aod b/neonView/SupportTicketPreviewHeader_view/SupportTicketPreviewHeader_view.aod
index b32ddfc225b6f07071cfa6b53107c4d69635a91c..71bf46c3c2ef87e6e28a958dbb30ba3b09c678c1 100644
--- a/neonView/SupportTicketPreviewHeader_view/SupportTicketPreviewHeader_view.aod
+++ b/neonView/SupportTicketPreviewHeader_view/SupportTicketPreviewHeader_view.aod
@@ -16,6 +16,7 @@
       <subtitleField>INBOX_ID</subtitleField>
       <descriptionField>EMAILMAILSIGNATURE</descriptionField>
       <favoriteAction1>newActivity</favoriteAction1>
+      <isEditable v="false" />
     </cardViewTemplate>
     <actionsViewTemplate>
       <name>Actions</name>
diff --git a/package-lock.json b/package-lock.json
index bc7e456734c44521f04a2bfb1092aa01b411613e..45a14152314c85ffa359014466bb3711944d0bc0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -6,7 +6,7 @@
     "": {
       "name": "basic",
       "devDependencies": {
-        "cypress": "^8.3.0",
+        "cypress": "^9.1.1",
         "cypress-tags": "0.2.0",
         "cypress-wait-until": "^1.7.1",
         "mocha": "^8.3.2",
@@ -1393,9 +1393,9 @@
       }
     },
     "node_modules/@cypress/request": {
-      "version": "2.88.5",
-      "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.5.tgz",
-      "integrity": "sha512-TzEC1XMi1hJkywWpRfD2clreTa/Z+lOrXDCxxBTBPEcY5azdPi56A6Xw+O4tWJnaJH3iIE7G5aDXZC6JgRZLcA==",
+      "version": "2.88.10",
+      "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz",
+      "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==",
       "dev": true,
       "dependencies": {
         "aws-sign2": "~0.7.0",
@@ -1405,24 +1405,31 @@
         "extend": "~3.0.2",
         "forever-agent": "~0.6.1",
         "form-data": "~2.3.2",
-        "har-validator": "~5.1.3",
-        "http-signature": "~1.2.0",
+        "http-signature": "~1.3.6",
         "is-typedarray": "~1.0.0",
         "isstream": "~0.1.2",
         "json-stringify-safe": "~5.0.1",
         "mime-types": "~2.1.19",
-        "oauth-sign": "~0.9.0",
         "performance-now": "^2.1.0",
         "qs": "~6.5.2",
         "safe-buffer": "^5.1.2",
         "tough-cookie": "~2.5.0",
         "tunnel-agent": "^0.6.0",
-        "uuid": "^3.3.2"
+        "uuid": "^8.3.2"
       },
       "engines": {
         "node": ">= 6"
       }
     },
+    "node_modules/@cypress/request/node_modules/uuid": {
+      "version": "8.3.2",
+      "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+      "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+      "dev": true,
+      "bin": {
+        "uuid": "dist/bin/uuid"
+      }
+    },
     "node_modules/@cypress/xvfb": {
       "version": "1.2.4",
       "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz",
@@ -1521,18 +1528,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "dev": true,
-      "dependencies": {
-        "fast-deep-equal": "^3.1.1",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.4.1",
-        "uri-js": "^4.2.2"
-      }
-    },
     "node_modules/ansi-colors": {
       "version": "4.1.1",
       "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
@@ -1664,9 +1659,9 @@
       }
     },
     "node_modules/asn1": {
-      "version": "0.2.4",
-      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
-      "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+      "version": "0.2.6",
+      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
+      "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
       "dev": true,
       "dependencies": {
         "safer-buffer": "~2.1.0"
@@ -2812,20 +2807,20 @@
       }
     },
     "node_modules/cypress": {
-      "version": "8.3.0",
-      "resolved": "https://registry.npmjs.org/cypress/-/cypress-8.3.0.tgz",
-      "integrity": "sha512-zA5Rcq8AZIfRfPXU0CCcauofF+YpaU9HYbfqkunFTmFV0Kdlo14tNjH2E3++MkjXKFnv3/pXq+HgxWtw8CSe8Q==",
+      "version": "9.1.1",
+      "resolved": "https://registry.npmjs.org/cypress/-/cypress-9.1.1.tgz",
+      "integrity": "sha512-yWcYD8SEQ8F3okFbRPqSDj5V0xhrZBT5QRIH+P1J2vYvtEmZ4KGciHE7LCcZZLILOrs7pg4WNCqkj/XRvReQlQ==",
       "dev": true,
       "hasInstallScript": true,
       "dependencies": {
-        "@cypress/request": "^2.88.5",
+        "@cypress/request": "^2.88.10",
         "@cypress/xvfb": "^1.2.4",
         "@types/node": "^14.14.31",
         "@types/sinonjs__fake-timers": "^6.0.2",
         "@types/sizzle": "^2.3.2",
         "arch": "^2.2.0",
         "blob-util": "^2.0.2",
-        "bluebird": "^3.7.2",
+        "bluebird": "3.7.2",
         "cachedir": "^2.3.0",
         "chalk": "^4.1.0",
         "check-more-types": "^2.24.0",
@@ -2852,7 +2847,7 @@
         "minimist": "^1.2.5",
         "ospath": "^1.2.2",
         "pretty-bytes": "^5.6.0",
-        "ramda": "~0.27.1",
+        "proxy-from-env": "1.0.0",
         "request-progress": "^3.0.0",
         "supports-color": "^8.1.1",
         "tmp": "~0.2.1",
@@ -3489,18 +3484,6 @@
         "node >=0.6.0"
       ]
     },
-    "node_modules/fast-deep-equal": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-      "dev": true
-    },
-    "node_modules/fast-json-stable-stringify": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
-      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
-      "dev": true
-    },
     "node_modules/fast-safe-stringify": {
       "version": "2.0.8",
       "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.8.tgz",
@@ -3820,28 +3803,6 @@
         "node": ">=4.x"
       }
     },
-    "node_modules/har-schema": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
-      "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/har-validator": {
-      "version": "5.1.5",
-      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
-      "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
-      "dev": true,
-      "dependencies": {
-        "ajv": "^6.12.3",
-        "har-schema": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
     "node_modules/has": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
@@ -3982,18 +3943,17 @@
       }
     },
     "node_modules/http-signature": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
-      "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+      "version": "1.3.6",
+      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz",
+      "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==",
       "dev": true,
       "dependencies": {
         "assert-plus": "^1.0.0",
-        "jsprim": "^1.2.2",
-        "sshpk": "^1.7.0"
+        "jsprim": "^2.0.2",
+        "sshpk": "^1.14.1"
       },
       "engines": {
-        "node": ">=0.8",
-        "npm": ">=1.3.7"
+        "node": ">=0.10"
       }
     },
     "node_modules/https-browserify": {
@@ -4414,15 +4374,9 @@
       }
     },
     "node_modules/json-schema": {
-      "version": "0.2.3",
-      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
-      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
-      "dev": true
-    },
-    "node_modules/json-schema-traverse": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
+      "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==",
       "dev": true
     },
     "node_modules/json-stable-stringify": {
@@ -4500,9 +4454,9 @@
       }
     },
     "node_modules/jsprim": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
-      "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz",
+      "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==",
       "dev": true,
       "engines": [
         "node >=0.6.0"
@@ -4510,7 +4464,7 @@
       "dependencies": {
         "assert-plus": "1.0.0",
         "extsprintf": "1.3.0",
-        "json-schema": "0.2.3",
+        "json-schema": "0.4.0",
         "verror": "1.10.0"
       }
     },
@@ -5849,15 +5803,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/oauth-sign": {
-      "version": "0.9.0",
-      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
-      "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
-      "dev": true,
-      "engines": {
-        "node": "*"
-      }
-    },
     "node_modules/object-assign": {
       "version": "4.1.1",
       "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -6283,6 +6228,12 @@
         "react-is": "^16.8.1"
       }
     },
+    "node_modules/proxy-from-env": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz",
+      "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=",
+      "dev": true
+    },
     "node_modules/psl": {
       "version": "1.8.0",
       "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
@@ -7082,6 +7033,11 @@
         "safer-buffer": "^2.0.2",
         "tweetnacl": "~0.14.0"
       },
+      "bin": {
+        "sshpk-conv": "bin/sshpk-conv",
+        "sshpk-sign": "bin/sshpk-sign",
+        "sshpk-verify": "bin/sshpk-verify"
+      },
       "engines": {
         "node": ">=0.10.0"
       }
@@ -7658,15 +7614,6 @@
         "yarn": "*"
       }
     },
-    "node_modules/uri-js": {
-      "version": "4.4.1",
-      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
-      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
-      "dev": true,
-      "dependencies": {
-        "punycode": "^2.1.0"
-      }
-    },
     "node_modules/urix": {
       "version": "0.1.0",
       "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
@@ -8959,9 +8906,9 @@
       }
     },
     "@cypress/request": {
-      "version": "2.88.5",
-      "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.5.tgz",
-      "integrity": "sha512-TzEC1XMi1hJkywWpRfD2clreTa/Z+lOrXDCxxBTBPEcY5azdPi56A6Xw+O4tWJnaJH3iIE7G5aDXZC6JgRZLcA==",
+      "version": "2.88.10",
+      "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz",
+      "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==",
       "dev": true,
       "requires": {
         "aws-sign2": "~0.7.0",
@@ -8971,19 +8918,25 @@
         "extend": "~3.0.2",
         "forever-agent": "~0.6.1",
         "form-data": "~2.3.2",
-        "har-validator": "~5.1.3",
-        "http-signature": "~1.2.0",
+        "http-signature": "~1.3.6",
         "is-typedarray": "~1.0.0",
         "isstream": "~0.1.2",
         "json-stringify-safe": "~5.0.1",
         "mime-types": "~2.1.19",
-        "oauth-sign": "~0.9.0",
         "performance-now": "^2.1.0",
         "qs": "~6.5.2",
         "safe-buffer": "^5.1.2",
         "tough-cookie": "~2.5.0",
         "tunnel-agent": "^0.6.0",
-        "uuid": "^3.3.2"
+        "uuid": "^8.3.2"
+      },
+      "dependencies": {
+        "uuid": {
+          "version": "8.3.2",
+          "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+          "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+          "dev": true
+        }
       }
     },
     "@cypress/xvfb": {
@@ -9074,18 +9027,6 @@
         "indent-string": "^4.0.0"
       }
     },
-    "ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "dev": true,
-      "requires": {
-        "fast-deep-equal": "^3.1.1",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.4.1",
-        "uri-js": "^4.2.2"
-      }
-    },
     "ansi-colors": {
       "version": "4.1.1",
       "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
@@ -9191,9 +9132,9 @@
       "dev": true
     },
     "asn1": {
-      "version": "0.2.4",
-      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
-      "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+      "version": "0.2.6",
+      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
+      "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
       "dev": true,
       "requires": {
         "safer-buffer": "~2.1.0"
@@ -10161,19 +10102,19 @@
       }
     },
     "cypress": {
-      "version": "8.3.0",
-      "resolved": "https://registry.npmjs.org/cypress/-/cypress-8.3.0.tgz",
-      "integrity": "sha512-zA5Rcq8AZIfRfPXU0CCcauofF+YpaU9HYbfqkunFTmFV0Kdlo14tNjH2E3++MkjXKFnv3/pXq+HgxWtw8CSe8Q==",
+      "version": "9.1.1",
+      "resolved": "https://registry.npmjs.org/cypress/-/cypress-9.1.1.tgz",
+      "integrity": "sha512-yWcYD8SEQ8F3okFbRPqSDj5V0xhrZBT5QRIH+P1J2vYvtEmZ4KGciHE7LCcZZLILOrs7pg4WNCqkj/XRvReQlQ==",
       "dev": true,
       "requires": {
-        "@cypress/request": "^2.88.5",
+        "@cypress/request": "^2.88.10",
         "@cypress/xvfb": "^1.2.4",
         "@types/node": "^14.14.31",
         "@types/sinonjs__fake-timers": "^6.0.2",
         "@types/sizzle": "^2.3.2",
         "arch": "^2.2.0",
         "blob-util": "^2.0.2",
-        "bluebird": "^3.7.2",
+        "bluebird": "3.7.2",
         "cachedir": "^2.3.0",
         "chalk": "^4.1.0",
         "check-more-types": "^2.24.0",
@@ -10200,7 +10141,7 @@
         "minimist": "^1.2.5",
         "ospath": "^1.2.2",
         "pretty-bytes": "^5.6.0",
-        "ramda": "~0.27.1",
+        "proxy-from-env": "1.0.0",
         "request-progress": "^3.0.0",
         "supports-color": "^8.1.1",
         "tmp": "~0.2.1",
@@ -10724,18 +10665,6 @@
       "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
       "dev": true
     },
-    "fast-deep-equal": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-      "dev": true
-    },
-    "fast-json-stable-stringify": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
-      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
-      "dev": true
-    },
     "fast-safe-stringify": {
       "version": "2.0.8",
       "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.8.tgz",
@@ -10986,22 +10915,6 @@
       "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
       "dev": true
     },
-    "har-schema": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
-      "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
-      "dev": true
-    },
-    "har-validator": {
-      "version": "5.1.5",
-      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
-      "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
-      "dev": true,
-      "requires": {
-        "ajv": "^6.12.3",
-        "har-schema": "^2.0.0"
-      }
-    },
     "has": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
@@ -11113,14 +11026,14 @@
       "dev": true
     },
     "http-signature": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
-      "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+      "version": "1.3.6",
+      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz",
+      "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==",
       "dev": true,
       "requires": {
         "assert-plus": "^1.0.0",
-        "jsprim": "^1.2.2",
-        "sshpk": "^1.7.0"
+        "jsprim": "^2.0.2",
+        "sshpk": "^1.14.1"
       }
     },
     "https-browserify": {
@@ -11440,15 +11353,9 @@
       "dev": true
     },
     "json-schema": {
-      "version": "0.2.3",
-      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
-      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
-      "dev": true
-    },
-    "json-schema-traverse": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
+      "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==",
       "dev": true
     },
     "json-stable-stringify": {
@@ -11508,14 +11415,14 @@
       }
     },
     "jsprim": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
-      "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz",
+      "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==",
       "dev": true,
       "requires": {
         "assert-plus": "1.0.0",
         "extsprintf": "1.3.0",
-        "json-schema": "0.2.3",
+        "json-schema": "0.4.0",
         "verror": "1.10.0"
       }
     },
@@ -12569,12 +12476,6 @@
         "path-key": "^3.0.0"
       }
     },
-    "oauth-sign": {
-      "version": "0.9.0",
-      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
-      "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
-      "dev": true
-    },
     "object-assign": {
       "version": "4.1.1",
       "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -12902,6 +12803,12 @@
         "react-is": "^16.8.1"
       }
     },
+    "proxy-from-env": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz",
+      "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=",
+      "dev": true
+    },
     "psl": {
       "version": "1.8.0",
       "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
@@ -14041,15 +13948,6 @@
       "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
       "dev": true
     },
-    "uri-js": {
-      "version": "4.4.1",
-      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
-      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
-      "dev": true,
-      "requires": {
-        "punycode": "^2.1.0"
-      }
-    },
     "urix": {
       "version": "0.1.0",
       "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
diff --git a/package.json b/package.json
index da4a3544638ba5564e6adcf22ec18c349982b9a4..233f14ae96dc2365323029b866e21e3bd37d071c 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
   "name": "basic",
   "private": true,
   "devDependencies": {
-    "cypress": "^8.3.0",
+    "cypress": "^9.1.1",
     "cypress-wait-until": "^1.7.1",
     "cypress-tags": "0.2.0",
     "typescript": "^4.3.5",
diff --git a/process/Bulkmail_lib/process.js b/process/Bulkmail_lib/process.js
index 0a4abe43994a04bfa2febe4d21de4e20fa6c8c5c..1ec6cc4ee253e9b502f778d20c28072216ef0219 100644
--- a/process/Bulkmail_lib/process.js
+++ b/process/Bulkmail_lib/process.js
@@ -29,6 +29,7 @@ import("system.db");
 import("system.workflow");
 import("system.tools");
 import("FileUtil_lib");
+import("system.text");
 
 /**
  * Functions for bulk mails.
@@ -91,6 +92,8 @@ BulkMailUtils.sendBulkMail = function (pBulkMailId, pIsTestRun, pUser, pAddition
     {
         pIsTestRun = false;
     }
+    try
+    {
     var sendUserTitle = project.getInstanceConfigValue("custom.bulkmail.user");
     
     var [templateId, subject, emailSender, createActivity, bulkMailName, useTemplateAttachments, mosaicoTemplateId] = 
@@ -106,7 +109,7 @@ BulkMailUtils.sendBulkMail = function (pBulkMailId, pIsTestRun, pUser, pAddition
     var testRecipientData;
     
     var recipientLoadConfig = entities.createConfigForLoadingRows()
-        .fields(["BULKMAILRECIPIENTID", "CONTACT_ID", "EMAIL_ADDRESS", "PERSON_ID", "ORGANISATION_ID"])
+                .fields(["BULKMAILRECIPIENTID", "CONTACT_ID", "EMAIL_ADDRESS", "PERSON_ID", "ORGANISATION_ID", "HASCOMMUNICATIONREJECTION"])
         .entity("BulkMailRecipient_entity")
         .provider("RecipientsToBeMailed")
         .addParameter("BulkMailId_param", pBulkMailId)
@@ -130,7 +133,6 @@ BulkMailUtils.sendBulkMail = function (pBulkMailId, pIsTestRun, pUser, pAddition
             
         if (testRecipientData.length == 0 || recipientData.length == 0 && pUser)
         {
-
             var userData = tools.getUserByAttribute(tools.NAME,pUser,tools.PROFILE_DEFAULT);
 
             if (userData)
@@ -181,15 +183,23 @@ BulkMailUtils.sendBulkMail = function (pBulkMailId, pIsTestRun, pUser, pAddition
         .table()
         .map(function ([placeholder, weblinkId, url, isRedirect])
         {
+            var linkFn
             if (Utils.toBoolean(isRedirect))
             {
-                var linkFn = function (pContactId)
+                linkFn = function (pContactId)
                     {
                         return baseUrl + "link=" + weblinkId + "&log=" + mailLogIds.get(pContactId) + additionalParameterString;
                     }  
                 return new Placeholder(placeholder, Placeholder.types.CALLBACKFUNCTION, linkFn);
             }
-            return new Placeholder(placeholder, Placeholder.types.FIXEDVALUE, url);
+            else
+            {
+                linkFn = function (pContactId)
+                    {
+                        return StringUtils.replaceAll(url, "{@contactid@}", pContactId);
+                    }  
+                return new Placeholder(placeholder, Placeholder.types.CALLBACKFUNCTION, linkFn);
+            }
         });
     
     var webviewFn = function(pContactId)
@@ -227,10 +237,11 @@ BulkMailUtils.sendBulkMail = function (pBulkMailId, pIsTestRun, pUser, pAddition
             let emailAddress = recipient["EMAIL_ADDRESS"];
             let personId = recipient["PERSON_ID"];
             let organisationId = recipient["ORGANISATION_ID"];
+                let hasCommunicationRejection = Utils.toBoolean(recipient["HASCOMMUNICATIONREJECTION"]);
             let email = mails[contactId];
             let mailLogId = mailLogIds.get(contactId);
             let recipientStatus = $KeywordRegistry.bulkMailRecipientStatus$failed();
-            if (email !== undefined && emailAddress && !blacklist.hasContactId(contactId))
+                if (email !== undefined && emailAddress && !blacklist.hasContactId(contactId) && !hasCommunicationRejection)
             {
                 try
                 {
@@ -307,47 +318,6 @@ BulkMailUtils.sendBulkMail = function (pBulkMailId, pIsTestRun, pUser, pAddition
             }
         });
         
-        var updates = [];
-             
-        updates = updates.concat(successIds.map(function (successId)
-        {
-            return  newWhere("BULKMAILRECIPIENT.BULKMAILRECIPIENTID",successId)
-                    .buildUpdateStatement({
-                        "STATUS": $KeywordRegistry.bulkMailRecipientStatus$sent(),
-                        "SENTDATE": sentDate
-                    });
-        }));
-        
-        updates = updates.concat(failedIds.map(function (failedId)
-        {
-            return  newWhere("BULKMAILRECIPIENT.BULKMAILRECIPIENTID",failedId)
-                    .buildUpdateStatement({
-                        "STATUS": $KeywordRegistry.bulkMailRecipientStatus$failed(),
-                        "SENTDATE": sentDate
-                    });
-        }));
-        
-        updates = updates.concat(bouncedSoftIds.map(function (bouncedSoftId)
-        {
-            return  newWhere("BULKMAILRECIPIENT.BULKMAILRECIPIENTID",bouncedSoftId)
-                    .buildUpdateStatement({
-                        "STATUS": $KeywordRegistry.bulkMailRecipientStatus$softBounce(),
-                        "SENTDATE": sentDate
-                    });
-        }));
-        
-        updates = updates.concat(bouncedHardIds.map(function (bouncedHardId)
-        {
-            return  newWhere("BULKMAILRECIPIENT.BULKMAILRECIPIENTID",bouncedHardId)
-                    .buildUpdateStatement({
-                        "STATUS": $KeywordRegistry.bulkMailRecipientStatus$hardBounce(),
-                        "SENTDATE": sentDate
-                    });
-        }));
-
-        db.updates(updates);
-            
-            
         newWhere("MAIL_RUN.MAIL_RUNID", mailrunId)
             .updateFields({
                 "STATUS": $KeywordRegistry.bulkMailStatus$sent(),
@@ -420,14 +390,71 @@ BulkMailUtils.sendBulkMail = function (pBulkMailId, pIsTestRun, pUser, pAddition
         }
         newWhere("MAIL_RUN.MAIL_RUNID",mailrunId)
             .updateData(true,"MAIL_RUN",["STATUS","DATE_RUN_FINISHED"],null,[$KeywordRegistry.bulkMailStatus$sent(),vars.get("$sys.date")]);
-
     }
+    }
+    catch(ex)
+    {
+        logging.log(ex);
+        newWhere("MAIL_RUN.MAIL_RUNID",mailrunId)
+                .updateData(true,"MAIL_RUN",["STATUS","DATE_RUN_FINISHED"],null,[$KeywordRegistry.bulkMailStatus$failed(),vars.get("$sys.date")]);
+        if(!pIsTestRun)
+        {
+            newWhere("BULKMAIL.BULKMAILID", pBulkMailId)
+                    .updateFields({
+                        "STATUS": $KeywordRegistry.bulkMailStatus$failed()
+                    });  
+        }
+    }
+    finally
+    {
+        if(successIds && failedIds && bouncedSoftIds && bouncedHardIds)
+        {
+            var updates = [];
         
+            updates = updates.concat(successIds.map(function (successId)
+            {
+                return  newWhere("BULKMAILRECIPIENT.BULKMAILRECIPIENTID",successId)
+                        .buildUpdateStatement({
+                            "STATUS": $KeywordRegistry.bulkMailRecipientStatus$sent(),
+                            "SENTDATE": sentDate
+                        });
+            }));
+
+            updates = updates.concat(failedIds.map(function (failedId)
+            {
+                return  newWhere("BULKMAILRECIPIENT.BULKMAILRECIPIENTID",failedId)
+                        .buildUpdateStatement({
+                            "STATUS": $KeywordRegistry.bulkMailRecipientStatus$failed(),
+                            "SENTDATE": sentDate
+                        });
+            }));
+
+            updates = updates.concat(bouncedSoftIds.map(function (bouncedSoftId)
+            {
+                return  newWhere("BULKMAILRECIPIENT.BULKMAILRECIPIENTID",bouncedSoftId)
+                        .buildUpdateStatement({
+                            "STATUS": $KeywordRegistry.bulkMailRecipientStatus$softBounce(),
+                            "SENTDATE": sentDate
+                        });
+            }));
+
+            updates = updates.concat(bouncedHardIds.map(function (bouncedHardId)
+            {
+                return  newWhere("BULKMAILRECIPIENT.BULKMAILRECIPIENTID",bouncedHardId)
+                        .buildUpdateStatement({
+                            "STATUS": $KeywordRegistry.bulkMailRecipientStatus$hardBounce(),
+                            "SENTDATE": sentDate
+                        });
+            }));
+
+            db.updates(updates);
     return {
         sucessful : successIds.length,
         failed : failedIds.length
     };
 }
+    }   
+}
 
 /**
  * Opens a context to select a bulk mail to add recipients to.<br>
@@ -608,6 +635,24 @@ BulkMailUtils.isRecipient = function (pBulkMailId, pContactId, pRecipientId)
                 .cell() != "0"; //TODO: is there a way exists could be used?
 }
 
+/**
+ * Checks if a bulk mail still has pending recipients.<br>
+ * 
+ * @param {String} pBulkMailId                      <p>
+ *                                                  The id of the bulk mail.<br>
+ * @return {boolean}                                <p>
+ *                                                  True, if the contact is a recipient.<br>
+ */
+BulkMailUtils.hasPendingRecipient = function (pBulkMailId)
+{
+    return new SqlBuilder().selectCount()
+                .from("BULKMAILRECIPIENT")
+                .where("BULKMAILRECIPIENT.STATUS", $KeywordRegistry.bulkMailRecipientStatus$pending())
+                .and("BULKMAILRECIPIENT.BULKMAIL_ID", pBulkMailId)
+                .cell() != "0";
+}
+
+
 /**
  * Opens the BulkMail context in new mode.<br>
  * 
@@ -883,11 +928,11 @@ BulkMailUtils.isValidTemplateType = function (pTemplateType)
  * @param {String} pStatus              <p>
  *                                      The key id of the current status.<br>
  * @return {Boolean}                    <p>
- *                                      True if the status is "sent" or "sending".<br> 
+ *                                      True if the status is "sent","failed" or "sending".<br> 
  */
 BulkMailUtils.isStatusSendingOrSent = function (pStatus)
 {
-    return pStatus == $KeywordRegistry.bulkMailStatus$sent() || pStatus == $KeywordRegistry.bulkMailStatus$beingSent()
+    return pStatus == $KeywordRegistry.bulkMailStatus$sent() || pStatus == $KeywordRegistry.bulkMailStatus$beingSent() || pStatus == $KeywordRegistry.bulkMailStatus$failed();
 }
 
 /**
@@ -1012,15 +1057,22 @@ BulkMailUtils.getEmlFile = function(pBulkMailId,pMailRunId, pMailLogId)
  *                                      The id of the link.<br>
  * @param {String} pBaseUrl          <p>
  *                                      The base url for relative links<br>                                      
- *                                      
+ * @param {String} pMailLogId        <p>
+ *                                      The mail log id for contact id replacement<br>                                          
  * @return {String}                 <p>
  *                                      The url<br>                                          
  **/
-BulkMailUtils.getRedirectLink = function(pLinkId, pBaseUrl)
+BulkMailUtils.getRedirectLink = function(pLinkId, pBaseUrl, pMailLogId)
 {
-    if (pLinkId)
+    if (pLinkId && pMailLogId)
     {
+        var contactId = newSelect("CONTACT_ID")
+                        .from("MAIL_LOG")
+                        .where("MAIL_LOG.MAIL_LOGID", pMailLogId)
+                        .cell();
         var link = newSelect("WEBLINK.URL").from("WEBLINK").where("WEBLINK.WEBLINKID", pLinkId).cell();
+        
+        link = StringUtils.replaceAll(link, "{@contactid@}", contactId);
         if(link[0] == "/")
         {
             link = pBaseUrl + link;
diff --git a/process/KeywordRegistry_basic/process.js b/process/KeywordRegistry_basic/process.js
index 29a6f3dd8ff73eb0df2a0a3707be5059ae53c926..93e5735ff4038e58ad63ddb032c534cc819cf28a 100644
--- a/process/KeywordRegistry_basic/process.js
+++ b/process/KeywordRegistry_basic/process.js
@@ -289,6 +289,7 @@ $KeywordRegistry.bulkMailStatus$beingSent = function(){return "BULKMAILBEINGSENT
 $KeywordRegistry.bulkMailStatus$sent = function(){return "BULKMAILSENT";};
 $KeywordRegistry.bulkMailStatus$planned = function(){return "BULKMAILPLANNED";};
 $KeywordRegistry.bulkMailStatus$missed = function(){return "BULKMAILMISSED";};
+$KeywordRegistry.bulkMailStatus$failed = function(){return "BULKMAILFAILED";};
 $KeywordRegistry.bulkMailStatus$adHoc = function(){return "BULKMAILADHOC";};
 
 $KeywordRegistry.serialLetterStatus = function(){return "SerialLetterStatus";};
@@ -311,8 +312,6 @@ $KeywordRegistry.orderType$credit = function(){return "ORDTYPECRED";};
 $KeywordRegistry.orderType$cancellation = function(){return "ORDTYPECANC";};
 $KeywordRegistry.dunningLevel = function(){return "DunningLevel";};
 
-$KeywordRegistry.bulkMailProblem = function(){return "BulkMailProblem";};
-
 $KeywordRegistry.importStatus = function(){return "ImportStatus";};
 $KeywordRegistry.importStatus$created = function(){return "CREATED";};
 $KeywordRegistry.importStatus$loaded = function(){return "LOADED";};
@@ -397,6 +396,7 @@ $KeywordRegistry.discussionStatus$closed = function(){return "CLOSED";}
 $KeywordRegistry.knowledgeType = function(){return "KnowledgeType";}
 $KeywordRegistry.knowledgeType$knowledgeBase = function(){return "KNOWLEDGEBASE";}
 $KeywordRegistry.knowledgeType$editorial = function(){return "EDITORIAL";}
+$KeywordRegistry.knowledgeType$solution = function(){return "SOLUTION";}
 
 $KeywordRegistry.knowledgePublishLevel = function(){return "KnowledgePublishLevel";}
 $KeywordRegistry.knowledgePublishLevel$internal = function(){return "INTERNAL";}
@@ -424,6 +424,7 @@ $KeywordRegistry.inboxFilterComponent$body = function(){return "BODY";};
 $KeywordRegistry.inboxFilterComponent$subject = function(){return "SUBJECT";};
 $KeywordRegistry.inboxFilterComponent$sender = function(){return "SENDER";};
 $KeywordRegistry.inboxFilterComponent$subject_body = function(){return "SUBJECT_BODY";};
+$KeywordRegistry.inboxFilterComponent$recipient = function(){return "RECIPIENT";};
 
 $KeywordRegistry.inboxFilterTarget = function(){return "InboxFilterTarget";};
 $KeywordRegistry.inboxFilterTarget$category = function(){return "CATEGORY";};
diff --git a/process/Report_lib/process.js b/process/Report_lib/process.js
index ebe7365ef7d16d8133747ce34bf3c95c6ecd9fc1..c5daa5318d1a1fe9392ba0295b1ca434db0c322d 100644
--- a/process/Report_lib/process.js
+++ b/process/Report_lib/process.js
@@ -47,7 +47,8 @@ ReportData.begin = function(pFieldNames)
  */
 ReportData.prototype.add = function(pValues) 
 {        
-    for (let i = 0; i < pValues.length; i++) {
+    for (let i = 0; i < pValues.length; i++) 
+    {
         if (this._reportFields.length == pValues[i].length) 
         {
             this._reportValues.push(pValues[i]);
@@ -81,6 +82,16 @@ ReportData.prototype.getReportValues = function()
     return this._reportValues;
 }
 
+/**
+ * get the number of report fields
+ * 
+ * @return {Number} length of report fields
+ */
+ReportData.prototype.size = function ()
+{
+    return this._reportFields.length;
+}
+
 /**
 * create a Report
 * @param {String} pReportName 
diff --git a/process/mailbridge_service/process.js b/process/mailbridge_service/process.js
index c26b4a2792708a6fc8d71856308bf0b7f4d2aa10..bd8c21cd139dd143528bfb31e50cbb23c04e33b7 100644
--- a/process/mailbridge_service/process.js
+++ b/process/mailbridge_service/process.js
@@ -356,8 +356,7 @@ TicketMailbridgeUtils.saveAttachement  = function(pUid, pMailObject, pType)
 TicketMailbridgeUtils.findTicket = function(pSubject, pInboxObject, pMailObj)
 {
     var ticketID = "";
-    
-    
+     
     if(pSubject != undefined && pSubject != "")
     {
         if(pSubject.match(this.codeRegex))
@@ -388,9 +387,8 @@ TicketMailbridgeUtils.findTicket = function(pSubject, pInboxObject, pMailObj)
                         ticketData = ticketData[0];
                     }
                 } 
-                
                 else 
-
+                {
                     ticketData = ticketData[0];
                 }
                 
@@ -405,8 +403,8 @@ TicketMailbridgeUtils.findTicket = function(pSubject, pInboxObject, pMailObj)
              
                     if(finalDate < vars.get("$sys.date")) // -- > new Ticket -> Problem is old Customernumber
                     {
-                        // Call function for using filer
-                        TicketMailbridgeUtils.useFiler(pInboxObject, pMailObj, true);
+                        // Call function for using filter
+                        TicketMailbridgeUtils.useFilter(pInboxObject, pMailObj, true);
                     }
                     else // --> Reopen
                     {
@@ -536,8 +534,7 @@ TicketMailbridgeUtils.findTicket = function(pSubject, pInboxObject, pMailObj)
             }   
         }
     } 
-    return ticketID;
-    
+    return ticketID;  
 }
     
             
@@ -796,7 +793,7 @@ TicketMailbridgeUtils.createTicket = function(pMailObject, pFilterResult, pInbox
 /**
  * Apply Filter on each Part
  */
-TicketMailbridgeUtils.useFiler = function(pInboxObj, pMailObject, pTicketfromOldOne)
+TicketMailbridgeUtils.useFilter = function(pInboxObj, pMailObject, pTicketfromOldOne)
 {
    
     var scoreObject = {};
@@ -818,17 +815,17 @@ TicketMailbridgeUtils.useFiler = function(pInboxObj, pMailObject, pTicketfromOld
          
         switch(component) // Where to search?
         {
-            case "BODY":
+            case $KeywordRegistry.inboxFilterComponent$body():
                 componentType = pMailObject[mail.MAIL_TEXT] || " ";
                 break;
-            case "SUBJECT":
-            case "SUBJECT_BODY":
+            case $KeywordRegistry.inboxFilterComponent$subject():
+            case $KeywordRegistry.inboxFilterComponent$subject_body():
                 componentType = pMailObject[mail.MAIL_SUBJECT] || " ";
                 break;
-            case "RECIPIENT":
+            case $KeywordRegistry.inboxFilterComponent$recipient():
                 componentType = pMailObject[mail.MAIL_RECIPIENT];
                 break;
-            case "SENDER":
+            case $KeywordRegistry.inboxFilterComponent$sender():
                 componentType = pMailObject[mail.MAIL_SENDER];
                 break;
             default:
@@ -845,7 +842,7 @@ TicketMailbridgeUtils.useFiler = function(pInboxObj, pMailObject, pTicketfromOld
             categoriesFormatted += translate.text("Search term") + " '" +   searchTerm.toString() +"' " + translate.text("determined in") + " "+ KeywordUtils.getViewValue($KeywordRegistry.inboxFilterComponent(), component) + "\n";
         }
         // If subject and body are selected for search, repeat process with body
-        if (component == "SUBJECT_BODY")
+        if (component == $KeywordRegistry.inboxFilterComponent$subject_body())
         {
             componentType = pMailObject[mail.MAIL_TEXT]
             var score = text.analyzeText(componentType, patternArr, false);
@@ -879,15 +876,19 @@ TicketMailbridgeUtils.useAttributeFilter = function(pInboxObj, pTicketID, pMailO
     var IDX_EXISTING_ATTRS = 1;
     var IDX_ATTRIBUTEID = 0;
     var attributeCountObj = {};
+    var logMessage = [];
+    
     
-    if (attributeFilters.length > 0)
-    {
     // searches for the appropriate fix attribute filter ids
-    var resultCheckFixAttrFilters = TicketMailbridgeUtils.checkAttributeFilters(attributeFilters, pMailObject);
-    matchedAttributeFilterIds = resultCheckFixAttrFilters[0];
-    var logMessage = resultCheckFixAttrFilters[1];    
+    if(attributeFilters.length > 0)
+    {
+        var resultCheckFixAttrFilters = TicketMailbridgeUtils.checkAttributeFilters(attributeFilters, pMailObject, $KeywordRegistry.attributeFilterComparisonMethod$fix());
+        resultCheckFixAttrFilters.forEach(function(FixAttrFilter){
+            matchedAttributeFilterIds.push(FixAttrFilter[0][0]);
+            logMessage.push(FixAttrFilter[1]);
+        });
     }
-    
+
     if(matchedAttributeFilterIds.length > 0)
     {
         // Fetches the stored attributes of the matching attribute filter
@@ -896,7 +897,7 @@ TicketMailbridgeUtils.useAttributeFilter = function(pInboxObj, pTicketID, pMailO
                     .where("AB_ATTRIBUTERELATION.OBJECT_ROWID", matchedAttributeFilterIds, SqlBuilder.IN())
                     .and("AB_ATTRIBUTERELATION.OBJECT_TYPE", "AttributeFilter")
                     .table();
-        
+                    
         // creates the max count object so that the maximum number of the attribute can be checked
         if(attributesToInsert.length > 0)
         {
@@ -951,7 +952,8 @@ TicketMailbridgeUtils.useAttributeFilter = function(pInboxObj, pTicketID, pMailO
                     
                 }
             });
-            new db.inserts(inserts);
+            db.inserts(inserts);
+
         }
     }
     if(inserts.length > 0)
@@ -966,15 +968,16 @@ TicketMailbridgeUtils.useAttributeFilter = function(pInboxObj, pTicketID, pMailO
 * @param pAttributeFilters {Array}      the detected attribute filters
 * @param pMailObject {Object}           the inbox object created in funktion TicketMailbridgeUtils.getInboxInformation()
 * 
-* @return {Array}                       structure: [[attributeFilterId], logMessage]
+* @return {Array}                       structure: [[attributeFilterId, logMessage]]
 */
 TicketMailbridgeUtils.checkAttributeFilters = function(pAttributeFilters, pMailObject)
 {
-    var filterResult;
+    var filterResult = [];
     
     pAttributeFilters.forEach(function([attributeFilterId, component, searchterm])
     {
         var textToSearch;
+        var tempFilterResult;
         searchterm = searchterm || "";
         
         switch(component) // Where to search?
@@ -982,7 +985,8 @@ TicketMailbridgeUtils.checkAttributeFilters = function(pAttributeFilters, pMailO
             case $KeywordRegistry.inboxFilterComponent$body():
                 textToSearch = pMailObject[mail.MAIL_TEXT] || " ";
                 break;
-            case $KeywordRegistry.inboxFilterComponent$subject():
+            case $KeywordRegistry.inboxFilterComponent$subject(),
+                 $KeywordRegistry.inboxFilterComponent$subject_body():
                 textToSearch = pMailObject[mail.MAIL_SUBJECT] || " ";
                 break;
             case $KeywordRegistry.inboxFilterComponent$sender():
@@ -993,7 +997,22 @@ TicketMailbridgeUtils.checkAttributeFilters = function(pAttributeFilters, pMailO
                 break;
         }
         textToSearch = textToSearch || "";
-        filterResult = TicketMailbridgeUtils.checkFixAttributeFilters(searchterm, attributeFilterId, textToSearch, component);
+        tempFilterResult = TicketMailbridgeUtils.checkFixAttributeFilters(searchterm, attributeFilterId, textToSearch, component);
+        if(tempFilterResult[0] != "")
+        {
+            filterResult.push(tempFilterResult);
+        }
+        // If subject and body are selected for search, repeat process with body
+        if(component == $KeywordRegistry.inboxFilterComponent$subject_body())
+        {
+            textToSearch = pMailObject[mail.MAIL_TEXT] || " ";
+            textToSearch = textToSearch || "";
+            tempFilterResult = TicketMailbridgeUtils.checkFixAttributeFilters(searchterm, attributeFilterId, textToSearch, component);
+            if(tempFilterResult[0] != "")
+            {
+                filterResult.push(tempFilterResult);
+            }
+        }
     });
     
     return filterResult;
@@ -1007,21 +1026,21 @@ TicketMailbridgeUtils.checkAttributeFilters = function(pAttributeFilters, pMailO
 * @param pTextToSearch {String}        the mail text
 * @param pComponent {String}           the component being searched
 * 
-* @return {Array}                      structure: [[attributeFilterId], logMessage]
+* @return {Array}                      structure: [attributeFilterId, logMessage]
 */
 TicketMailbridgeUtils.checkFixAttributeFilters = function(pSearchterm, pAttributeFilterId, pTextToSearch, pComponent)
 {
     var matchedAttributeFilterIds = [];
-    var logMessageAttributeFiilter = "";
+    var logMessageAttributeFilter = "";
             
         if(pTextToSearch.match(new RegExp(pSearchterm, "g")) != null)
         {
-            logMessageAttributeFiilter += translate.text("Search term") + " '" + pSearchterm +"' " + translate.text("determined in") + " " + KeywordUtils.getViewValue($KeywordRegistry.inboxFilterComponent(), pComponent) + "\n";
+            logMessageAttributeFilter += translate.text("Search term") + " '" + pSearchterm +"' " + translate.text("determined in") + " " + KeywordUtils.getViewValue($KeywordRegistry.inboxFilterComponent(), pComponent) + "\n";
            
             matchedAttributeFilterIds.push(pAttributeFilterId);
         }
     
-    return [matchedAttributeFilterIds, logMessageAttributeFiilter];
+    return [matchedAttributeFilterIds, logMessageAttributeFilter];
 }
 
 /**
@@ -1089,6 +1108,6 @@ var inboxObj = TicketMailbridgeUtils.getInboxInformationAllRecipients(recipients
 if(TicketMailbridgeUtils.findTicket(mailObj[mail.MAIL_SUBJECT], inboxObj, mailObj) == "")
 {
     // Call function for using filter
-    TicketMailbridgeUtils.useFiler(inboxObj, mailObj);
+    TicketMailbridgeUtils.useFilter(inboxObj, mailObj);
 }
  
\ No newline at end of file
diff --git a/process/mosaico_rest/mosaico_rest.aod b/process/mosaico_rest/mosaico_rest.aod
index 25ec4112454dff020788ab3953c797d1925c3a69..10d6c4f2a864eb15b7fb62d85faa73d5a2f92a4c 100644
--- a/process/mosaico_rest/mosaico_rest.aod
+++ b/process/mosaico_rest/mosaico_rest.aod
@@ -8,9 +8,6 @@
   <style>REST</style>
   <restAcceptedMimeType>application/json</restAcceptedMimeType>
   <restDeliveredMimeType>application/json</restDeliveredMimeType>
-  <loginTypeId>
-    <element>internal.none</element>
-  </loginTypeId>
   <jditoWebserviceUser>Admin</jditoWebserviceUser>
   <alias>Data_alias</alias>
   <variants>
diff --git a/process/redirect_rest/process.js b/process/redirect_rest/process.js
index eb1da60e6fc71fb4c8eca92f8bf88c0a795b13c5..026a60e324caa25c0bd1cd15364a375b075e3ed0 100644
--- a/process/redirect_rest/process.js
+++ b/process/redirect_rest/process.js
@@ -16,7 +16,7 @@ function restget (pRequest)
     var workflowKey = request.query.workflowkey
     var ipAddress = BulkMailUtils.getIpAddressFromHeader(request.header);
     var origin =request.header["X-forwarded-proto"]+"://"+request.header["X-forwarded-host"]
-    var redirectLink = BulkMailUtils.getRedirectLink(linkId, origin);
+    var redirectLink = BulkMailUtils.getRedirectLink(linkId, origin, mailLogId);
     var UserAgentObject = new UAParser(request.header["User-agent"]).getResult();
 
     BulkMailUtils.insertClick(mailLogId, ipAddress, linkId, UserAgentObject.browser.name, UserAgentObject.os.name, UserAgentObject.device.type);