diff --git a/.liquibase/Data_alias/basic/2020.1.3/add_Address_LatLon.xml b/.liquibase/Data_alias/basic/2020.1.3/add_Address_LatLon.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cb352481afaa45ad86684e169e4867f64e431cc4
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2020.1.3/add_Address_LatLon.xml
@@ -0,0 +1,10 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="s.listl" id="2f2d806c-8aab-42f0-91c2-c7d15322d89f">
+        <addColumn tableName="ADDRESS">
+            <column name="LAT" type="DECIMAL(10,8)"/>
+            <column name="LON" type="DECIMAL(11,8)"/>
+        </addColumn>
+    </changeSet>
+</databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/2020.1.3/changelog.xml b/.liquibase/Data_alias/basic/2020.1.3/changelog.xml
index ac6898c7f18146b9aa3b2701ecc493491fa9d3f2..bd8e2232fea6b43b1f717f1487bd281a704bfbef 100644
--- a/.liquibase/Data_alias/basic/2020.1.3/changelog.xml
+++ b/.liquibase/Data_alias/basic/2020.1.3/changelog.xml
@@ -2,6 +2,7 @@
 <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
     <include file="AlterButtonLabelTitles/AlterButtonLabelTitles.xml" relativeToChangelogFile="true" />
+    <include file="add_Address_LatLon.xml" relativeToChangelogFile="true"/>
     <!--    disabled the following script since it is WIP-->
     <!--<include file="VisitPlanEntry/rename_VisitPlanEntry_ORGANISATION_ID.xml" relativeToChangelogFile="true" />-->
 </databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/_demoData/changelog.xml b/.liquibase/Data_alias/basic/_demoData/changelog.xml
index e6850dd5b6879f44ea9c7feba9b6bbefa4db5809..e0d3d5755882822c78f8a3609d6452a23a9d7749 100644
--- a/.liquibase/Data_alias/basic/_demoData/changelog.xml
+++ b/.liquibase/Data_alias/basic/_demoData/changelog.xml
@@ -50,5 +50,5 @@
   <include file="generatedData/exporttemplatefield.xml" relativeToChangelogFile="true"/>
   <include file="generatedData/exporttemplateplaceofuse.xml" relativeToChangelogFile="true"/>
   <include file="generatedData/documenttemplateplaceofuse.xml" relativeToChangelogFile="true"/>
-  <include file="generatedData/visitplan.xml" relativeToChangelogFile="true"/>
+  <!--<include file="generatedData/visitplan.xml" relativeToChangelogFile="true"/>-->
 </databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/changelog.xml b/.liquibase/Data_alias/changelog.xml
index 415dcce4162c36e2f1c7945a6082d40e3968a5b1..b3fee691bdea9f7905167ec0361cff00139a4211 100644
--- a/.liquibase/Data_alias/changelog.xml
+++ b/.liquibase/Data_alias/changelog.xml
@@ -14,6 +14,7 @@
     <include relativeToChangelogFile="true" file="basic/2020.1.0/changelog.xml"/>
     <include relativeToChangelogFile="true" file="basic/2020.1.1/changelog.xml"/>
     <include relativeToChangelogFile="true" file="basic/2020.1.2/changelog.xml"/>
+    <include relativeToChangelogFile="true" file="basic/2020.1.3/changelog.xml"/>
 
     <!--enable this only when you definetly want to overwrite the existing data with demo records:--> 
     <!--<include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/>-->
diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod
index 6e685b98b76ffee42644c33a1e7fe269291ca42a..b42801cfda3ebf6e3df2109928f50c17d0e41a50 100644
--- a/aliasDefinition/Data_alias/Data_alias.aod
+++ b/aliasDefinition/Data_alias/Data_alias.aod
@@ -1143,6 +1143,34 @@
                 <title>Creation user</title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>LON</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="3" />
+                <size v="11" />
+                <scale v="8" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>LAT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="3" />
+                <size v="10" />
+                <scale v="8" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
diff --git a/entity/Address_entity/Address_entity.aod b/entity/Address_entity/Address_entity.aod
index 0b6f95c995e62e440e543f9a9839fd760bf4a6c3..e0515671c3ca0509712f65da012fe9bb9c4609ff 100644
--- a/entity/Address_entity/Address_entity.aod
+++ b/entity/Address_entity/Address_entity.aod
@@ -469,6 +469,16 @@
       <name>ReplaceStandardAddress_param</name>
       <expose v="true" />
     </entityParameter>
+    <entityField>
+      <name>LAT</name>
+      <title>Latitude</title>
+      <contentType>NUMBER</contentType>
+    </entityField>
+    <entityField>
+      <name>LON</name>
+      <title>Longitude</title>
+      <contentType>NUMBER</contentType>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -577,6 +587,14 @@
           <name>COUNTRY.displayValue</name>
           <expression>%aditoprj%/entity/Address_entity/recordcontainers/db/recordfieldmappings/country.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>LAT.value</name>
+          <recordfield>ADDRESS.LAT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>LON.value</name>
+          <recordfield>ADDRESS.LON</recordfield>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod
index cbd7cb44ef5d77d0e3656bfe5867f3c3f68ce8f8..25867776834294c05ee0459ff890c2c9fe7af468 100644
--- a/entity/Organisation_entity/Organisation_entity.aod
+++ b/entity/Organisation_entity/Organisation_entity.aod
@@ -1353,6 +1353,12 @@
       </affectedTables>
       <affectedIds>%aditoprj%/entity/Organisation_entity/recordcontainers/index/affectedIds.js</affectedIds>
       <indexFieldMappings>
+        <indexRecordFieldMapping>
+          <name>#LOCATION</name>
+          <systemField>LOCATION</systemField>
+          <isFilterable v="false" />
+          <isLookupFilter v="false" />
+        </indexRecordFieldMapping>
         <indexRecordFieldMapping>
           <name>NAME.value</name>
           <indexFieldType>PROPER_NAME</indexFieldType>
diff --git a/entity/Organisation_entity/recordcontainers/index/query.js b/entity/Organisation_entity/recordcontainers/index/query.js
index eeb55badd15ac127cc5f9a7c8ea8b64d3d374a65..278616e2223862ec3e68fea1a44f8d1b873d26d1 100644
--- a/entity/Organisation_entity/recordcontainers/index/query.js
+++ b/entity/Organisation_entity/recordcontainers/index/query.js
@@ -5,6 +5,7 @@ import("system.calendars");
 import("system.db");
 import("Sql_lib");
 import("Communication_lib");
+import("system.SQLTYPES");
 
 /*
 Before changing the results that are returned here:
@@ -12,40 +13,39 @@ Please keep in mind that some of the indexfields are used in other modules (like
 You may want to check out if your change affects other modules. However adding more fields should not be a problem therefor.
  */
 
-var sqlQuery, sqlHelper, queryCondition, affectedIds;
-var CommMediumPhoneIds = db.array( db.COLUMN, "select KEYID from AB_KEYWORD_ENTRY join ab_keyword_attributerelation on AB_KEYWORD_ENTRYID = AB_KEYWORD_ENTRY_ID "
-        + " join ab_keyword_attribute on AB_KEYWORD_ATTRIBUTEID = AB_KEYWORD_ATTRIBUTE_ID and CHAR_VALUE = 'TELEPHONE' and AB_KEYWORD_ATTRIBUTE.CONTAINER = 'CommunicationMedium'");
-sqlHelper = new SqlMaskingUtils();
-var querySelect = newSelect("CONTACT.CONTACTID "
-                        + ", " + sqlHelper.concat(["ORGANISATION.NAME", "'|'", "ORGANISATION.CUSTOMERCODE"])
-                        + ", " + sqlHelper.concat([
-                             sqlHelper.concat(["defaultAddress.ADDRESS", "defaultAddress.BUILDINGNO", "'-'"
-                                ,"defaultAddress.COUNTRY", "defaultAddress.ZIP", "defaultAddress.CITY"])
-                            ,sqlHelper.concat(["'" + translate.text("Phone") + ":'", "(" + CommUtil.getStandardSubSqlPhone() + ")"])
-                            ,sqlHelper.concat(["'" + translate.text("Email") + ":'", "(" + CommUtil.getStandardSubSqlMail() + ")"])
-                            ], " | ") 
-                           //additional indexed fields
-                           + ", ORGANISATION.NAME"
-                           + ", ORGANISATION.ORGANISATIONID"
-                           + ", CONTACT.CONTACTID"
-                           + ", ORGANISATION.CUSTOMERCODE"
-                           + ", ADDRESS.ADDRESS " 
-                           + ", ADDRESS.COUNTRY " 
-                           + ", ADDRESS.ZIP " 
-                           + ", ADDRESS.CITY " 
-                           + ", COMMUNICATION.ADDR " 
-                           + ", PHONE.ADDR " 
-                       )
-                    .from("ORGANISATION")
-                    .join("CONTACT", "CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID and CONTACT.PERSON_ID is null")
-                    .leftJoin("ADDRESS", "defaultAddress.ADDRESSID = CONTACT.ADDRESS_ID", "defaultAddress")
-                    .leftJoin("ADDRESS", "ADDRESS.CONTACT_ID = CONTACT.CONTACTID")
-                    .leftJoin("COMMUNICATION", "COMMUNICATION.CONTACT_ID = CONTACT.CONTACTID")
-                    .leftJoin("COMMUNICATION", "PHONE.CONTACT_ID = CONTACT.CONTACTID and PHONE.MEDIUM_ID in ('" + CommMediumPhoneIds.join("', '") + "')", "PHONE")//TODO: refactor to new SqlBuilder
+var commMediumPhoneIds = CommUtil.getMediumIdsByCategory("PHONE");
+var sqlHelper = new SqlMaskingUtils();
+var querySelect = newSelect([
+        "CONTACT.CONTACTID",
+        sqlHelper.concat(["ORGANISATION.NAME", "'|'", "ORGANISATION.CUSTOMERCODE"]),
+        sqlHelper.concat([
+            sqlHelper.concat(["defaultAddress.ADDRESS", "defaultAddress.BUILDINGNO", "'-'"
+                ,"defaultAddress.COUNTRY", "defaultAddress.ZIP", "defaultAddress.CITY"]),
+            sqlHelper.concat(["'" + translate.text("Phone") + ":'", "(" + CommUtil.getStandardSubSqlPhone() + ")"]),
+            sqlHelper.concat(["'" + translate.text("Email") + ":'", "(" + CommUtil.getStandardSubSqlMail() + ")"])
+        ], " | "),
+        sqlHelper.concat([sqlHelper.cast("ADDRESS.LAT", SQLTYPES.VARCHAR, 16), sqlHelper.cast("ADDRESS.LON", SQLTYPES.VARCHAR, 16)], ","),
+        //additional indexed fields
+        "ORGANISATION.NAME",
+        "ORGANISATION.ORGANISATIONID",
+        "CONTACT.CONTACTID",
+        "ORGANISATION.CUSTOMERCODE",
+        "ADDRESS.ADDRESS",
+        "ADDRESS.COUNTRY",
+        "ADDRESS.ZIP",
+        "ADDRESS.CITY",
+        "COMMUNICATION.ADDR",
+        "PHONE.ADDR" 
+    ])
+    .from("ORGANISATION")
+    .join("CONTACT", "CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID and CONTACT.PERSON_ID is null")
+    .leftJoin("ADDRESS", "defaultAddress.ADDRESSID = CONTACT.ADDRESS_ID", "defaultAddress")
+    .leftJoin("ADDRESS", "ADDRESS.CONTACT_ID = CONTACT.CONTACTID")
+    .leftJoin("COMMUNICATION", "COMMUNICATION.CONTACT_ID = CONTACT.CONTACTID")
+    .leftJoin("COMMUNICATION", newWhere("phone.CONTACT_ID = CONTACT.CONTACTID")
+        .and(["COMMUNICATION", "MEDIUM_ID", "phone"], commMediumPhoneIds, SqlBuilder.IN()), "phone");
 
 if (vars.exists("$local.idvalue") && vars.get("$local.idvalue") && vars.get("$local.idvalue").length > 0) 
-{
-    querySelect.where("CONTACT.CONTACTID", vars.get("$local.idvalue"), SqlBuilder.IN());
-}
+    querySelect.where("CONTACT.CONTACTID", "$local.idvalue", SqlBuilder.IN());
 
 result.string(querySelect.toString());