diff --git a/entity/Favorite_entity/Favorite_entity.aod b/entity/Favorite_entity/Favorite_entity.aod
index 73dce01c7e4211209cb9737193b8c94d5a41587c..30d6d10d52ca35fbe128fabe38c54d100f8f111f 100644
--- a/entity/Favorite_entity/Favorite_entity.aod
+++ b/entity/Favorite_entity/Favorite_entity.aod
@@ -2,7 +2,13 @@
 <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14">
   <name>Favorite_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <recordContainer>dbRecordContainer</recordContainer>
+  <icon>VAADIN:STAR</icon>
+  <title>Favorite</title>
+  <grantCreate v="true" />
+  <grantUpdate v="true" />
+  <grantDelete v="true" />
+  <titlePlural>Favorites</titlePlural>
+  <recordContainer>jDitoRecordContainer</recordContainer>
   <entityFields>
     <entityProvider>
       <name>#PROVIDER</name>
@@ -18,7 +24,6 @@
     </entityField>
     <entityField>
       <name>ROW_ID</name>
-      <onValueChange>%aditoprj%/entity/Favorite_entity/entityfields/row_id/onValueChange.js</onValueChange>
     </entityField>
     <entityField>
       <name>OBJECT_TYPE</name>
@@ -37,88 +42,50 @@
       <name>TITLE</name>
       <valueProcess>%aditoprj%/entity/Favorite_entity/entityfields/title/valueProcess.js</valueProcess>
     </entityField>
-    <entityConsumer>
-      <name>Offers</name>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Offer_entity</entityName>
-        <fieldName>#PROVIDER</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>OfferOriginal_Id_param</name>
-          <valueProcess>%aditoprj%/entity/Favorite_entity/entityfields/offers/children/offeroriginal_id_param/valueProcess.js</valueProcess>
-        </entityParameter>
-      </children>
-    </entityConsumer>
     <entityField>
-      <name>CONSUMED_OFFER</name>
-      <consumer>Offers</consumer>
-      <onValueChangeTypes>
-        <element>MASK</element>
-        <element>PROCESS</element>
-        <element>PROCESS_SETVALUE</element>
-      </onValueChangeTypes>
-    </entityField>
-    <entityField>
-      <name>TITLE_RELATION</name>
+      <name>PICTURE</name>
+      <title>favos</title>
+      <contentType>IMAGE</contentType>
     </entityField>
   </entityFields>
   <recordContainers>
-    <dbRecordContainer>
-      <name>dbRecordContainer</name>
-      <alias>_____SYSTEMALIAS</alias>
-      <isReadOnly v="true" />
-      <hasDependentRecords v="true" />
-      <fromClauseProcess>%aditoprj%/entity/Favorite_entity/recordcontainers/dbrecordcontainer/fromClauseProcess.js</fromClauseProcess>
-      <conditionProcess>%aditoprj%/entity/Favorite_entity/recordcontainers/dbrecordcontainer/conditionProcess.js</conditionProcess>
-      <orderClauseProcess>%aditoprj%/entity/Favorite_entity/recordcontainers/dbrecordcontainer/orderClauseProcess.js</orderClauseProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>ad8d8f1b-d086-433f-80b7-116b99a983af</name>
-          <tableName>ASYS_RECORD</tableName>
-          <primaryKey>ID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="true" />
-        </linkInformation>
-        <linkInformation>
-          <name>d4bb5cdf-dc73-4906-b4c4-40c963cbdbc1</name>
-          <tableName>ASYS_RECORDGROUP</tableName>
-          <primaryKey>ID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-      </linkInformation>
+    <jDitoRecordContainer>
+      <name>jDitoRecordContainer</name>
+      <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
+      <isFilterable v="true" />
+      <isSortable v="true" />
+      <contentProcess>%aditoprj%/entity/Favorite_entity/recordcontainers/jditorecordcontainer/contentProcess.js</contentProcess>
+      <rowCountProcess>%aditoprj%/entity/Favorite_entity/recordcontainers/jditorecordcontainer/rowCountProcess.js</rowCountProcess>
+      <onDelete>%aditoprj%/entity/Favorite_entity/recordcontainers/jditorecordcontainer/onDelete.js</onDelete>
       <recordFieldMappings>
-        <dbRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>GROUP_ID.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>GROUP_TITLE.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>GROUP_TYPE.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>OBJECT_TYPE.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>PICTURE.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>ROW_ID.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>TITLE.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
           <name>UID.value</name>
-          <recordfield>ASYS_RECORD.ID</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
           <name>USER_ID.value</name>
-          <recordfield>ASYS_RECORDGROUP.USER_ID</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>ROW_ID.value</name>
-          <recordfield>ASYS_RECORD.ROW_ID</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>OBJECT_TYPE.value</name>
-          <recordfield>ASYS_RECORD.OBJECT_TYPE</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>GROUP_TYPE.value</name>
-          <recordfield>ASYS_RECORDGROUP.GROUP_TYPE</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>GROUP_TITLE.value</name>
-          <recordfield>ASYS_RECORDGROUP.TITLE</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>GROUP_ID.value</name>
-          <recordfield>ASYS_RECORDGROUP.ID</recordfield>
-        </dbRecordFieldMapping>
+        </jDitoRecordFieldMapping>
       </recordFieldMappings>
-    </dbRecordContainer>
+    </jDitoRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/Favorite_entity/entityfields/row_id/onValueChange.js b/entity/Favorite_entity/entityfields/row_id/onValueChange.js
deleted file mode 100644
index 4de49031452a0092d3e0c50046e48de18165a7dc..0000000000000000000000000000000000000000
--- a/entity/Favorite_entity/entityfields/row_id/onValueChange.js
+++ /dev/null
@@ -1,136 +0,0 @@
-import("system.logging");
-import("Communication_lib");
-import("Sql_lib");
-import("system.vars");
-import("system.neon");
-import("system.entities");
-
-var rowid = vars.get("local.value");
-if (rowid)
-{
-    var titleFieldName;
-    var nameResult;
-    var relationResult;
-    
-    var config = entities.createConfigForLoadingRows();
-    config.uid(vars.get("$field.ROW_ID"));
-    
-    if(vars.get("$field.OBJECT_TYPE") == "Person")
-    {
-        titleFieldNames = ["FULL_NAME_fieldGroup"];
-        config.entity("Person_entity");
-        config.fields(titleFieldNames)
-        nameResult = entities.getRow(config)[titleFieldNames[0]];
-    }
-    
-    if(vars.get("$field.OBJECT_TYPE") == "Organisation")
-    {
-        titleFieldNames = ["NAME"];
-        config.entity("Organisation_entity");
-        config.fields(titleFieldNames);
-        nameResult = entities.getRow(config)[titleFieldNames[0]];
-    }
-    
-    if(vars.get("$field.OBJECT_TYPE") == "Offer")
-    {
-        titleFieldNames = ["FullOfferCode"];
-        config.entity("Offer_entity");
-        config.fields(titleFieldNames);
-        nameResult = entities.getRow(config)[titleFieldNames[0]];
-    }
-    
-    if(vars.get("$field.OBJECT_TYPE") == "Contract")
-    {
-        titleFieldNames = ["CONTRACTCODE"];
-        config.entity("Contract_entity");
-        config.fields(titleFieldNames);
-        nameResult = entities.getRow(config)[titleFieldNames[0]];
-    }
-    
-    if(vars.get("$field.OBJECT_TYPE") == "Product")
-    {
-        titleFieldNames = ["PRODUCTCODE", "PRODUCTNAME"];
-        config.entity("Contract_entity");
-        config.fields(titleFieldNames);
-        nameResult = entities.getRow(config)[titleFieldNames[0]];
-        relationResult = entities.getRow(config)[titleFieldNames[1]];
-    }
-    
-    if(vars.get("$field.OBJECT_TYPE") == "Productprice")
-    {
-        titleFieldNames = ["PRICELIST", "CONTACT_ID"];
-        config.entity("Productprice_entity");
-        config.fields(titleFieldNames);
-        var row = entities.getRow(config);
-        nameResult = row[titleFieldNames[0]];
-        
-//        titleFieldNames = ["PERSON_TITLE"];
-//        config.entity("Contact_entity");
-//        config.uid(row[titleFieldNames[1]]);
-//        config.fields(titleFieldNames);
-//        relationResult = entities.getRow(config)[titleFieldNames[0]];
-    }
-    
-    if(vars.get("$field.OBJECT_TYPE") == "Salesproject")
-    {
-        titleFieldNames = ["PROJECTCODE"];
-        config.entity("Salesproject_entity");
-        config.fields(titleFieldNames);
-        nameResult = entities.getRow(config)[titleFieldNames[0]];
-    }
-    
-    if(vars.get("$field.OBJECT_TYPE") == "SupportTicket")
-    {
-        titleFieldNames = ["TASK_SUBJECT"];
-        config.entity("SupportTicket_entity");
-        config.fields(titleFieldNames);
-        nameResult = entities.getRow(config)[titleFieldNames[0]];
-    }
-    
-    if(vars.get("$field.OBJECT_TYPE") == "Leadimport")
-    {
-        titleFieldNames = ["NAME"];
-        config.entity("Leadimport_entity");
-        config.fields(titleFieldNames);
-        nameResult = entities.getRow(config)[titleFieldNames[0]];
-    }
-    
-    if(vars.get("$field.OBJECT_TYPE") == "ExportTemplate")
-    {
-        titleFieldNames = ["TITLE"];
-        config.entity("ExportTemplate_entity");
-        config.fields(titleFieldNames);
-        nameResult = entities.getRow(config)[titleFieldNames[0]];
-    }
-    
-    if(vars.get("$field.OBJECT_TYPE") == "Employee")
-    {
-        titleFieldNames = ["TITLE"];
-        config.entity("Employee_entity");
-        config.fields(titleFieldNames);
-        nameResult = entities.getRow(config)[titleFieldNames[0]];
-    }
-    
-    if(vars.get("$field.OBJECT_TYPE") == "DocumentTemplate")
-    {
-        titleFieldNames = ["NAME"];
-        config.entity("DocumentTemplate_entity");
-        config.fields(titleFieldNames);
-        nameResult = entities.getRow(config)[titleFieldNames[0]];
-    }
-    
-    if(vars.get("$field.OBJECT_TYPE") == "Campaign")
-    {
-        titleFieldNames = ["NAME"];
-        config.entity("Campaign_entity");
-        config.fields(titleFieldNames);
-        nameResult = entities.getRow(config)[titleFieldNames[0]];
-    }
-    
-    
-
-    neon.setFieldValues({
-        "$field.TITLE" : nameResult,
-        "$field.TITLE_RELATION" : relationResult != undefined && relationResult != null && relationResult != "" ? relationResult : ""
-    });
-}
\ No newline at end of file
diff --git a/entity/Favorite_entity/recordcontainers/dbrecordcontainer/conditionProcess.js b/entity/Favorite_entity/recordcontainers/dbrecordcontainer/conditionProcess.js
deleted file mode 100644
index 94f570ca54105be1b7183ae2618d92536573ffbd..0000000000000000000000000000000000000000
--- a/entity/Favorite_entity/recordcontainers/dbrecordcontainer/conditionProcess.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import("Sql_lib");
-import("system.result");
-import("system.vars");
-import("system.util");
-import("system.tools");
-
-var user = tools.getCurrentUser();
-var userid = user["name"];
-
-var cond = newWhereIfSet("ASYS_RECORDGROUP.USER_ID", userid)
-
-result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/Favorite_entity/recordcontainers/dbrecordcontainer/fromClauseProcess.js b/entity/Favorite_entity/recordcontainers/dbrecordcontainer/fromClauseProcess.js
deleted file mode 100644
index f89516ba427d966c0a6171af32d9adf48fde1f14..0000000000000000000000000000000000000000
--- a/entity/Favorite_entity/recordcontainers/dbrecordcontainer/fromClauseProcess.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import("system.result");
-
-result.string("ASYS_RECORD left join ASYS_RECORDGROUP on ASYS_RECORD.RECORDGROUP_ID = ASYS_RECORDGROUP.ID");
\ No newline at end of file
diff --git a/entity/Favorite_entity/recordcontainers/dbrecordcontainer/orderClauseProcess.js b/entity/Favorite_entity/recordcontainers/dbrecordcontainer/orderClauseProcess.js
deleted file mode 100644
index 638f4d14222915e485918dab175b033643a6cae7..0000000000000000000000000000000000000000
--- a/entity/Favorite_entity/recordcontainers/dbrecordcontainer/orderClauseProcess.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import("system.result");
-import("system.db");
-
-result.object({
-    "ASYS_RECORD.OBJECT_TYPE": db.DESCENDING,
-    "ASYS_RECORDGROUP.TITLE": db.DESCENDING
-    });
\ No newline at end of file
diff --git a/entity/Favorite_entity/recordcontainers/jditorecordcontainer/contentProcess.js b/entity/Favorite_entity/recordcontainers/jditorecordcontainer/contentProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a6ab741bed67275aa7af4647ced3a0b28a116261
--- /dev/null
+++ b/entity/Favorite_entity/recordcontainers/jditorecordcontainer/contentProcess.js
@@ -0,0 +1,66 @@
+import("system.vars");
+import("Context_lib");
+import("system.result");
+import("system.favorite");
+import("system.tools");
+import("system.entities");
+
+var loadConfig;
+
+
+if(vars.get("$sys.selection") && vars.get("$sys.selection").length != 0)
+{
+    var selected = vars.get("$sys.selection");
+    var selectedFavos = [];
+    
+    for(i = 0; i < selected.length; i++)
+    {
+        selectedFavos.push(buildFavorite(favorite.getFavoriteById(selected[i])));
+    }
+    result.object(selectedFavos);
+}
+else
+{
+    var allFavorites = favorite.getAllFavorites(tools.getCurrentUser()["name"]);
+    var finishedFavoritesForDisplay = [];
+    
+    for(i = 0; i < allFavorites.length; i++)
+    {
+        var favo = allFavorites[i];
+        finishedFavoritesForDisplay.push(buildFavorite(favo));
+    }
+    
+    result.object(finishedFavoritesForDisplay);
+}
+
+function buildFavorite(favo)
+{
+    loadConfig = entities.createConfigForLoadingRows();
+    loadConfig.entity(ContextUtils.getEntity(favo["objecttype"]));
+    loadConfig.uid(favo["rowid"]);
+    loadConfig.fields(["#CONTENTTITLE", "#IMAGE"]);
+    var row = entities.getRow(loadConfig);
+    
+    var groupid = favo["group"]["groupid"];
+    var grouptitle = favo["group"]["grouptitle"];
+    var grouptype = favo["group"]["grouptype"];
+    var objecttype = favo["objecttype"];
+    var image = row["#IMAGE"];
+    var rowid = favo["rowid"];
+    var title = row["#CONTENTTITLE"];
+    var id = favo["id"];
+    var user = favo["group"]["groupuser"];
+    
+    return [
+        groupid,
+        grouptitle,
+        grouptype, 
+        objecttype, 
+        image,
+        rowid,
+        title,
+        id,
+        user
+    ];
+}
+
diff --git a/entity/Favorite_entity/recordcontainers/jditorecordcontainer/onDelete.js b/entity/Favorite_entity/recordcontainers/jditorecordcontainer/onDelete.js
new file mode 100644
index 0000000000000000000000000000000000000000..fc4c8d8f0b7757575883cd6dc57fc66a6520db1f
--- /dev/null
+++ b/entity/Favorite_entity/recordcontainers/jditorecordcontainer/onDelete.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.favorite");
+
+favorite.removeFavoriteById(vars.get("$local.uid"));
\ No newline at end of file
diff --git a/entity/Favorite_entity/recordcontainers/jditorecordcontainer/rowCountProcess.js b/entity/Favorite_entity/recordcontainers/jditorecordcontainer/rowCountProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..cfea6a572865c0874b5a740a43379c5a48644109
--- /dev/null
+++ b/entity/Favorite_entity/recordcontainers/jditorecordcontainer/rowCountProcess.js
@@ -0,0 +1,5 @@
+import("system.tools");
+import("system.result");
+import("system.favorite");
+
+result.string(favorite.getAllFavorites(tools.getCurrentUser()["name"]).length);
\ No newline at end of file
diff --git a/neonView/FavoriteFilter_view/FavoriteFilter_view.aod b/neonView/FavoriteFilter_view/FavoriteFilter_view.aod
index c0472064057f4e9bea5b32fab8d0ddd861773322..f24dbfa624536af565fbdf6fa98436b6688e1cee 100644
--- a/neonView/FavoriteFilter_view/FavoriteFilter_view.aod
+++ b/neonView/FavoriteFilter_view/FavoriteFilter_view.aod
@@ -3,7 +3,7 @@
   <name>FavoriteFilter_view</name>
   <title>FavoriteFilter_view</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <filterable v="false" />
+  <filterable v="true" />
   <layout>
     <groupLayout>
       <name>layout</name>
@@ -13,15 +13,23 @@
     <tableViewTemplate>
       <name>FavoriteFilter</name>
       <iconField>#IMAGE</iconField>
-      <titleField>ROW_ID</titleField>
-      <subtitleField>GROUP_TITLE</subtitleField>
-      <descriptionField>OBJECT_TYPE</descriptionField>
+      <titleField>TITLE</titleField>
       <entityField>#ENTITY</entityField>
-      <linkedColumns />
+      <linkedColumns>
+        <element>PICTURE</element>
+        <element>OBJECT_TYPE</element>
+        <element>TITLE</element>
+        <element>GROUP_TITLE</element>
+      </linkedColumns>
+      <fixedFilterFields />
       <isCreatable v="false" />
       <isEditable v="false" />
       <title>favoriteFilter_view</title>
       <columns>
+        <neonTableColumn>
+          <name>a87e6491-7d8a-4009-9da8-c72348c22b4a</name>
+          <entityField>PICTURE</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>b235f917-4c59-4b8a-be07-ea5371f69f3b</name>
           <entityField>OBJECT_TYPE</entityField>
@@ -30,43 +38,11 @@
           <name>075e4e29-515c-4d9e-b195-f481af367b42</name>
           <entityField>TITLE</entityField>
         </neonTableColumn>
-        <neonTableColumn>
-          <name>9cd27b17-be4d-4621-91d5-42f3d1e8ee7d</name>
-          <entityField>TITLE_RELATION</entityField>
-        </neonTableColumn>
         <neonTableColumn>
           <name>929170b5-b460-4558-9aa6-f7657f49098c</name>
           <entityField>GROUP_TITLE</entityField>
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
-    <treeTableViewTemplate>
-      <name>FavoriteTreeTable</name>
-      <parentField>UID</parentField>
-      <nodeExpandedField>OBJECT_TYPE</nodeExpandedField>
-      <defaultGroupFields />
-      <entityField>#ENTITY</entityField>
-      <linkedColumns>
-        <element>OBJECT_TYPE</element>
-        <element>GROUP_TITLE</element>
-      </linkedColumns>
-      <isCreatable v="false" />
-      <isEditable v="false" />
-      <informationField>TITLE</informationField>
-      <columns>
-        <neonTreeTableColumn>
-          <name>75cd966b-ee07-42bb-ac6b-b29d93cb4c51</name>
-          <entityField>TITLE</entityField>
-        </neonTreeTableColumn>
-        <neonTreeTableColumn>
-          <name>e5a62307-2b26-4891-9a4b-55342f693e97</name>
-          <entityField>GROUP_TITLE</entityField>
-        </neonTreeTableColumn>
-        <neonTreeTableColumn>
-          <name>3302f6db-8bb4-4e48-b89b-273439e46a31</name>
-          <entityField>OBJECT_TYPE</entityField>
-        </neonTreeTableColumn>
-      </columns>
-    </treeTableViewTemplate>
   </children>
 </neonView>