diff --git a/entity/AdvertisingItem_entity/entityfields/product_id/displayValueProcess.js b/entity/AdvertisingItem_entity/entityfields/product_id/displayValueProcess.js
index b4a2de7925b59431605cf8b91378dd681e9b342c..34b95afc4d4ac6372590ed4ff00a350dee2fd895 100644
--- a/entity/AdvertisingItem_entity/entityfields/product_id/displayValueProcess.js
+++ b/entity/AdvertisingItem_entity/entityfields/product_id/displayValueProcess.js
@@ -1,8 +1,10 @@
+import("system.neon");
+import("Product_lib");
 import("system.vars");
 import("system.result");
 import("Sql_lib");
 
-if(vars.get("$field.PRODUCT_ID"))
+if(vars.get("$field.PRODUCT_ID") && vars.get("$sys.viewmode") != neon.FRAME_VIEWMODE_TABLE)
 {
-    result.string(newSelect("PRODUCT.PRODUCTNAME").from("PRODUCT").whereIfSet("PRODUCT.PRODUCTID", vars.get("$field.PRODUCT_ID")).cell());
+    result.string(ProductUtils.getProductName(vars.get("$field.PRODUCT_ID")));
 }
\ No newline at end of file
diff --git a/entity/AdvertisingItem_entity/recordcontainers/db/recordfieldmappings/product_id.displayvalue/expression.js b/entity/AdvertisingItem_entity/recordcontainers/db/recordfieldmappings/product_id.displayvalue/expression.js
index c3affdfee4c46dd197d303f0ef5df1c5ec19119f..deadc02e144b0fdb61aafe54fa54efe36bcb19cb 100644
--- a/entity/AdvertisingItem_entity/recordcontainers/db/recordfieldmappings/product_id.displayvalue/expression.js
+++ b/entity/AdvertisingItem_entity/recordcontainers/db/recordfieldmappings/product_id.displayvalue/expression.js
@@ -1,8 +1,6 @@
-import("system.vars");
+import("Product_lib");
 import("system.result");
-import("Sql_lib");
 
-result.string(newSelect("PRODUCT.PRODUCTNAME")
-                        .from("PRODUCT")
-                        .where("ADVERTISINGITEM.PRODUCT_ID = PRODUCT.PRODUCTID")
-                        .toString());
\ No newline at end of file
+result.string(ProductUtils.getProductNameSubSql("ADVERTISINGITEM.PRODUCT_ID"));
+                        
+                        
\ No newline at end of file
diff --git a/entity/Advertising_entity/Advertising_entity.aod b/entity/Advertising_entity/Advertising_entity.aod
index a2e6c6eddca3ad9d6741217785478f9ffa694bcd..6313f129f407dee8485069f4e2b1cfec2c9459f9 100644
--- a/entity/Advertising_entity/Advertising_entity.aod
+++ b/entity/Advertising_entity/Advertising_entity.aod
@@ -241,6 +241,10 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityField>
+      <name>PICTURE</name>
+      <contentType>IMAGE</contentType>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -327,6 +331,10 @@
         <dbRecordFieldMapping>
           <name>OBJECT_ROWID.displayValue</name>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>PICTURE.value</name>
+          <expression>%aditoprj%/entity/Advertising_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
       <linkInformation>
         <linkInformation>
diff --git a/entity/Advertising_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js b/entity/Advertising_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..178f7678744e9648068bc39897c0ad7bfb07a277
--- /dev/null
+++ b/entity/Advertising_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js
@@ -0,0 +1,12 @@
+import("Product_lib");
+import("Person_lib");
+import("KeywordRegistry_basic");
+import("Keyword_lib");
+import("system.result");
+import("Sql_lib");
+
+var sqlMask = new SqlMaskingUtils();
+
+var sql = sqlMask.concatenate(["'TEXT:'", "(" + KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.advertisingStatus(), "ADVERTISING.STATUS") + ")"]);
+
+result.string(sql.toString());
\ No newline at end of file
diff --git a/entity/CommunicationSettings_entity/CommunicationSettings_entity.aod b/entity/CommunicationSettings_entity/CommunicationSettings_entity.aod
index 8a34a28bae22a7aafcd633e3119bb5241da7aa17..ee03291546c62fa53d3341ee371d1aaef3dcc44b 100644
--- a/entity/CommunicationSettings_entity/CommunicationSettings_entity.aod
+++ b/entity/CommunicationSettings_entity/CommunicationSettings_entity.aod
@@ -213,6 +213,10 @@
       <contentType>BOOLEAN</contentType>
       <valueProcess>%aditoprj%/entity/CommunicationSettings_entity/entityfields/isactive/valueProcess.js</valueProcess>
     </entityField>
+    <entityField>
+      <name>PICTURE</name>
+      <contentType>IMAGE</contentType>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -319,6 +323,10 @@
           <recordfield>COMMUNICATIONSETTINGS.ISACTIVE</recordfield>
           <isFilterable v="true" />
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>PICTURE.value</name>
+          <expression>%aditoprj%/entity/CommunicationSettings_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
       <linkInformation>
         <linkInformation>
diff --git a/entity/CommunicationSettings_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js b/entity/CommunicationSettings_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..151dab31e962c410ae539f2d6d547c91423afc99
--- /dev/null
+++ b/entity/CommunicationSettings_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js
@@ -0,0 +1,13 @@
+import("Product_lib");
+import("Person_lib");
+import("KeywordRegistry_basic");
+import("Keyword_lib");
+import("system.result");
+import("Sql_lib");
+
+var sqlMask = new SqlMaskingUtils();
+
+var sql = sqlMask.concatenate(["'TEXT:'", 
+    "(" + KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.communicationSettingStatus(), "COMMUNICATIONSETTINGS.STATUS") + ")"]);
+
+result.string(sql.toString());
\ No newline at end of file
diff --git a/entity/Contact_entity/Contact_entity.aod b/entity/Contact_entity/Contact_entity.aod
index 1933fdd556fe2b4b0e2efb510daea82c5c693cab..2a213495799d2b98b1d3ca7c2569eac79e2d911e 100644
--- a/entity/Contact_entity/Contact_entity.aod
+++ b/entity/Contact_entity/Contact_entity.aod
@@ -275,6 +275,10 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityField>
+      <name>PICTURE</name>
+      <contentType>IMAGE</contentType>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -367,6 +371,10 @@
           <name>DEPARTMENT.displayValue</name>
           <expression>%aditoprj%/entity/Contact_entity/recordcontainers/db/recordfieldmappings/department.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>PICTURE.value</name>
+          <expression>%aditoprj%/entity/Contact_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
       <linkInformation>
         <linkInformation>
diff --git a/entity/Contact_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js b/entity/Contact_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..443ec0029ced9d97f3c196a6584200855585c4e9
--- /dev/null
+++ b/entity/Contact_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js
@@ -0,0 +1,12 @@
+import("Product_lib");
+import("Person_lib");
+import("KeywordRegistry_basic");
+import("Keyword_lib");
+import("system.result");
+import("Sql_lib");
+
+var sqlMask = new SqlMaskingUtils();
+
+var sql = sqlMask.concatenate(["'TEXT:'", "ORGANISATION.NAME"]);
+
+result.string(sql.toString());
\ No newline at end of file
diff --git a/entity/DescriptionTranslation_entity/DescriptionTranslation_entity.aod b/entity/DescriptionTranslation_entity/DescriptionTranslation_entity.aod
index 0be0b503e687cb860570374d7f8780567f882aa5..de4a3074d378fac4b2ddf8aa90c01cebe02c608e 100644
--- a/entity/DescriptionTranslation_entity/DescriptionTranslation_entity.aod
+++ b/entity/DescriptionTranslation_entity/DescriptionTranslation_entity.aod
@@ -69,6 +69,10 @@
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
+    <entityField>
+      <name>PICTURE</name>
+      <contentType>IMAGE</contentType>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -100,6 +104,10 @@
           <name>LANG.displayValue</name>
           <expression>%aditoprj%/entity/DescriptionTranslation_entity/recordcontainers/db/recordfieldmappings/lang.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>PICTURE.value</name>
+          <expression>%aditoprj%/entity/DescriptionTranslation_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
       <linkInformation>
         <linkInformation>
diff --git a/entity/DescriptionTranslation_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js b/entity/DescriptionTranslation_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..7e503d7b46f85dbd0e1f02ef14e7798676801577
--- /dev/null
+++ b/entity/DescriptionTranslation_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js
@@ -0,0 +1,12 @@
+import("Product_lib");
+import("Person_lib");
+import("KeywordRegistry_basic");
+import("Keyword_lib");
+import("system.result");
+import("Sql_lib");
+
+var sqlMask = new SqlMaskingUtils();
+
+var sql = sqlMask.concatenate(["'TEXT:'", "(" + LanguageKeywordUtils.getResolvedTitleSqlPart("DESCRIPTIONTRANSLATION.LANG") + ")"]);
+
+result.string(sql.toString());
diff --git a/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod b/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod
index 7f406a333783ddf4fbdcdec44e903ae4d16f6345..bf8dd47ba444ef4c20a9700b27b7c9c0f59f17e7 100644
--- a/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod
+++ b/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod
@@ -88,7 +88,7 @@
     <entityField>
       <name>exportCount</name>
       <documentation>%aditoprj%/entity/ExportTemplateSelection_entity/entityfields/exportcount/documentation.adoc</documentation>
-      <titleProcess>%aditoprj%/entity/ExportTemplateSelection_entity/entityfields/exportcount/titleProcess.js</titleProcess>
+      <title>Datasets are exported</title>
       <valueProcess>%aditoprj%/entity/ExportTemplateSelection_entity/entityfields/exportcount/valueProcess.js</valueProcess>
     </entityField>
     <entityProvider>
diff --git a/entity/ExportTemplateSelection_entity/entityfields/exportcount/titleProcess.js b/entity/ExportTemplateSelection_entity/entityfields/exportcount/titleProcess.js
deleted file mode 100644
index d12a65747fe928abcad84aab3f87c98917e61ade..0000000000000000000000000000000000000000
--- a/entity/ExportTemplateSelection_entity/entityfields/exportcount/titleProcess.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import("system.translate");
-import("system.result");
-import("system.vars");
-
-var comingFrom = vars.get("$field.comingfrom")
-var res
-
-if(comingFrom == "Organisation")
-    res = translate.text("Organisations will be exported");
-else if(comingFrom == "Person")
-    res = translate.text("Contacts will be exported");
-
-result.string(res)
\ No newline at end of file
diff --git a/entity/ExportTemplate_entity/ExportTemplate_entity.aod b/entity/ExportTemplate_entity/ExportTemplate_entity.aod
index bc87544aeb3f392d7427961a371e1b5ad332e2a1..e1ad54b46f5ea7049d51f97d03d4d794c466f69e 100644
--- a/entity/ExportTemplate_entity/ExportTemplate_entity.aod
+++ b/entity/ExportTemplate_entity/ExportTemplate_entity.aod
@@ -185,7 +185,6 @@
     </entityConsumer>
     <entityField>
       <name>PICTURE</name>
-      <title>Picture</title>
       <contentType>IMAGE</contentType>
     </entityField>
   </entityFields>
diff --git a/entity/Forecast_entity/Forecast_entity.aod b/entity/Forecast_entity/Forecast_entity.aod
index a596f7e006fc85e895b9fa6c94b204c646819060..8d2b49c8a0d189a4e34a62dc62d6b112685946af 100644
--- a/entity/Forecast_entity/Forecast_entity.aod
+++ b/entity/Forecast_entity/Forecast_entity.aod
@@ -123,6 +123,10 @@
       <name>KIND</name>
       <valueProcess>%aditoprj%/entity/Forecast_entity/entityfields/kind/valueProcess.js</valueProcess>
     </entityField>
+    <entityField>
+      <name>PICTURE</name>
+      <contentType>IMAGE</contentType>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -177,6 +181,10 @@
           <name>KIND.value</name>
           <recordfield>FORECAST.KIND</recordfield>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>PICTURE.value</name>
+          <expression>%aditoprj%/entity/Forecast_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
       <linkInformation>
         <linkInformation>
diff --git a/entity/Forecast_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js b/entity/Forecast_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..d8a3ca24105432603ceefbe1bfe222d1e9a94157
--- /dev/null
+++ b/entity/Forecast_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js
@@ -0,0 +1,10 @@
+import("KeywordRegistry_basic");
+import("Keyword_lib");
+import("system.result");
+import("Sql_lib");
+
+var sqlMask = new SqlMaskingUtils();
+
+var sql = sqlMask.concatenate(["'TEXT:'", KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.productGroupcode(), "FORECAST.GROUPCODE")]);
+
+result.string(sql.toString());
\ No newline at end of file
diff --git a/entity/InterestLink_entity/InterestLink_entity.aod b/entity/InterestLink_entity/InterestLink_entity.aod
index fc1a14a5db2223401cc69846c02ac96af8279a44..1ac1a55774b454a22e668a39ab4966681a519086 100644
--- a/entity/InterestLink_entity/InterestLink_entity.aod
+++ b/entity/InterestLink_entity/InterestLink_entity.aod
@@ -100,6 +100,10 @@
       <iconId>VAADIN:CURLY_BRACKETS</iconId>
       <stateProcess>%aditoprj%/entity/InterestLink_entity/entityfields/openadminview/stateProcess.js</stateProcess>
     </entityActionField>
+    <entityField>
+      <name>PICTURE</name>
+      <contentType>IMAGE</contentType>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -154,6 +158,10 @@
           <name>DATE_NEW.value</name>
           <recordfield>INTERESTLINK.DATE_NEW</recordfield>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>PICTURE.value</name>
+          <expression>%aditoprj%/entity/InterestLink_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
       <linkInformation>
         <linkInformation>
diff --git a/entity/InterestLink_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js b/entity/InterestLink_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..96223909b223941d92d80f1c3fb20389d622b4a7
--- /dev/null
+++ b/entity/InterestLink_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js
@@ -0,0 +1,12 @@
+import("Product_lib");
+import("Person_lib");
+import("KeywordRegistry_basic");
+import("Keyword_lib");
+import("system.result");
+import("Sql_lib");
+
+var sqlMask = new SqlMaskingUtils();
+
+var sql = sqlMask.concatenate(["'TEXT:'", "INTEREST.TITLE"]);
+
+result.string(sql.toString());
\ No newline at end of file
diff --git a/entity/Offeritem_entity/Offeritem_entity.aod b/entity/Offeritem_entity/Offeritem_entity.aod
index 5657ac3d3c0da879e05ed500d8778e94c90611df..87a0d3f6cae67df525e62259afd9f120e5d84ef5 100644
--- a/entity/Offeritem_entity/Offeritem_entity.aod
+++ b/entity/Offeritem_entity/Offeritem_entity.aod
@@ -296,6 +296,10 @@
       <state>READONLY</state>
       <valueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/currency/valueProcess.js</valueProcess>
     </entityField>
+    <entityField>
+      <name>PICTURE</name>
+      <contentType>IMAGE</contentType>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -408,6 +412,10 @@
           <name>DISCOUNT.displayValue</name>
           <expression>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/discount.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>PICTURE.value</name>
+          <expression>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
       <linkInformation>
         <linkInformation>
diff --git a/entity/Offeritem_entity/entityfields/product_id/displayValueProcess.js b/entity/Offeritem_entity/entityfields/product_id/displayValueProcess.js
index e10bbc483b4488b6efb2acbc66f9d89aac82e431..34b95afc4d4ac6372590ed4ff00a350dee2fd895 100644
--- a/entity/Offeritem_entity/entityfields/product_id/displayValueProcess.js
+++ b/entity/Offeritem_entity/entityfields/product_id/displayValueProcess.js
@@ -1,6 +1,10 @@
+import("system.neon");
+import("Product_lib");
 import("system.vars");
 import("system.result");
 import("Sql_lib");
 
-if(vars.get("$field.PRODUCT_ID"))
-    result.string(newSelect("PRODUCT.PRODUCTNAME").from("PRODUCT").whereIfSet("PRODUCT.PRODUCTID", vars.get("$field.PRODUCT_ID")).cell());
\ No newline at end of file
+if(vars.get("$field.PRODUCT_ID") && vars.get("$sys.viewmode") != neon.FRAME_VIEWMODE_TABLE)
+{
+    result.string(ProductUtils.getProductName(vars.get("$field.PRODUCT_ID")));
+}
\ No newline at end of file
diff --git a/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js b/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..266ce0e685b3f00c33ab84a795cbf3e8dabc4765
--- /dev/null
+++ b/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js
@@ -0,0 +1,12 @@
+import("Product_lib");
+import("Person_lib");
+import("KeywordRegistry_basic");
+import("Keyword_lib");
+import("system.result");
+import("Sql_lib");
+
+var sqlMask = new SqlMaskingUtils();
+
+var sql = sqlMask.concatenate(["'TEXT:'", "(" + ProductUtils.getProductNameSubSql("OFFERITEM.PRODUCT_ID") + ")"]);
+
+result.string(sql.toString());
\ No newline at end of file
diff --git a/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/product_id.displayvalue/expression.js b/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/product_id.displayvalue/expression.js
index 505fda0b8e840a2c32054647dcc52469f8fc199d..a3c7e1a4b082e21f94f25a8af225a5a526c38bdc 100644
--- a/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/product_id.displayvalue/expression.js
+++ b/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/product_id.displayvalue/expression.js
@@ -1,5 +1,6 @@
+import("Product_lib");
 import("system.vars");
 import("system.result");
 
 // TODO: remove when #title is used as display value for lookups
-result.string("(select PRODUCT.PRODUCTNAME from PRODUCT where OFFERITEM.PRODUCT_ID = PRODUCT.PRODUCTID)");
\ No newline at end of file
+result.string(ProductUtils.getProductNameSubSql("OFFERITEM.PRODUCT_ID"));
\ No newline at end of file
diff --git a/entity/Orderitem_entity/Orderitem_entity.aod b/entity/Orderitem_entity/Orderitem_entity.aod
index 2ba72ab532b66adfcc197f4986d6b9ffa780ba08..b6f5ec9513c092d2287bed81eb534a94eca65062 100644
--- a/entity/Orderitem_entity/Orderitem_entity.aod
+++ b/entity/Orderitem_entity/Orderitem_entity.aod
@@ -278,6 +278,10 @@
       <state>READONLY</state>
       <valueProcess>%aditoprj%/entity/Orderitem_entity/entityfields/currency/valueProcess.js</valueProcess>
     </entityField>
+    <entityField>
+      <name>PICTURE</name>
+      <contentType>IMAGE</contentType>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -368,6 +372,10 @@
           <isFilterable v="true" />
           <isLookupFilter v="true" />
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>PICTURE.value</name>
+          <expression>%aditoprj%/entity/Orderitem_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
       <linkInformation>
         <linkInformation>
diff --git a/entity/Orderitem_entity/entityfields/product_id/displayValueProcess.js b/entity/Orderitem_entity/entityfields/product_id/displayValueProcess.js
index e10bbc483b4488b6efb2acbc66f9d89aac82e431..99ef423450f5d49e1c13a16fc2aa5c6ad7814b90 100644
--- a/entity/Orderitem_entity/entityfields/product_id/displayValueProcess.js
+++ b/entity/Orderitem_entity/entityfields/product_id/displayValueProcess.js
@@ -1,6 +1,10 @@
+import("Product_lib");
+import("system.neon");
 import("system.vars");
 import("system.result");
 import("Sql_lib");
 
-if(vars.get("$field.PRODUCT_ID"))
-    result.string(newSelect("PRODUCT.PRODUCTNAME").from("PRODUCT").whereIfSet("PRODUCT.PRODUCTID", vars.get("$field.PRODUCT_ID")).cell());
\ No newline at end of file
+if(vars.get("$field.PRODUCT_ID") && vars.get("$sys.viewmode") != neon.FRAME_VIEWMODE_TABLE)
+{
+    result.string(ProductUtils.getProductName(vars.get("$field.PRODUCT_ID")));
+}
\ No newline at end of file
diff --git a/entity/Orderitem_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js b/entity/Orderitem_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..75190112fb7b4835ec6e139787a334eddb629e78
--- /dev/null
+++ b/entity/Orderitem_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js
@@ -0,0 +1,12 @@
+import("Product_lib");
+import("Person_lib");
+import("KeywordRegistry_basic");
+import("Keyword_lib");
+import("system.result");
+import("Sql_lib");
+
+var sqlMask = new SqlMaskingUtils();
+
+var sql = sqlMask.concatenate(["'TEXT:'", "(" + ProductUtils.getProductNameSubSql("SALESORDERITEM.PRODUCT_ID") + ")"]);
+
+result.string(sql.toString());
\ No newline at end of file
diff --git a/entity/Orderitem_entity/recordcontainers/db/recordfieldmappings/product_id.displayvalue/expression.js b/entity/Orderitem_entity/recordcontainers/db/recordfieldmappings/product_id.displayvalue/expression.js
index c356272a55066e5913df7b5cbaa668d875d88983..60e5f9a4434937d2d26444ca803b138d12a14961 100644
--- a/entity/Orderitem_entity/recordcontainers/db/recordfieldmappings/product_id.displayvalue/expression.js
+++ b/entity/Orderitem_entity/recordcontainers/db/recordfieldmappings/product_id.displayvalue/expression.js
@@ -1,5 +1,6 @@
+import("Product_lib");
 import("system.vars");
 import("system.result");
 
 // TODO: remove when #title is used as display value for lookups
-result.string("(select PRODUCT.PRODUCTNAME from PRODUCT where SALESORDERITEM.PRODUCT_ID = PRODUCT.PRODUCTID)");
\ No newline at end of file
+result.string(ProductUtils.getProductNameSubSql("SALESORDERITEM.PRODUCT_ID"));
\ No newline at end of file
diff --git a/entity/Planning_entity/Planning_entity.aod b/entity/Planning_entity/Planning_entity.aod
index 7db241b3cdebae206d002b2f5dfcdb6c40d51e58..272d77a0807f3323d412be46be3c20b510e7adf9 100644
--- a/entity/Planning_entity/Planning_entity.aod
+++ b/entity/Planning_entity/Planning_entity.aod
@@ -197,6 +197,10 @@
       <name>PlanningIds_param</name>
       <expose v="true" />
     </entityParameter>
+    <entityField>
+      <name>PICTURE</name>
+      <contentType>IMAGE</contentType>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -259,6 +263,10 @@
           <name>GROUPCODE.displayValue</name>
           <expression>%aditoprj%/entity/Planning_entity/recordcontainers/db/recordfieldmappings/groupcode.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>PICTURE.value</name>
+          <expression>%aditoprj%/entity/Planning_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
       <linkInformation>
         <linkInformation>
diff --git a/entity/Planning_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js b/entity/Planning_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..efc140d3848ea39c7746077006ca35b2426d0acd
--- /dev/null
+++ b/entity/Planning_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js
@@ -0,0 +1,10 @@
+import("KeywordRegistry_basic");
+import("Keyword_lib");
+import("system.result");
+import("Sql_lib");
+
+var sqlMask = new SqlMaskingUtils();
+
+var sql = sqlMask.concatenate(["'TEXT:'", KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.forecastStatus(), "FORECAST.STATUS")]);
+
+result.string(sql.toString());
\ No newline at end of file
diff --git a/entity/Prod2prod_entity/Prod2prod_entity.aod b/entity/Prod2prod_entity/Prod2prod_entity.aod
index 4136115ae9e7f51ec02c8e2f946baeb09a3a43ab..2cc4ae001df0fc3f0c49ca346d6ff4fdab3b273c 100644
--- a/entity/Prod2prod_entity/Prod2prod_entity.aod
+++ b/entity/Prod2prod_entity/Prod2prod_entity.aod
@@ -140,6 +140,10 @@
     <entityField>
       <name>UID</name>
     </entityField>
+    <entityField>
+      <name>PICTURE</name>
+      <contentType>IMAGE</contentType>
+    </entityField>
   </entityFields>
   <recordContainers>
     <jDitoRecordContainer>
@@ -190,6 +194,9 @@
         <jDitoRecordFieldMapping>
           <name>unit.displayValue</name>
         </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>PICTURE.value</name>
+        </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
           <name>currentPurchasePrice.value</name>
         </jDitoRecordFieldMapping>
diff --git a/entity/Prod2prod_entity/recordcontainers/jdito/contentProcess.js b/entity/Prod2prod_entity/recordcontainers/jdito/contentProcess.js
index bb1b8c223115b5ed5937f795d5ee3890d2174718..9c60cc28a8c3905a4c3419520d44bdb5ac1ea277 100644
--- a/entity/Prod2prod_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/Prod2prod_entity/recordcontainers/jdito/contentProcess.js
@@ -7,6 +7,8 @@ import("Sql_lib");
 import("Keyword_lib");
 import("KeywordRegistry_basic");
 
+var sqlMask = new SqlMaskingUtils();
+
 var query = newSelect([
     "PROD2PROD.PROD2PRODID",                // UID.value
     "PROD2PROD.PROD2PRODID",                // PROD2PRODID.value
@@ -23,7 +25,8 @@ var query = newSelect([
     KeywordUtils.getResolvedTitleSqlPart(   // unit.displaValue
         $KeywordRegistry.quantityUnit(),
         "PRODUCT.UNIT"
-    )
+    ),
+    sqlMask.concatenate(["'TEXT:'", "PRODUCT.PRODUCTCODE"])
 ]).from("PROD2PROD")
 .join("PRODUCT", "PRODUCT.PRODUCTID = PROD2PROD.SOURCE_ID");
 
diff --git a/entity/Timetracking_entity/Timetracking_entity.aod b/entity/Timetracking_entity/Timetracking_entity.aod
index bf1a1db9fba9419d9198653e83b435aeaab716ee..8422d4687aa6e2472177ba1ef03a40b9d3be69f7 100644
--- a/entity/Timetracking_entity/Timetracking_entity.aod
+++ b/entity/Timetracking_entity/Timetracking_entity.aod
@@ -114,6 +114,10 @@
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
+    <entityField>
+      <name>PICTURE</name>
+      <contentType>IMAGE</contentType>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -154,6 +158,10 @@
           <name>TRACKINGMINUTES.value</name>
           <recordfield>TIMETRACKING.TRACKINGMINUTES</recordfield>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>PICTURE.value</name>
+          <expression>%aditoprj%/entity/Timetracking_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
       <linkInformation>
         <linkInformation>
diff --git a/entity/Timetracking_entity/recordcontainers/db/recordfieldmappings/contact_id.displayvalue/expression.js b/entity/Timetracking_entity/recordcontainers/db/recordfieldmappings/contact_id.displayvalue/expression.js
index 418c211fe3d6f213831fc5ab04518e71c1fc8910..e6b609c1fc27ba9f613f00d757d38d0aa240249c 100644
--- a/entity/Timetracking_entity/recordcontainers/db/recordfieldmappings/contact_id.displayvalue/expression.js
+++ b/entity/Timetracking_entity/recordcontainers/db/recordfieldmappings/contact_id.displayvalue/expression.js
@@ -1,4 +1,4 @@
 import("system.result");
 import("Person_lib");
 
-result.string(PersUtils.getResolvingDisplaySubSql("CONTACT_ID"))
\ No newline at end of file
+result.string(PersUtils.getResolvingDisplaySubSql("CONTACT_ID"));
\ No newline at end of file
diff --git a/entity/Timetracking_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js b/entity/Timetracking_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..e1797504c14451f6349ae639ad2ae06cb1ed27b5
--- /dev/null
+++ b/entity/Timetracking_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js
@@ -0,0 +1,14 @@
+import("Person_lib");
+import("KeywordRegistry_basic");
+import("Keyword_lib");
+import("system.result");
+import("Sql_lib");
+
+var sqlMask = new SqlMaskingUtils();
+
+var sql = sqlMask.concatenate(["'TEXT:'", "(" + newSelect(sqlMask.concatenate(["FIRSTNAME, ' ', LASTNAME"]))
+    .from("PERSON")
+    .join("CONTACT", "PERSON_ID = PERSONID")
+    .where("CONTACT.CONTACTID = TIMETRACKING.CONTACT_ID") + ")"]);
+
+result.string(sql.toString());
\ No newline at end of file
diff --git a/neonView/AdvertisingFilter_view/AdvertisingFilter_view.aod b/neonView/AdvertisingFilter_view/AdvertisingFilter_view.aod
index 842cca711c454cab53db8971345bc76d9d167929..0142ccd3be22efb6cb4a66bcc84fccb829a30d4b 100644
--- a/neonView/AdvertisingFilter_view/AdvertisingFilter_view.aod
+++ b/neonView/AdvertisingFilter_view/AdvertisingFilter_view.aod
@@ -16,7 +16,7 @@
       <columns>
         <neonTableColumn>
           <name>8c3e1048-7f7a-4210-a849-198f5b569c04</name>
-          <entityField>#ICON</entityField>
+          <entityField>PICTURE</entityField>
         </neonTableColumn>
         <neonTableColumn>
           <name>b8971987-29bb-48dc-b9fc-075a63ef0b4e</name>
diff --git a/neonView/AdvertisingPreview_view/AdvertisingPreview_view.aod b/neonView/AdvertisingPreview_view/AdvertisingPreview_view.aod
index d8d0a57add798641769920735cd6ad86319bcdae..7f185600c6333265e179b3b7f74e1a2e7ab47186 100644
--- a/neonView/AdvertisingPreview_view/AdvertisingPreview_view.aod
+++ b/neonView/AdvertisingPreview_view/AdvertisingPreview_view.aod
@@ -11,7 +11,7 @@
   <children>
     <cardViewTemplate>
       <name>Card</name>
-      <iconField>#ICON</iconField>
+      <iconField>PICTURE</iconField>
       <titleField>STATUS</titleField>
       <subtitleField>CONTACT_ID</subtitleField>
       <descriptionField>RESPONSIBLE_ID</descriptionField>
diff --git a/neonView/CommunicationSettingsFilter_view/CommunicationSettingsFilter_view.aod b/neonView/CommunicationSettingsFilter_view/CommunicationSettingsFilter_view.aod
index 7c2518ba09535bc4d3593484be3f90fdb9751e5d..9ed01d96a4d682136298f7798e245690a1529eb2 100644
--- a/neonView/CommunicationSettingsFilter_view/CommunicationSettingsFilter_view.aod
+++ b/neonView/CommunicationSettingsFilter_view/CommunicationSettingsFilter_view.aod
@@ -14,7 +14,7 @@
       <columns>
         <neonTreeTableColumn>
           <name>1e698c64-ce5c-46d1-8c90-290d5ea187c7</name>
-          <entityField>ICON</entityField>
+          <entityField>PICTURE</entityField>
         </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>5738f47a-57cd-4e6a-a017-1a5ab80581ac</name>
diff --git a/neonView/CommunicationSettingsPreview_view/CommunicationSettingsPreview_view.aod b/neonView/CommunicationSettingsPreview_view/CommunicationSettingsPreview_view.aod
index 80f84884292be22e8b9ac4ff85599d312047f574..41516c7acea918be460af64b4dcedd482a03783a 100644
--- a/neonView/CommunicationSettingsPreview_view/CommunicationSettingsPreview_view.aod
+++ b/neonView/CommunicationSettingsPreview_view/CommunicationSettingsPreview_view.aod
@@ -11,7 +11,7 @@
   <children>
     <cardViewTemplate>
       <name>Card</name>
-      <iconField>ICON</iconField>
+      <iconField>PICTURE</iconField>
       <titleField>#CONTENTTITLE</titleField>
       <subtitleField>STATUS</subtitleField>
       <isEditable v="false" />
diff --git a/neonView/ContactList_view/ContactList_view.aod b/neonView/ContactList_view/ContactList_view.aod
index f5f7695c21862e7833187b2a07d610df45f6ba25..0b8de21bdc91e041ebf81eb3991577b8f51ebbde 100644
--- a/neonView/ContactList_view/ContactList_view.aod
+++ b/neonView/ContactList_view/ContactList_view.aod
@@ -15,6 +15,10 @@
       <isDeletable v="false" />
       <isEditable v="false" />
       <columns>
+        <neonTableColumn>
+          <name>5c3b4a01-f8d6-45df-92aa-8e39c94789f5</name>
+          <entityField>PICTURE</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>ef71b5ad-8581-4845-ae66-7df17d1459e0</name>
           <entityField>ORGANISATION_CONTACTID</entityField>
diff --git a/neonView/DescriptionTranslationFilter_view/DescriptionTranslationFilter_view.aod b/neonView/DescriptionTranslationFilter_view/DescriptionTranslationFilter_view.aod
index ba3690b8e6b8686a462b06874aa21fe8cc45af8b..3dc9a54ea8cb6b6ad6562cea7bcedfca61ee1ad4 100644
--- a/neonView/DescriptionTranslationFilter_view/DescriptionTranslationFilter_view.aod
+++ b/neonView/DescriptionTranslationFilter_view/DescriptionTranslationFilter_view.aod
@@ -12,6 +12,10 @@
       <name>translation</name>
       <entityField>#ENTITY</entityField>
       <columns>
+        <neonTableColumn>
+          <name>b33e3ff8-ec3a-4d5d-8961-3b18175502a3</name>
+          <entityField>PICTURE</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>4bdaf352-d5f1-44a1-9cca-7cb877928ba5</name>
           <entityField>LANG</entityField>
@@ -26,6 +30,10 @@
       <name>Treetable</name>
       <entityField>#ENTITY</entityField>
       <columns>
+        <neonTreeTableColumn>
+          <name>5303f922-1e77-48db-94b3-f803e10f91c3</name>
+          <entityField>PICTURE</entityField>
+        </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>a9046b9c-0324-4e19-a22b-ae39c6a1c8c4</name>
           <entityField>LANG</entityField>
diff --git a/neonView/DescriptionTranslationPreview_view/DescriptionTranslationPreview_view.aod b/neonView/DescriptionTranslationPreview_view/DescriptionTranslationPreview_view.aod
index 6d15eecc7d679b7f43132781c249f00c6ea08a9e..907c3d70c50a89e4dcad043ab99aa7ea747df51a 100644
--- a/neonView/DescriptionTranslationPreview_view/DescriptionTranslationPreview_view.aod
+++ b/neonView/DescriptionTranslationPreview_view/DescriptionTranslationPreview_view.aod
@@ -10,19 +10,11 @@
     </boxLayout>
   </layout>
   <children>
-    <genericViewTemplate>
-      <name>TranslationInfo</name>
-      <showDrawer v="true" />
-      <drawerCaption>Description</drawerCaption>
-      <hideLabels v="true" />
-      <entityField>#ENTITY</entityField>
-      <fields>
-        <entityFieldLink>
-          <name>5e432839-ca9a-4a29-8006-0a1673d94c92</name>
-          <entityField>LANG</entityField>
-        </entityFieldLink>
-      </fields>
-    </genericViewTemplate>
+    <cardViewTemplate>
+      <name>Card</name>
+      <iconField>PICTURE</iconField>
+      <titleField>LANG</titleField>
+    </cardViewTemplate>
     <genericViewTemplate>
       <name>Description</name>
       <showDrawer v="true" />
diff --git a/neonView/ForecastFilter_view/ForecastFilter_view.aod b/neonView/ForecastFilter_view/ForecastFilter_view.aod
index 2003610345324c73fcf071ee54400368b0445569..f232cf1d4c9d4af943003da4a22777f432b8d907 100644
--- a/neonView/ForecastFilter_view/ForecastFilter_view.aod
+++ b/neonView/ForecastFilter_view/ForecastFilter_view.aod
@@ -18,6 +18,10 @@
         <element>INFO</element>
       </editableColumns>
       <columns>
+        <neonTableColumn>
+          <name>68de81f0-00c6-4e11-a8d3-2922a202a1b0</name>
+          <entityField>PICTURE</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>ed63515d-4c7b-4e40-92b0-81fa1395b0f1</name>
           <entityField>GROUPCODE</entityField>
@@ -50,6 +54,10 @@
       <subtitleField>VOLUME</subtitleField>
       <entityField>#ENTITY</entityField>
       <columns>
+        <neonTableColumn>
+          <name>b7acab7d-5e92-45b5-9b41-e653ee1e5679</name>
+          <entityField>PICTURE</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>323f26d7-4ac2-4ff9-91d1-7459cc7e3469</name>
           <entityField>GROUPCODE</entityField>
@@ -72,6 +80,10 @@
       <name>Treetable</name>
       <entityField>#ENTITY</entityField>
       <columns>
+        <neonTreeTableColumn>
+          <name>a6a83c1c-6ea0-4f06-bf8a-8d6b071b1a64</name>
+          <entityField>PICTURE</entityField>
+        </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>9bdb1cf9-5348-464d-84fb-747d509b0eef</name>
           <entityField>GROUPCODE</entityField>
diff --git a/neonView/ForecastPreview_view/ForecastPreview_view.aod b/neonView/ForecastPreview_view/ForecastPreview_view.aod
index c35834022761561c18ba617f2b659fb5e79c9422..83d8efb894d56b0630967da3e9e942fd66e765f5 100644
--- a/neonView/ForecastPreview_view/ForecastPreview_view.aod
+++ b/neonView/ForecastPreview_view/ForecastPreview_view.aod
@@ -11,6 +11,7 @@
   <children>
     <cardViewTemplate>
       <name>Header</name>
+      <iconField>PICTURE</iconField>
       <titleField>GROUPCODE</titleField>
       <descriptionField>DATE_START</descriptionField>
       <entityField>#ENTITY</entityField>
diff --git a/neonView/InterestLinkFilter_view/InterestLinkFilter_view.aod b/neonView/InterestLinkFilter_view/InterestLinkFilter_view.aod
index 162387862cf00ad881b94050fbe3b34dd41e313d..7b5f66f6dd806760f74d29d8ee5e78fde73007ea 100644
--- a/neonView/InterestLinkFilter_view/InterestLinkFilter_view.aod
+++ b/neonView/InterestLinkFilter_view/InterestLinkFilter_view.aod
@@ -12,6 +12,10 @@
     <tableViewTemplate>
       <name>Table</name>
       <columns>
+        <neonTableColumn>
+          <name>435b5eb5-3854-4906-bd93-dbfed0bbe01c</name>
+          <entityField>PICTURE</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>261f0387-dd00-486d-add4-56d0c64be583</name>
           <entityField>INTEREST_ID</entityField>
diff --git a/neonView/OfferitemFilter_view/OfferitemFilter_view.aod b/neonView/OfferitemFilter_view/OfferitemFilter_view.aod
index ce595dd9657cac28869bab3578789379dc34bb2e..f7aa53c60c7c5b47cd7b3779f714e714f5074b3f 100644
--- a/neonView/OfferitemFilter_view/OfferitemFilter_view.aod
+++ b/neonView/OfferitemFilter_view/OfferitemFilter_view.aod
@@ -18,6 +18,10 @@
       </editableColumns>
       <favoriteActionGroup1>group</favoriteActionGroup1>
       <columns>
+        <neonTableColumn>
+          <name>10cd8712-bb90-4c03-ac07-10d318c1e6e9</name>
+          <entityField>PICTURE</entityField>
+        </neonTableColumn>
         <neonTreeTableColumn>
           <name>91e85f61-5e5d-48f8-aeb1-a5740ec07e25</name>
           <entityField>ITEMPOSITION</entityField>
@@ -82,6 +86,10 @@
       <entityField>#ENTITY</entityField>
       <favoriteActionGroup1>group</favoriteActionGroup1>
       <columns>
+        <neonTreeTableColumn>
+          <name>6f0c91ac-1e3a-4d42-a063-b7daf1805a1e</name>
+          <entityField>PICTURE</entityField>
+        </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>91e85f61-5e5d-48f8-aeb1-a5740ec07e25</name>
           <entityField>ITEMPOSITION</entityField>
diff --git a/neonView/OfferitemPreview_view/OfferitemPreview_view.aod b/neonView/OfferitemPreview_view/OfferitemPreview_view.aod
index 9f7d0ff44999ccea8629701d9bca1874b4b75bb6..719a8984f8a1b29cdfb625affdf8e50667ec80c7 100644
--- a/neonView/OfferitemPreview_view/OfferitemPreview_view.aod
+++ b/neonView/OfferitemPreview_view/OfferitemPreview_view.aod
@@ -8,6 +8,12 @@
     </boxLayout>
   </layout>
   <children>
+    <cardViewTemplate>
+      <name>Card</name>
+      <iconField>PICTURE</iconField>
+      <titleField>PRODUCT_ID</titleField>
+      <subtitleField>ITEMPOSITION</subtitleField>
+    </cardViewTemplate>
     <genericViewTemplate>
       <name>Info</name>
       <showDrawer v="true" />
@@ -15,15 +21,7 @@
       <entityField>#ENTITY</entityField>
       <fields>
         <entityFieldLink>
-          <name>171901d8-32a2-4689-aeb3-e00936172330</name>
-          <entityField>ITEMPOSITION</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>335b6954-46ab-4235-9681-3ebd261af72a</name>
-          <entityField>PRODUCT_ID</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>e792d720-187f-4aa1-917c-1c8065222b72</name>
+          <name>f0a31e9a-4e20-474b-85a4-07dd46062486</name>
           <entityField>QUANTITY</entityField>
         </entityFieldLink>
         <entityFieldLink>
@@ -42,6 +40,10 @@
           <name>b161516e-f1ee-47c6-ae92-a37bbe0ae564</name>
           <entityField>TotalPrice</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>69948799-9ec2-4fba-843d-7b86f9e4585f</name>
+          <entityField>TotalPrice</entityField>
+        </entityFieldLink>
         <entityFieldLink>
           <name>f8043352-f756-4854-9caa-a9aea073e4fe</name>
           <entityField>DISCOUNT</entityField>
@@ -50,10 +52,6 @@
           <name>e25386dc-a740-4f93-a1f0-32317cf5a36a</name>
           <entityField>OPTIONAL</entityField>
         </entityFieldLink>
-        <entityFieldLink>
-          <name>69948799-9ec2-4fba-843d-7b86f9e4585f</name>
-          <entityField>TotalPrice</entityField>
-        </entityFieldLink>
       </fields>
     </genericViewTemplate>
     <genericViewTemplate>
diff --git a/neonView/OrderitemFilter_view/OrderitemFilter_view.aod b/neonView/OrderitemFilter_view/OrderitemFilter_view.aod
index 5696e2e72d229266950afcc651c31daef7abcb0a..289133336b731e7e6cbd596cfefd5516854d8e72 100644
--- a/neonView/OrderitemFilter_view/OrderitemFilter_view.aod
+++ b/neonView/OrderitemFilter_view/OrderitemFilter_view.aod
@@ -16,6 +16,10 @@
       <entityField>#ENTITY</entityField>
       <favoriteActionGroup1>group</favoriteActionGroup1>
       <columns>
+        <neonTableColumn>
+          <name>e34ac276-72e4-4699-a564-830a3dd1aa46</name>
+          <entityField>PICTURE</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>8c74810d-d127-4e64-8fbf-1b3db1835232</name>
           <entityField>ITEMPOSITION</entityField>
@@ -59,6 +63,10 @@
       <entityField>#ENTITY</entityField>
       <favoriteActionGroup1>group</favoriteActionGroup1>
       <columns>
+        <neonTreeTableColumn>
+          <name>63a667e9-3729-4ceb-98db-bb4d39bf6420</name>
+          <entityField>PICTURE</entityField>
+        </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>d07130dd-7727-45cc-8f8c-ae5d2972d21d</name>
           <entityField>ITEMPOSITION</entityField>
@@ -107,6 +115,10 @@
         <element>INFO</element>
       </editableColumns>
       <columns>
+        <neonTableColumn>
+          <name>85d30b0c-1e03-4b46-a4d1-caa3e2e7e589</name>
+          <entityField>PICTURE</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>5bc12f25-59d4-49b5-bbb8-4ff791303cb7</name>
           <entityField>ITEMPOSITION</entityField>
diff --git a/neonView/OrderitemPreview_view/OrderitemPreview_view.aod b/neonView/OrderitemPreview_view/OrderitemPreview_view.aod
index ccbae0155b998c96d98076d0597ea1652664d847..554b0bdc40fe12c71dd449d9cff5a50be14923d5 100644
--- a/neonView/OrderitemPreview_view/OrderitemPreview_view.aod
+++ b/neonView/OrderitemPreview_view/OrderitemPreview_view.aod
@@ -8,20 +8,18 @@
     </headerFooterLayout>
   </layout>
   <children>
+    <cardViewTemplate>
+      <name>Card</name>
+      <iconField>PICTURE</iconField>
+      <titleField>PRODUCT_ID</titleField>
+      <subtitleField>ITEMPOSITION</subtitleField>
+    </cardViewTemplate>
     <genericViewTemplate>
       <name>Info</name>
       <showDrawer v="true" />
       <drawerCaption>Details</drawerCaption>
       <entityField>#ENTITY</entityField>
       <fields>
-        <entityFieldLink>
-          <name>ad4fb267-277c-47ca-ad3d-c518cd234a39</name>
-          <entityField>ITEMPOSITION</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>a704c785-f27f-431b-a6ac-77fd21217d9d</name>
-          <entityField>PRODUCT_ID</entityField>
-        </entityFieldLink>
         <entityFieldLink>
           <name>d501d9d5-f149-4685-903d-0394dc6e40e2</name>
           <entityField>QUANTITY</entityField>
diff --git a/neonView/PlanningFilter_view/PlanningFilter_view.aod b/neonView/PlanningFilter_view/PlanningFilter_view.aod
index 93e3ba9a59aed53b4e78fa48b2fecd3ff94338e4..8e3102318ed4508d3d7f2dd95b337431f1468256 100644
--- a/neonView/PlanningFilter_view/PlanningFilter_view.aod
+++ b/neonView/PlanningFilter_view/PlanningFilter_view.aod
@@ -13,6 +13,10 @@
       <name>Table</name>
       <favoriteActionGroup1>FilterViewActions</favoriteActionGroup1>
       <columns>
+        <neonTableColumn>
+          <name>b0c6fa20-9647-4a78-a6bf-006da824826d</name>
+          <entityField>PICTURE</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>2024c784-29c3-498b-80b3-f2e378f25773</name>
           <entityField>CONTACT_ID</entityField>
@@ -47,6 +51,10 @@
       <name>TreeTable</name>
       <favoriteActionGroup1>FilterViewActions</favoriteActionGroup1>
       <columns>
+        <neonTreeTableColumn>
+          <name>1e6b027f-2c23-42e7-995f-aa291b9ecb7d</name>
+          <entityField>PICTURE</entityField>
+        </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>9664cd27-0bd3-48e1-bc4e-b80e8ce52c64</name>
           <entityField>CONTACT_ID</entityField>
@@ -84,6 +92,10 @@
       </editableColumns>
       <favoriteActionGroup1>FilterViewActions</favoriteActionGroup1>
       <columns>
+        <neonTableColumn>
+          <name>40c6e73b-bf74-4ebe-bdb3-a81431fb3179</name>
+          <entityField>PICTURE</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>9dc22f85-20d3-4891-810e-74570c1faf80</name>
           <entityField>FORECAST_YEAR</entityField>
diff --git a/neonView/PlanningMultiEditOverlay_view/PlanningMultiEditOverlay_view.aod b/neonView/PlanningMultiEditOverlay_view/PlanningMultiEditOverlay_view.aod
index e190fa525c288644ad81925452f92cdf6353e12e..4636aeff1db651a65862556e9853ba2d591e824c 100644
--- a/neonView/PlanningMultiEditOverlay_view/PlanningMultiEditOverlay_view.aod
+++ b/neonView/PlanningMultiEditOverlay_view/PlanningMultiEditOverlay_view.aod
@@ -19,6 +19,10 @@
       <isDeletable v="false" />
       <isEditable v="false" />
       <columns>
+        <neonTableColumn>
+          <name>dd5202ce-c167-46d2-a606-bafc64ca1d46</name>
+          <entityField>PICTURE</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>bb541f09-5a3c-4905-a73e-4a94b8dd4aba</name>
           <entityField>CONTACT_ID</entityField>
diff --git a/neonView/PlanningOrganisationFilter_view/PlanningOrganisationFilter_view.aod b/neonView/PlanningOrganisationFilter_view/PlanningOrganisationFilter_view.aod
index ed4339a63e0f6aea64875454565d42f8c3f56cfb..86ec2ce27a2423d0772fe8b6d2b70ecb81567831 100644
--- a/neonView/PlanningOrganisationFilter_view/PlanningOrganisationFilter_view.aod
+++ b/neonView/PlanningOrganisationFilter_view/PlanningOrganisationFilter_view.aod
@@ -16,6 +16,10 @@
       </editableColumns>
       <favoriteActionGroup1>FilterViewActions</favoriteActionGroup1>
       <columns>
+        <neonTableColumn>
+          <name>6c6cdc5d-1c78-4445-ae4f-361cd40563a0</name>
+          <entityField>PICTURE</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>9dc22f85-20d3-4891-810e-74570c1faf80</name>
           <entityField>FORECAST_YEAR</entityField>
@@ -64,6 +68,10 @@
       <name>Table</name>
       <favoriteActionGroup1>FilterViewActions</favoriteActionGroup1>
       <columns>
+        <neonTableColumn>
+          <name>58ecb5ec-ea5f-4a35-b76b-f6b855b2762e</name>
+          <entityField>PICTURE</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>2024c784-29c3-498b-80b3-f2e378f25773</name>
           <entityField>CONTACT_ID</entityField>
@@ -98,6 +106,10 @@
       <name>TreeTable</name>
       <favoriteActionGroup1>FilterViewActions</favoriteActionGroup1>
       <columns>
+        <neonTreeTableColumn>
+          <name>33dab0a4-01f6-48b9-b1e0-6bd5b089d2d7</name>
+          <entityField>PICTURE</entityField>
+        </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>9664cd27-0bd3-48e1-bc4e-b80e8ce52c64</name>
           <entityField>CONTACT_ID</entityField>
diff --git a/neonView/Prod2prodFilter_view/Prod2prodFilter_view.aod b/neonView/Prod2prodFilter_view/Prod2prodFilter_view.aod
index c009ab9b93b68c970edc4ed546fa70443de9a91b..ef67b19dbe7e56baba2c48a2fda5493ec7b03832 100644
--- a/neonView/Prod2prodFilter_view/Prod2prodFilter_view.aod
+++ b/neonView/Prod2prodFilter_view/Prod2prodFilter_view.aod
@@ -20,6 +20,10 @@
       </devices>
       <title>Parts list</title>
       <columns>
+        <neonTreeTableColumn>
+          <name>20ab6e11-ed41-4e54-973a-fa3be1be0764</name>
+          <entityField>PICTURE</entityField>
+        </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>43d3c9b0-21ab-4996-8d24-af74a5ee1e1a</name>
           <entityField>PRODUCTCODE</entityField>
@@ -63,6 +67,10 @@
         <element>TAKEPRICE</element>
       </editableColumns>
       <columns>
+        <neonTableColumn>
+          <name>6804d8c8-4eea-4d10-acf3-beb7e3e69244</name>
+          <entityField>PICTURE</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>82c22185-4532-4084-a7d2-0f64270e50b4</name>
           <entityField>PRODUCTCODE</entityField>
diff --git a/neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod b/neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod
index 4a8121fb008d4e37a98e6ed4bda8b76cab0fe4dd..cb734d95b7b334126d9312495aed96a8ff142cfd 100644
--- a/neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod
+++ b/neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod
@@ -18,6 +18,10 @@
       <descriptionField>TRACKINGDATE</descriptionField>
       <entityField>#ENTITY</entityField>
       <columns>
+        <neonTableColumn>
+          <name>162997d8-5ea1-4ee2-9fb1-add45d2a0d52</name>
+          <entityField>PICTURE</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>fa423332-8987-4fc2-981c-66447678b922</name>
           <entityField>TRACKINGDATE</entityField>
@@ -40,6 +44,10 @@
       <name>Treetable</name>
       <entityField>#ENTITY</entityField>
       <columns>
+        <neonTreeTableColumn>
+          <name>d20a13e9-97e1-461e-8aab-8dec1a23a647</name>
+          <entityField>PICTURE</entityField>
+        </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>314436db-0a9e-4113-ab70-7922a7a03ab5</name>
           <entityField>TRACKINGDATE</entityField>
diff --git a/neonView/TimetrackingPreview_view/TimetrackingPreview_view.aod b/neonView/TimetrackingPreview_view/TimetrackingPreview_view.aod
index 59b86472d8ec3e83e6776e830bd9f79963d02b2b..8072e61cb54a9b8d1928a0e6dab2f0c236da2df4 100644
--- a/neonView/TimetrackingPreview_view/TimetrackingPreview_view.aod
+++ b/neonView/TimetrackingPreview_view/TimetrackingPreview_view.aod
@@ -8,26 +8,13 @@
     </headerFooterLayout>
   </layout>
   <children>
-    <genericViewTemplate>
-      <name>Details</name>
-      <showDrawer v="true" />
-      <drawerCaption>Details</drawerCaption>
-      <entityField>#ENTITY</entityField>
-      <fields>
-        <entityFieldLink>
-          <name>835197c0-2e0c-4989-8d5b-80ccd064d55e</name>
-          <entityField>CONTACT_ID</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>ce7d8cc0-ac9c-4195-861f-23483db6cd91</name>
-          <entityField>TRACKINGDATE</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>45f4f97c-5fde-4c90-9dba-4e5b540328b3</name>
-          <entityField>TRACKINGMINUTES</entityField>
-        </entityFieldLink>
-      </fields>
-    </genericViewTemplate>
+    <cardViewTemplate>
+      <name>Card</name>
+      <iconField>PICTURE</iconField>
+      <titleField>CONTACT_ID</titleField>
+      <subtitleField>TRACKINGDATE</subtitleField>
+      <informationField>TRACKINGMINUTES</informationField>
+    </cardViewTemplate>
     <genericViewTemplate>
       <name>Info</name>
       <showDrawer v="true" />
diff --git a/process/Product_lib/process.js b/process/Product_lib/process.js
index 8f4bb1eed7f67baf70d5a0db00972763e4757d57..51f13baf3e085ce7e6282fb8f08addf0733c93ae 100644
--- a/process/Product_lib/process.js
+++ b/process/Product_lib/process.js
@@ -410,6 +410,34 @@ ProductUtils.removeImage = function(pProductId)
     return ImageUtils.remove("PRODUCT", "IMAGE", pProductId);
 }
 
+/**
+ * returns the product name for the productid
+ * 
+ * @param {String} pProductId the id of the product.
+ * @return {String} the name of the product
+ */
+ProductUtils.getProductName = function(pProductId)
+{
+    return newSelect("PRODUCT.PRODUCTNAME")
+    .from("PRODUCT")
+    .whereIfSet("PRODUCT.PRODUCTID", pProductId)
+    .cell();
+}
+
+/**
+ * returns the product name for the productid
+ * 
+ * @param {String} pProductIdColumn the productIdColumn
+ * @return {String} the name of the product as subSQL
+ */
+ProductUtils.getProductNameSubSql = function(pProductIdColumn)
+{
+    return newSelect("PRODUCT.PRODUCTNAME")
+    .from("PRODUCT")
+    .whereIfSet("PRODUCT.PRODUCTID = " + pProductIdColumn)
+    .toString();
+}
+
 /**
  * Class containing utility functions for Prod2Prod (Parts list)
  *