diff --git a/entity/VisitPlanEntry_entity/VisitPlanEntry_entity.aod b/entity/VisitPlanEntry_entity/VisitPlanEntry_entity.aod
index b2bbe781dbe8f457d19d9e55790a7b018c05d732..9f368889fffa44029278bcac66414a50193d3ab1 100644
--- a/entity/VisitPlanEntry_entity/VisitPlanEntry_entity.aod
+++ b/entity/VisitPlanEntry_entity/VisitPlanEntry_entity.aod
@@ -188,7 +188,12 @@
     </entityField>
     <entityField>
       <name>VISITRECOMMENDATION_ID</name>
+      <title>Visit Recommendation</title>
+      <consumer>Visitrecommendations</consumer>
+      <stateProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/visitrecommendation_id/stateProcess.js</stateProcess>
       <valueProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/visitrecommendation_id/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/visitrecommendation_id/displayValueProcess.js</displayValueProcess>
+      <onValueChange>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/visitrecommendation_id/onValueChange.js</onValueChange>
     </entityField>
     <entityField>
       <name>APPOINTMENT_ID</name>
@@ -285,6 +290,28 @@
       <name>VisitrecommendationId_param</name>
       <expose v="true" />
     </entityParameter>
+    <entityConsumer>
+      <name>Visitrecommendations</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>VisitRecommendation_entity</entityName>
+        <fieldName>#PROVIDER</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>VisitrecommendationId_param</name>
+          <valueProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/visitrecommendations/children/visitrecommendationid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>PrioritySource_param</name>
+          <valueProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/visitrecommendations/children/prioritysource_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityParameter>
+      <name>PrioritySource_param</name>
+      <expose v="true" />
+    </entityParameter>
   </entityFields>
   <recordContainers>
     <jDitoRecordContainer>
diff --git a/entity/VisitPlanEntry_entity/entityfields/visitrecommendation_id/displayValueProcess.js b/entity/VisitPlanEntry_entity/entityfields/visitrecommendation_id/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..5b65509fef05a0c4998e67e5d57d7fccf46325ee
--- /dev/null
+++ b/entity/VisitPlanEntry_entity/entityfields/visitrecommendation_id/displayValueProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+import("Context_lib");
+
+result.string(ContextUtils.loadContentTitle("VisitRecommendation_entity", vars.get("$field.VISITRECOMMENDATION_ID")));
\ No newline at end of file
diff --git a/entity/VisitPlanEntry_entity/entityfields/visitrecommendation_id/onValueChange.js b/entity/VisitPlanEntry_entity/entityfields/visitrecommendation_id/onValueChange.js
new file mode 100644
index 0000000000000000000000000000000000000000..6417ab79749e84e71466fd15a019269d03a44e8b
--- /dev/null
+++ b/entity/VisitPlanEntry_entity/entityfields/visitrecommendation_id/onValueChange.js
@@ -0,0 +1,14 @@
+import("system.neon");
+import("Sql_lib");
+import("KeywordRegistry_basic");
+import("system.vars");
+
+if(vars.get("$param.PrioritySource_param") == $KeywordRegistry.visitRecommendationPrioSource$manual())
+{
+    var Ids = newSelect("CONTACT_ID, CONTACT_PERSON_ID").from("VISITRECOMMENDATION")
+            .where("VISITRECOMMENDATION.VISITRECOMMENDATIONID", vars.get("$local.value"))
+            .arrayRow()
+
+    neon.setFieldValue("$field.CONTACT_ID", Ids[1]);
+    neon.setFieldValue("$field.ORGANISATION_CONTACT_ID", Ids[0]);
+}
diff --git a/entity/VisitPlanEntry_entity/entityfields/visitrecommendation_id/stateProcess.js b/entity/VisitPlanEntry_entity/entityfields/visitrecommendation_id/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..fcc4878c47bb5d0370156de181614b69c1291e41
--- /dev/null
+++ b/entity/VisitPlanEntry_entity/entityfields/visitrecommendation_id/stateProcess.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("KeywordRegistry_basic");
+import("system.vars");
+import("Sql_lib");
+import("system.neon")
+
+if(vars.get("$param.PrioritySource_param") == $KeywordRegistry.visitRecommendationPrioSource$visitFrequency())
+{
+    result.string(neon.COMPONENTSTATE_INVISIBLE)
+}    
diff --git a/entity/VisitPlanEntry_entity/entityfields/visitrecommendations/children/prioritysource_param/valueProcess.js b/entity/VisitPlanEntry_entity/entityfields/visitrecommendations/children/prioritysource_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a5dbcbd2d39ba19b5ba2b5683b19e4785579013c
--- /dev/null
+++ b/entity/VisitPlanEntry_entity/entityfields/visitrecommendations/children/prioritysource_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("KeywordRegistry_basic");
+import("system.result");
+
+result.string($KeywordRegistry.visitRecommendationPrioSource$manual());
\ No newline at end of file
diff --git a/entity/VisitPlanEntry_entity/entityfields/visitrecommendations/children/visitrecommendationid_param/valueProcess.js b/entity/VisitPlanEntry_entity/entityfields/visitrecommendations/children/visitrecommendationid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..25f8033cfa0e90c8d8bf9337f127150f01d2fa6e
--- /dev/null
+++ b/entity/VisitPlanEntry_entity/entityfields/visitrecommendations/children/visitrecommendationid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.VISITRECOMMENDATION_ID"));
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/VisitRecommendation_entity.aod b/entity/VisitRecommendation_entity/VisitRecommendation_entity.aod
index 122aecbad7c8416f3899f0646ae322097b5fb6f4..857530448d025e25a1d0d25024fb1876ddacbea7 100644
--- a/entity/VisitRecommendation_entity/VisitRecommendation_entity.aod
+++ b/entity/VisitRecommendation_entity/VisitRecommendation_entity.aod
@@ -7,6 +7,7 @@
   <grantCreate v="true" />
   <grantUpdateProcess>%aditoprj%/entity/VisitRecommendation_entity/grantUpdateProcess.js</grantUpdateProcess>
   <grantDeleteProcess>%aditoprj%/entity/VisitRecommendation_entity/grantDeleteProcess.js</grantDeleteProcess>
+  <contentTitleProcess>%aditoprj%/entity/VisitRecommendation_entity/contentTitleProcess.js</contentTitleProcess>
   <initFilterProcess>%aditoprj%/entity/VisitRecommendation_entity/initFilterProcess.js</initFilterProcess>
   <iconId>VAADIN:BRIEFCASE</iconId>
   <image>VAADIN:BRIEFCASE</image>
@@ -18,6 +19,20 @@
       <targetContextField>TARGET_CONTEXT</targetContextField>
       <targetIdField>TARGET_ID</targetIdField>
       <documentation>%aditoprj%/entity/VisitRecommendation_entity/entityfields/#provider/documentation.adoc</documentation>
+      <dependencies>
+        <entityDependency>
+          <name>d39ab3e0-0b61-4a6d-a6f9-5c5fef20a801</name>
+          <entityName>VisitPlanEmployeeWeek_entity</entityName>
+          <fieldName>recommendations</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+        <entityDependency>
+          <name>3c5d510c-f7b3-401a-99cc-36b8e86c18f1</name>
+          <entityName>VisitPlanEntry_entity</entityName>
+          <fieldName>Visitrecommendations</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
     </entityProvider>
     <entityField>
       <name>CONTACT_ID</name>
@@ -155,6 +170,10 @@
       <contentType>IMAGE</contentType>
       <valueProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/icon/valueProcess.js</valueProcess>
     </entityField>
+    <entityField>
+      <name>MAP_MARKER_COLOR</name>
+      <valueProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/map_marker_color/valueProcess.js</valueProcess>
+    </entityField>
     <entityField>
       <name>TARGET_CONTEXT</name>
       <valueProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/target_context/valueProcess.js</valueProcess>
@@ -247,6 +266,44 @@
       <name>TARGET_ID</name>
       <valueProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/target_id/valueProcess.js</valueProcess>
     </entityField>
+    <entityField>
+      <name>LAT</name>
+      <contentType>NUMBER</contentType>
+    </entityField>
+    <entityField>
+      <name>LON</name>
+      <contentType>NUMBER</contentType>
+    </entityField>
+    <entityField>
+      <name>ADDRESS_ID</name>
+    </entityField>
+    <entityField>
+      <name>MAP_CONFIG</name>
+      <valueProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/map_config/valueProcess.js</valueProcess>
+    </entityField>
+    <entityParameter>
+      <name>MapViewCenterLat_param</name>
+      <valueProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/mapviewcenterlat_param/valueProcess.js</valueProcess>
+      <expose v="true" />
+      <documentation>%aditoprj%/entity/VisitRecommendation_entity/entityfields/mapviewcenterlat_param/documentation.adoc</documentation>
+    </entityParameter>
+    <entityParameter>
+      <name>MapViewCenterLon_param</name>
+      <valueProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/mapviewcenterlon_param/valueProcess.js</valueProcess>
+      <expose v="true" />
+      <documentation>%aditoprj%/entity/VisitRecommendation_entity/entityfields/mapviewcenterlon_param/documentation.adoc</documentation>
+    </entityParameter>
+    <entityField>
+      <name>MAP_FEATURE_COLLECTION</name>
+    </entityField>
+    <entityParameter>
+      <name>VisitrecommendationId_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityParameter>
+      <name>PrioritySource_param</name>
+      <expose v="true" />
+    </entityParameter>
   </entityFields>
   <recordContainers>
     <jDitoRecordContainer>
@@ -336,6 +393,18 @@
           <isFilterable v="true" />
           <isLookupFilter v="true" />
         </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>LON.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>LAT.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>ADDRESS_ID.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>ADDRESS_ID.displayValue</name>
+        </jDitoRecordFieldMapping>
       </recordFieldMappings>
       <filterExtensions>
         <filterExtensionSet>
diff --git a/entity/VisitRecommendation_entity/contentTitleProcess.js b/entity/VisitRecommendation_entity/contentTitleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..fa1bf29c072e1efa7bf8443f79d92ae79295ba95
--- /dev/null
+++ b/entity/VisitRecommendation_entity/contentTitleProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.datetime");
+import("system.translate");
+import("system.vars");
+
+title = vars.get("$field.ORGANISATION_NAME") + " - " + translate.text("Due") + ": " + datetime.toDate(vars.get("$field.DUE_DATE"), "dd.MM.yyyy")
+
+result.string(title);
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/entityfields/map_config/valueProcess.js b/entity/VisitRecommendation_entity/entityfields/map_config/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a1bcbb9a65cfda111f21c9a1a2bb9800698566af
--- /dev/null
+++ b/entity/VisitRecommendation_entity/entityfields/map_config/valueProcess.js
@@ -0,0 +1,22 @@
+import("system.result");
+import("system.vars");
+import("MapViewTemplate_lib");
+
+var config = MapViewConfigUtils.getBaseConfiguration();
+config.startingCenterPosition.lat = parseFloat(vars.get("$param.MapViewCenterLat_param"));
+config.startingCenterPosition.lon = parseFloat(vars.get("$param.MapViewCenterLon_param"));
+config.startingCenterPosition.zoomLevel = 5;
+
+var tileConfig = MapViewConfigUtils.getMainTileConfig();
+config.tiles = tileConfig;
+
+//when opening the AroundLocation view we do want to have the source organisation as center, so let's not overwrite the starting center position by 
+//looking for the users current location
+if ( vars.exists("$param.MapViewAdditionalFeatures_param") && vars.get("$param.MapViewAdditionalFeatures_param") )
+{
+   config.startingCenterPosition.zoomLevel = 10;//max amount of km is 100, so let's zoom in
+   config.startingCenterPosition.autoLocate = false;
+}
+
+var res = JSON.stringify(config);
+result.string(res);
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/entityfields/map_marker_color/valueProcess.js b/entity/VisitRecommendation_entity/entityfields/map_marker_color/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..fcf772a4fce303de0110d788390f25301e61c62b
--- /dev/null
+++ b/entity/VisitRecommendation_entity/entityfields/map_marker_color/valueProcess.js
@@ -0,0 +1,26 @@
+import("system.vars");
+import("KeywordRegistry_basic");
+import("system.result");
+import("system.neon");
+
+var res = ""
+switch(vars.getString("$field.PRIORITY"))
+{
+    case $KeywordRegistry.visitRecommendationPriority$low():
+        res = neon.PRIORITY_NONE_COLOR;
+        break;
+    case $KeywordRegistry.visitRecommendationPriority$medium():
+        res = neon.PRIORITY_LOW_COLOR;
+        break;
+    case $KeywordRegistry.visitRecommendationPriority$high():
+        res = neon.PRIORITY_MEDIUM_COLOR;
+        break;
+    case $KeywordRegistry.visitRecommendationPriority$veryHigh():
+        res = neon.PRIORITY_MEDIUM_COLOR;
+        break;
+    case $KeywordRegistry.visitRecommendationPriority$critical():
+        res = neon.PRIORITY_HIGH_COLOR;
+        break;
+}
+
+result.string(res);
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/entityfields/mapviewcenterlat_param/documentation.adoc b/entity/VisitRecommendation_entity/entityfields/mapviewcenterlat_param/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..f92fe01e05c83b2494bda29e055703b4c0361734
--- /dev/null
+++ b/entity/VisitRecommendation_entity/entityfields/mapviewcenterlat_param/documentation.adoc
@@ -0,0 +1,2 @@
+Pass a valid default decimal (or string-decimal) latitude-value to set the default center position of the Map-view which is based on the parameters 
+`MapViewCenterLat_param` and `MapViewCenterLon_param`.
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/entityfields/mapviewcenterlat_param/valueProcess.js b/entity/VisitRecommendation_entity/entityfields/mapviewcenterlat_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..75f0dea1eb7137a40bac5eccca2c2e06bcc753d8
--- /dev/null
+++ b/entity/VisitRecommendation_entity/entityfields/mapviewcenterlat_param/valueProcess.js
@@ -0,0 +1,2 @@
+import("system.result");
+result.string("50.989791");
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/entityfields/mapviewcenterlon_param/documentation.adoc b/entity/VisitRecommendation_entity/entityfields/mapviewcenterlon_param/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..f92fe01e05c83b2494bda29e055703b4c0361734
--- /dev/null
+++ b/entity/VisitRecommendation_entity/entityfields/mapviewcenterlon_param/documentation.adoc
@@ -0,0 +1,2 @@
+Pass a valid default decimal (or string-decimal) latitude-value to set the default center position of the Map-view which is based on the parameters 
+`MapViewCenterLat_param` and `MapViewCenterLon_param`.
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/entityfields/mapviewcenterlon_param/valueProcess.js b/entity/VisitRecommendation_entity/entityfields/mapviewcenterlon_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2cdca40931a3a2e532a2d0d1d13bc70c7d955238
--- /dev/null
+++ b/entity/VisitRecommendation_entity/entityfields/mapviewcenterlon_param/valueProcess.js
@@ -0,0 +1,2 @@
+import("system.result");
+result.string("4.772377");
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/entityfields/newentrygroup/children/newvisitplaneentry/onActionProcess.js b/entity/VisitRecommendation_entity/entityfields/newentrygroup/children/newvisitplaneentry/onActionProcess.js
index e5ac707432897a4fca32c7d98e93f4deea37f655..373517b099005b28f7a2c375313397defada0f8b 100644
--- a/entity/VisitRecommendation_entity/entityfields/newentrygroup/children/newvisitplaneentry/onActionProcess.js
+++ b/entity/VisitRecommendation_entity/entityfields/newentrygroup/children/newvisitplaneentry/onActionProcess.js
@@ -9,6 +9,7 @@ params["NoVisitPlanEmployeeWeek_param"] = true;
 params["ComingFromRecommendation_param"] = true;
 params["ContactId_param"] = vars.get("$field.CONTACT_PERSON_ID");
 params["Entrydate_param"] = vars.get("$field.DUE_DATE");
+params["PrioritySource_param"] = vars.get("$field.PRIORITY_SOURCE");
 params["VisitrecommendationId_param"] = vars.get("$field.UID");
 
 neon.openContext("VisitPlanEntry", null, null, neon.OPERATINGSTATE_NEW, params);
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js b/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js
index b81300d798fe257ccabdec92ab27e71394fc5f2b..19858910ea9c252784d9c696e9aa637ea54c3c5b 100644
--- a/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js
@@ -36,6 +36,10 @@ var recommendationSQLData = newSelect(
                                 "VISITRECOMMENDATION.USER_NEW",         //10
                                 "VISITRECOMMENDATION.CONTACT_PERSON_ID",//11
                                 "VISITRECOMMENDATION.RESPONSIBLE",      //12
+                                //Fields for MapView
+                                "ADDRESS.LON",                          //13
+                                "ADDRESS.LAT",                          //14
+                                "ADDRESS.ADDRESSID"                     //15
                             ]) 
                             .from("VISITRECOMMENDATION")
                             .join("CONTACT", "coalesce(VISITRECOMMENDATION.CONTACT_PERSON_ID, VISITRECOMMENDATION.CONTACT_ID) = CONTACT.CONTACTID")
@@ -45,21 +49,36 @@ var recommendationSQLData = newSelect(
 
 var idValues = false;
 if (vars.exists("$local.idvalues") && vars.get("$local.idvalues"))
+{
     idValues = true;
+}    
 
 if(idValues == true)
+{
     recommendationSQLData.and("VISITRECOMMENDATION.VISITRECOMMENDATIONID", vars.get("$local.idvalues"), SqlBuilder.IN())
-
+}    
+else if(vars.get("$param.VisitrecommendationId_param"))
+{
+    recommendationSQLData.and("VISITRECOMMENDATION.VISITRECOMMENDATIONID", vars.get("$param.VisitrecommendationId_param"));
+}    
+    
 recommendationSQLData = recommendationSQLData.table();
 
 for( let i = 0; i < recommendationSQLData.length; i++)
 {
+    var prio = ""
     if(recommendationSQLData[i][2])
-        var prio = recommendationSQLData[i][2];
+    {
+        prio = recommendationSQLData[i][2];
+    }    
     else if(recommendationSQLData[i][3])
+    {
         prio = getPrioByDueDate(recommendationSQLData[i][3]);
+    }    
     else
+    {
         prio = $KeywordRegistry.visitRecommendationPriority$low();  
+    }    
 
     tmpData = [
         recommendationSQLData[i][0], //UID.value
@@ -80,7 +99,12 @@ for( let i = 0; i < recommendationSQLData.length; i++)
         ContactUtils.getFullTitleByContactId(recommendationSQLData[i][11], false), //CONTACT_PERSON_ID.displayvalue
         recommendationSQLData[i][11], //CONTACT_PERSON_ID.value
         ContactUtils.getFullTitleByContactId(recommendationSQLData[i][12], false), //RESPONSIBLE.displayvalue
-        recommendationSQLData[i][12] //RESPONSIBLE.value
+        recommendationSQLData[i][12], //RESPONSIBLE.value
+        recommendationSQLData[i][13], //LON.value
+        recommendationSQLData[i][14], //LAT.value
+        recommendationSQLData[i][15],  //ADDRESS_ID.value
+        AddressUtils.getFormattedOnlineAddressById(recommendationSQLData[i][15]) //ADDRESS_ID.displayValue
+        
     ];
 
     recommendationData.push(tmpData);
@@ -121,6 +145,10 @@ if(idValues == false)
                                         , activitySubQuery //8
                                         , "org.NAME" //9
                                         , "PERSON.PERSONID" //10
+                                        //Fields for MapView
+                                        , "ADDRESS.LON"//11
+                                        , "ADDRESS.LAT"//12
+                                        , "ADDRESS.ADDRESSID"//13
                                 ])
                             .from("CONTACT")
                             .join("ORGANISATION", "CONTACT.ORGANISATION_ID = org.ORGANISATIONID", "org")
@@ -181,7 +209,12 @@ if(idValues == false)
             ContactUtils.getFullTitleByContactId(visitFrequencyData[i][1], false), //CONTACT_PERSON_ID.displayValue
             isPersonContact ? visitFrequencyData[i][1]: "", //CONTACT_PERSON_ID.value
             "", //RESPONSIBLE.displayValue
-            "" //RESPONSIBLE.value
+            "", //RESPONSIBLE.value
+            visitFrequencyData[i][11], //LON.value
+            visitFrequencyData[i][12], //LAT.value
+            visitFrequencyData[i][13], //ADDRESS_ID.value
+            AddressUtils.getFormattedOnlineAddressById(visitFrequencyData[i][13]) //ADDRESS_ID.displayValue
+
         ];
         
         
@@ -200,9 +233,12 @@ if(idValues == false)
        
        visitEntry = visitEntry.and(newWhere("VISITPLANENTRY.ENTRYDATE", eMath.subInt(vars.get("$sys.today"), datetime.ONE_DAY * 7), SqlBuilder.LESS_OR_EQUAL())
             .and("VISITPLANENTRY.STATUS", $KeywordRegistry.visitPlanEntryStatus$Visitreportcreated(), SqlBuilder.NOT_EQUAL()))
-            .or("VISITPLANENTRY.STATUS", $KeywordRegistry.visitPlanEntryStatus$Visitreportcreated(), SqlBuilder.EQUAL()).cell()
+            .or("VISITPLANENTRY.STATUS", $KeywordRegistry.visitPlanEntryStatus$Visitreportcreated(), SqlBuilder.EQUAL())
+            .cell()
+            
+       var prioritySource = vars.get("$param.PrioritySource_param");
        
-       if(!manualRec) //if manual Record was created, visitfrequency is not relevant
+       if(prioritySource != $KeywordRegistry.visitRecommendationPrioSource$manual() && !manualRec) //if manual Record was created, visitfrequency is not relevant
        {
            //!visitEntryExists - if no visitplanentry for the organisation/person from recommendation was created -> show recommendation so it can be planned
            if(!visitEntryExists || visitEntry)
@@ -216,7 +252,7 @@ if(idValues == false)
 var filter = vars.get("$local.filter"); 
 //TODO: this is a workaround that filters the records manually, it should be possible to filter the users with a tools.* method
 var filterFields = ["", "ORGANISATION_NAME", "STREET", "COUNTRY" , "ZIP", "CITY", "PRIORITY", "PRIORITY_SOURCE", "", "DUE_DATE", "INFO", "CONTACT_ID"
-    , "", "", "USER_NEW", "", "CONTACT_PERSON_ID", "", "RESPONSIBLE"];
+    , "", "", "USER_NEW", "", "CONTACT_PERSON_ID", "", "RESPONSIBLE", "LON", "LAT", "", ""];
 var filterFns = {
     "$$$LOOKUPFIELD$$$" : function (pRecordValue, pFilterValue, pOperator, pRow)
     {
@@ -235,6 +271,7 @@ var filterFns = {
         return false;
     }
 };
+
 recommendationData = JditoFilterUtils.filterRecords(filterFields, recommendationData, filter.filter, filterFns);
 
 
@@ -264,7 +301,9 @@ for (let field in order)
 }
 
 if (!sortOrder.length) 
+{
     sortOrder = [9, false]; //default sort by duedate
+}    
 
 ArrayUtils.sortMulti(recommendationData, sortOrder);
 result.object(recommendationData);
@@ -279,15 +318,25 @@ function getPrioByDueDate(pDueDate)
         var dateDifference = pDueDate - currentDate;
 
         if(dateDifference < 0)
+        {
             prio = $KeywordRegistry.visitRecommendationPriority$critical();
+        }    
         else if(dateDifference < datetime.ONE_DAY * 3)
+        {
             prio = $KeywordRegistry.visitRecommendationPriority$veryHigh();
+        }    
         else if(dateDifference < datetime.ONE_DAY * 7)
+        {
             prio = $KeywordRegistry.visitRecommendationPriority$high();
+        }    
         else if(dateDifference < datetime.ONE_DAY * 14)
+        {
             prio = $KeywordRegistry.visitRecommendationPriority$medium();
+        }    
         else
+        {
             prio = $KeywordRegistry.visitRecommendationPriority$low();
+        }    
     }
     
     return prio;
diff --git a/neonContext/VisitRecommendation/VisitRecommendation.aod b/neonContext/VisitRecommendation/VisitRecommendation.aod
index 6c3505a44e0d4cbaf19d8b24ee6ff5d0c2146f66..0b8098fb4cb3d5a1840c094dbfcfa5a6708b459a 100644
--- a/neonContext/VisitRecommendation/VisitRecommendation.aod
+++ b/neonContext/VisitRecommendation/VisitRecommendation.aod
@@ -4,6 +4,7 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterView>VisitRecommendationFilter_view</filterView>
   <editView>VisitRecommendationEdit_view</editView>
+  <lookupView>VisitRecommendationFilter_view</lookupView>
   <entity>VisitRecommendation_entity</entity>
   <references>
     <neonViewReference>
diff --git a/neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod b/neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod
index 9bcde0169b908aaad8183990e9e1c80ce9f3004d..7be65dd5be172b50cfc4cb0eb268449ca62969b6 100644
--- a/neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod
+++ b/neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod
@@ -16,6 +16,10 @@
       <entityField>#ENTITY</entityField>
       <isEditable v="true" />
       <fields>
+        <entityFieldLink>
+          <name>3f3cb663-2649-4c49-9b98-9bab67282cd5</name>
+          <entityField>VISITRECOMMENDATION_ID</entityField>
+        </entityFieldLink>
         <entityFieldLink>
           <name>8c3a2df7-3928-43d4-baa9-686747ed020c</name>
           <entityField>ORGANISATION_CONTACT_ID</entityField>
diff --git a/neonView/VisitRecommendationFilter_view/VisitRecommendationFilter_view.aod b/neonView/VisitRecommendationFilter_view/VisitRecommendationFilter_view.aod
index a0da27ee4752c698ae4ebc2591996ac9a52824b5..eb87ad0eee7e0d73546dfcc4bcf0f8047cc73458 100644
--- a/neonView/VisitRecommendationFilter_view/VisitRecommendationFilter_view.aod
+++ b/neonView/VisitRecommendationFilter_view/VisitRecommendationFilter_view.aod
@@ -130,5 +130,15 @@
         </neonTreeTableColumn>
       </columns>
     </treeTableViewTemplate>
+    <mapViewTemplate>
+      <name>Map</name>
+      <configField>MAP_CONFIG</configField>
+      <autoGeneratedMarkerLatitudeField>LAT</autoGeneratedMarkerLatitudeField>
+      <autoGeneratedMarkerLongitudeField>LON</autoGeneratedMarkerLongitudeField>
+      <autoGeneratedMarkerIconField>#ICON</autoGeneratedMarkerIconField>
+      <autoGeneratedMarkerColorField>MAP_MARKER_COLOR</autoGeneratedMarkerColorField>
+      <autoGeneratedMarkerPopupField>ADDRESS_ID</autoGeneratedMarkerPopupField>
+      <maxDBRow v="400" />
+    </mapViewTemplate>
   </children>
 </neonView>
diff --git a/process/JditoFilter_lib/process.js b/process/JditoFilter_lib/process.js
index e4855201cbbe008f2955c50765834002746e0095..ad1aa0747f44e44b794e524b5072ae70a9e85849 100644
--- a/process/JditoFilter_lib/process.js
+++ b/process/JditoFilter_lib/process.js
@@ -314,14 +314,15 @@ JditoFilter.prototype.checkRecord = function (pRow)
                 return (new RegExp("^" + RegExpUtils.escapePatternStr(pFilterValue) + "$", regexFlags)).test(pRowValue);
             case "NOT_EQUAL":
                 return !(new RegExp("^" + RegExpUtils.escapePatternStr(pFilterValue) + "$", regexFlags)).test(pRowValue);
+            //String-comparison returns false values < <= > >= are just relevant for numbervalues
             case "LESS":
-                return pRowValue < pFilterValue;
+                return new Number(pRowValue) < new Number(pFilterValue);
             case "LESS_OR_EQUAL":
-                return pRowValue <= pFilterValue;
+                return new Number(pRowValue) <= new Number(pFilterValue);
             case "GREATER":
-                return pRowValue > pFilterValue;
+                return new Number(pRowValue) > new Number(pFilterValue);
             case "GREATER_OR_EQUAL":
-                return pRowValue >= pFilterValue;
+                return new Number(pRowValue) >= new Number(pFilterValue);
             case "ISNULL":
                 return pRowValue == "";
             case "ISNOTNULL":