diff --git a/.liquibase/Data_alias/basic/2021.1.2/VisitPlan/Insert_keywords_VisitFrequency.xml b/.liquibase/Data_alias/basic/2021.1.2/VisitPlan/Insert_keywords_VisitFrequency.xml
new file mode 100644
index 0000000000000000000000000000000000000000..61f90c6d8748ccecc1dda68f16a3733922233d22
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.1.2/VisitPlan/Insert_keywords_VisitFrequency.xml
@@ -0,0 +1,63 @@
+<?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="I.BenAissa" id="9d91bd4d-56dd-4ce3-85fb-8de1ed33f2ba">
+        <insert tableName="AB_KEYWORD_CATEGORY">
+            <column name="AB_KEYWORD_CATEGORYID" value="a268c3e5-317f-4c94-8d03-06b4f42b6129"/>
+            <column name="NAME" value="VISITFREQUENCY"/>
+            <column name="SORTINGBY" valueNumeric="0"/>
+            <column name="SORTINGDIRECTION" value="ASC"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="44cf5275-0fa0-416a-b41f-1e4e87dabc14"/>
+            <column name="KEYID" value="VISITFREQUENCYYEARLY"/>
+            <column name="TITLE" value="Yearly"/>
+            <column name="CONTAINER" value="VISITFREQUENCY"/>
+            <column name="SORTING" valueNumeric="0"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+            <column name="AB_KEYWORD_CATEGORY_ID" value="a268c3e5-317f-4c94-8d03-06b4f42b6129"/>
+        </insert>         
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="d392e3a8-fb05-4ab4-8985-34399836fceb"/>
+            <column name="KEYID" value="VISITFREQUENCYSEMIANNUALLY"/>
+            <column name="TITLE" value="Semiannually"/>
+            <column name="CONTAINER" value="VISITFREQUENCY"/>
+            <column name="SORTING" valueNumeric="1"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+            <column name="AB_KEYWORD_CATEGORY_ID" value="a268c3e5-317f-4c94-8d03-06b4f42b6129"/>
+        </insert>   
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="2f97c210-5963-4776-b171-c9146581a2b3"/>
+            <column name="KEYID" value="VISITFREQUENCYQUARTELRY"/>
+            <column name="TITLE" value="Quarterly"/>
+            <column name="CONTAINER" value="VISITFREQUENCY"/>
+            <column name="SORTING" valueNumeric="2"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+            <column name="AB_KEYWORD_CATEGORY_ID" value="a268c3e5-317f-4c94-8d03-06b4f42b6129"/>
+        </insert> 
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="42cc5696-3984-420a-be51-aec265b2885b"/>
+            <column name="KEYID" value="VISITFREQUENCYMONTHLY"/>
+            <column name="TITLE" value="Monthly"/>
+            <column name="CONTAINER" value="VISITFREQUENCY"/>
+            <column name="SORTING" valueNumeric="3"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+            <column name="AB_KEYWORD_CATEGORY_ID" value="a268c3e5-317f-4c94-8d03-06b4f42b6129"/>
+        </insert>                                                                                                                                                                
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="53fe29ef-86ac-42ee-bb4b-e874340c463e"/>
+            <column name="KEYID" value="VISITFREQUENCYWEEKLY"/>
+            <column name="TITLE" value="Weekly"/>
+            <column name="CONTAINER" value="VISITFREQUENCY"/>
+            <column name="SORTING" valueNumeric="4"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+            <column name="AB_KEYWORD_CATEGORY_ID" value="a268c3e5-317f-4c94-8d03-06b4f42b6129"/>
+        </insert>
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.1.2/VisitPlan/add_VisitFrequencyDistrictContact.xml b/.liquibase/Data_alias/basic/2021.1.2/VisitPlan/add_VisitFrequencyDistrictContact.xml
new file mode 100644
index 0000000000000000000000000000000000000000..50db07b3fab0abf71c0a6b8958f44b1eb1f141d7
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.1.2/VisitPlan/add_VisitFrequencyDistrictContact.xml
@@ -0,0 +1,11 @@
+<?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="i.BenAissa" id="2c6b70ef-1169-4d1f-8464-390e1b719dd4">
+            <addColumn tableName="DISTRICTCONTACT">
+               <column name="VISITFREQUENCY"  type="varchar(36)" />
+            </addColumn>
+
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.1.2/VisitPlan/add_VisitFrequenzyDistrictResponsible.xml b/.liquibase/Data_alias/basic/2021.1.2/VisitPlan/add_VisitFrequenzyDistrictResponsible.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5aec940167477d9554ad5bea3b55518b95b2abe8
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.1.2/VisitPlan/add_VisitFrequenzyDistrictResponsible.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="i.BenAissa" id="b1bb0cc5-0673-421a-8e67-b7617f6fbdf3">
+        <addColumn tableName="DISTRICTRESPONSIBLE">
+            <column name="VISITFREQUENCY"  type="varchar(36)" />
+        </addColumn>
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.1.2/VisitPlan/changelog.xml b/.liquibase/Data_alias/basic/2021.1.2/VisitPlan/changelog.xml
new file mode 100644
index 0000000000000000000000000000000000000000..40dcdbe56e55dfff4468016a7a3c97d33dbf4b3c
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.1.2/VisitPlan/changelog.xml
@@ -0,0 +1,10 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+
+    <include relativeToChangelogFile="true" file="Insert_keywords_VisitFrequency.xml"/>
+    <include relativeToChangelogFile="true" file="add_VisitFrequenzyDistrictResponsible.xml"/>
+    <include relativeToChangelogFile="true" file="add_VisitFrequencyDistrictContact.xml"/>
+    <include relativeToChangelogFile="true" file="remove_visitplan_attributes.xml"/>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.1.2/VisitPlan/remove_visitplan_attributes.xml b/.liquibase/Data_alias/basic/2021.1.2/VisitPlan/remove_visitplan_attributes.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d021e804467ae9c13ac39b3f8774bd22aaa00c88
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.1.2/VisitPlan/remove_visitplan_attributes.xml
@@ -0,0 +1,51 @@
+<?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="p.neub" id="27b52f35-8b83-44d1-b57c-7f4fc1b08fcb">
+        <delete tableName="AB_ATTRIBUTE">
+            <where>AB_ATTRIBUTEID = ?</where>
+            <whereParams>
+                <param value="c0b26482-c0aa-413d-a9c3-f44c56bd04a9"/>
+            </whereParams>
+        </delete>
+        <delete tableName="AB_ATTRIBUTEUSAGE">
+            <where>AB_ATTRIBUTE_ID = ?</where>
+            <whereParams>
+                <param value="c0b26482-c0aa-413d-a9c3-f44c56bd04a9"/>
+            </whereParams>
+        </delete>
+        
+        <delete tableName="AB_ATTRIBUTE">
+            <where>AB_ATTRIBUTEID = ?</where>
+            <whereParams>
+                <param value="2f963668-9e8c-41d7-aee4-6beaf37492e4"/>
+            </whereParams>
+        </delete>
+        <delete tableName="AB_ATTRIBUTEUSAGE">
+            <where>AB_ATTRIBUTE_ID = ?</where>
+            <whereParams>
+                <param value="2f963668-9e8c-41d7-aee4-6beaf37492e4"/>
+            </whereParams>
+        </delete>
+        
+        <delete tableName="AB_ATTRIBUTE">
+            <where>AB_ATTRIBUTEID = ?</where>
+            <whereParams>
+                <param value="547b8b9d-88ba-4590-9e01-34d2a58116cc"/>
+            </whereParams>
+        </delete>
+        <delete tableName="AB_ATTRIBUTE">
+            <where>ATTRIBUTE_PARENT_ID = ?</where>
+            <whereParams>
+                <param value="547b8b9d-88ba-4590-9e01-34d2a58116cc"/>
+            </whereParams>
+        </delete>
+        <delete tableName="AB_ATTRIBUTEUSAGE">
+            <where>AB_ATTRIBUTE_ID = ?</where>
+            <whereParams>
+                <param value="547b8b9d-88ba-4590-9e01-34d2a58116cc"/>
+            </whereParams>
+        </delete>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.1.2/changelog.xml b/.liquibase/Data_alias/basic/2021.1.2/changelog.xml
index e96b7c2d027d79d35b79f78e1035d92cef2eda4f..19811a3b12699629f58308c92de032b68180a2a2 100644
--- a/.liquibase/Data_alias/basic/2021.1.2/changelog.xml
+++ b/.liquibase/Data_alias/basic/2021.1.2/changelog.xml
@@ -2,7 +2,8 @@
 <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
-   <include relativeToChangelogFile="true" file="MailBounce/changelog.xml"/>
-   <include relativeToChangelogFile="true" file="Bulkmail/changelog.xml"/>
+    <include relativeToChangelogFile="true" file="MailBounce/changelog.xml"/>
+    <include relativeToChangelogFile="true" file="Bulkmail/changelog.xml"/>
     <include relativeToChangelogFile="true" file="Registration_Webservice/changelog.xml"/>
+    <include relativeToChangelogFile="true" file="VisitPlan/changelog.xml"/>
 </databaseChangeLog>
diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod
index 41bd1ab3453820da881a7b900906b9ad4e61a9e5..29c056f0f98c4a3cdc0cc36871e047571166057a 100644
--- a/aliasDefinition/Data_alias/Data_alias.aod
+++ b/aliasDefinition/Data_alias/Data_alias.aod
@@ -15580,6 +15580,20 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>VISITFREQUENCY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -15818,6 +15832,19 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>VISITFREQUENCY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
diff --git a/entity/DistrictContact_entity/DistrictContact_entity.aod b/entity/DistrictContact_entity/DistrictContact_entity.aod
index 49da7262c12ca4cc54951a216148a333d740a940..7b0a005e07e02d7a3d33d7be793b3119119ef0ce 100644
--- a/entity/DistrictContact_entity/DistrictContact_entity.aod
+++ b/entity/DistrictContact_entity/DistrictContact_entity.aod
@@ -206,6 +206,26 @@
       <name>isDashletView_param</name>
       <expose v="true" />
     </entityParameter>
+    <entityField>
+      <name>VISITFREQUENCY</name>
+      <title>Visit Frequency</title>
+      <consumer>VisitFrequencykey</consumer>
+      <displayValueProcess>%aditoprj%/entity/DistrictContact_entity/entityfields/visitfrequency/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityConsumer>
+      <name>VisitFrequencykey</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContainerName_param</name>
+          <valueProcess>%aditoprj%/entity/DistrictContact_entity/entityfields/visitfrequencykey/children/containername_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -273,6 +293,11 @@
           <name>STATUS.displayValue</name>
           <expression>%aditoprj%/entity/DistrictContact_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>VISITFREQUENCY.value</name>
+          <recordfield>DISTRICTCONTACT.VISITFREQUENCY</recordfield>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
       </recordFieldMappings>
       <linkInformation>
         <linkInformation>
diff --git a/entity/DistrictContact_entity/entityfields/visitfrequency/displayValueProcess.js b/entity/DistrictContact_entity/entityfields/visitfrequency/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..dc157969f260e3b0635a22e42f65743c7f15993f
--- /dev/null
+++ b/entity/DistrictContact_entity/entityfields/visitfrequency/displayValueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue(
+    $KeywordRegistry.visitFrequency(), vars.get("$field.VISITFREQUENCY")
+));
diff --git a/entity/DistrictContact_entity/entityfields/visitfrequencykey/children/containername_param/valueProcess.js b/entity/DistrictContact_entity/entityfields/visitfrequencykey/children/containername_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..aa46586ef10bea36e273e3a5d3387fc24e592911
--- /dev/null
+++ b/entity/DistrictContact_entity/entityfields/visitfrequencykey/children/containername_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string($KeywordRegistry.visitFrequency());
\ No newline at end of file
diff --git a/entity/DistrictResponsible_entity/DistrictResponsible_entity.aod b/entity/DistrictResponsible_entity/DistrictResponsible_entity.aod
index 928ca8eb81283b109438d2fa88fd15dae568a249..616d5ac4dfee46da6e0cb485078371086292b246 100644
--- a/entity/DistrictResponsible_entity/DistrictResponsible_entity.aod
+++ b/entity/DistrictResponsible_entity/DistrictResponsible_entity.aod
@@ -229,6 +229,26 @@
       <name>DistrictResponsibleAdvisers</name>
       <lookupIdfield>EMPLOYEE_CONTACT_ID</lookupIdfield>
     </entityProvider>
+    <entityField>
+      <name>VISITFREQUENCY</name>
+      <title>Visit Frequency</title>
+      <consumer>VisitFrequencykey</consumer>
+      <displayValueProcess>%aditoprj%/entity/DistrictResponsible_entity/entityfields/visitfrequency/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityConsumer>
+      <name>VisitFrequencykey</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContainerName_param</name>
+          <valueProcess>%aditoprj%/entity/DistrictResponsible_entity/entityfields/visitfrequencykey/children/containername_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
     <entityParameter>
       <name>OnlyActive_param</name>
       <expose v="true" />
@@ -317,6 +337,23 @@
           <name>DISTRICT_ID.displayValue</name>
           <expression>%aditoprj%/entity/DistrictResponsible_entity/recordcontainers/db/recordfieldmappings/district_id.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>VISITFREQUENCY.value</name>
+          <recordfield>DISTRICTRESPONSIBLE.VISITFREQUENCY</recordfield>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>VISITFREQUENCY.displayValue</name>
+          <expression>%aditoprj%/entity/DistrictResponsible_entity/recordcontainers/db/recordfieldmappings/visitfrequency.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>ADVISER_ROLE.displayValue</name>
+          <expression>%aditoprj%/entity/DistrictResponsible_entity/recordcontainers/db/recordfieldmappings/adviser_role.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>ADVISER_STATUS.displayValue</name>
+          <expression>%aditoprj%/entity/DistrictResponsible_entity/recordcontainers/db/recordfieldmappings/adviser_status.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
       <linkInformation>
         <linkInformation>
diff --git a/entity/DistrictResponsible_entity/entityfields/visitfrequency/displayValueProcess.js b/entity/DistrictResponsible_entity/entityfields/visitfrequency/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..dc157969f260e3b0635a22e42f65743c7f15993f
--- /dev/null
+++ b/entity/DistrictResponsible_entity/entityfields/visitfrequency/displayValueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue(
+    $KeywordRegistry.visitFrequency(), vars.get("$field.VISITFREQUENCY")
+));
diff --git a/entity/DistrictResponsible_entity/entityfields/visitfrequencykey/children/containername_param/valueProcess.js b/entity/DistrictResponsible_entity/entityfields/visitfrequencykey/children/containername_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..aa46586ef10bea36e273e3a5d3387fc24e592911
--- /dev/null
+++ b/entity/DistrictResponsible_entity/entityfields/visitfrequencykey/children/containername_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string($KeywordRegistry.visitFrequency());
\ No newline at end of file
diff --git a/entity/DistrictResponsible_entity/recordcontainers/db/recordfieldmappings/adviser_role.displayvalue/expression.js b/entity/DistrictResponsible_entity/recordcontainers/db/recordfieldmappings/adviser_role.displayvalue/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..c6a7d58dccf0c0f65b70f4f4144f6cf4d51f515e
--- /dev/null
+++ b/entity/DistrictResponsible_entity/recordcontainers/db/recordfieldmappings/adviser_role.displayvalue/expression.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("KeywordRegistry_basic");
+import("Keyword_lib");
+
+result.string(KeywordUtils.getResolvedTitleSqlPart(
+    $KeywordRegistry.adviserRole(),
+    "DISTRICTRESPONSIBLE.ADVISER_ROLE"
+));
diff --git a/entity/DistrictResponsible_entity/recordcontainers/db/recordfieldmappings/adviser_status.displayvalue/expression.js b/entity/DistrictResponsible_entity/recordcontainers/db/recordfieldmappings/adviser_status.displayvalue/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..b62614bf288b7c2f830def04706ccc167b1cf54c
--- /dev/null
+++ b/entity/DistrictResponsible_entity/recordcontainers/db/recordfieldmappings/adviser_status.displayvalue/expression.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("KeywordRegistry_basic");
+import("Keyword_lib");
+
+result.string(KeywordUtils.getResolvedTitleSqlPart(
+    $KeywordRegistry.contactStatus(),
+    "DISTRICTRESPONSIBLE.ADVISER_STATUS"
+));
diff --git a/entity/DistrictResponsible_entity/recordcontainers/db/recordfieldmappings/visitfrequency.displayvalue/expression.js b/entity/DistrictResponsible_entity/recordcontainers/db/recordfieldmappings/visitfrequency.displayvalue/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..186519a44db4156fba122110200d1a4cd0a2e183
--- /dev/null
+++ b/entity/DistrictResponsible_entity/recordcontainers/db/recordfieldmappings/visitfrequency.displayvalue/expression.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("KeywordRegistry_basic");
+import("Keyword_lib");
+
+result.string(KeywordUtils.getResolvedTitleSqlPart(
+    $KeywordRegistry.visitFrequency(),
+    "DISTRICTRESPONSIBLE.VISITFREQUENCY"
+));
diff --git a/entity/District_entity/grantDeleteProcess.js b/entity/District_entity/grantDeleteProcess.js
index 2aa49f3be4ce09fa49552cf97b5b5ab914774d6d..7cbdffcee59a8d41bd06362c562cbde7c44a3b69 100644
--- a/entity/District_entity/grantDeleteProcess.js
+++ b/entity/District_entity/grantDeleteProcess.js
@@ -1,6 +1,7 @@
 import("system.result");
 import("Sql_lib");
 import("system.vars");
+import("Entity_lib");
 
 //Don't allow deletion if the district is a superordinate district
 var districtId = vars.get("$field.DISTRICTID");
diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
index cd0569a81bf9e5609418307bc441ec512c8a0656..80d9d835e16634f9200da488eeb31cc8a02692df 100644
--- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
+++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
@@ -9190,6 +9190,54 @@
     <entry>
       <key>Landingpage</key>
     </entry>
+    <entry>
+      <key>The chosen attributes were successfully set for %0 %1</key>
+    </entry>
+    <entry>
+      <key>SerialLetter</key>
+    </entry>
+    <entry>
+      <key>Bulkmail</key>
+    </entry>
+    <entry>
+      <key>%0 recipient will be added to the serial letter.</key>
+    </entry>
+    <entry>
+      <key>The attribute \"%0\" couldn't be set for %1 %2, because %3.</key>
+    </entry>
+    <entry>
+      <key>the max amount of this attribute has been reached</key>
+    </entry>
+    <entry>
+      <key>set attribute (use filter result)</key>
+    </entry>
+    <entry>
+      <key>The chosen attribute was successfully set for %0 %1</key>
+    </entry>
+    <entry>
+      <key>Volume (Euro)</key>
+    </entry>
+    <entry>
+      <key>add Attributes</key>
+    </entry>
+    <entry>
+      <key>%0 recipient will be added to the bulk mail.</key>
+    </entry>
+    <entry>
+      <key>Attribute \"%0\" can only be inserted once with the same value.</key>
+    </entry>
+    <entry>
+      <key>Set attribute (use filter result)</key>
+    </entry>
+    <entry>
+      <key>set attribute (selected data)</key>
+    </entry>
+    <entry>
+      <key>affected rows:</key>
+    </entry>
+    <entry>
+      <key>this attribute with the same value exists already</key>
+    </entry>
     <entry>
       <key>Do you really want to delete all usages of \"%0\"?</key>
     </entry>
diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
index 5e3a4b41fb3ac8dcc6d3608c685ada9410632f9b..5c02bbd97efdf850f5ac1134f3a1dc1e76f36523 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -3116,7 +3116,7 @@
     </entry>
     <entry>
       <key>Semiannually</key>
-      <value>halbjährlich</value>
+      <value>Halbjährlich</value>
     </entry>
     <entry>
       <key>Northern Mariana Islands</key>
@@ -3784,7 +3784,7 @@
     </entry>
     <entry>
       <key>Annually</key>
-      <value>jährlich</value>
+      <value>Jährlich</value>
     </entry>
     <entry>
       <key>Participated</key>
@@ -3920,7 +3920,7 @@
     </entry>
     <entry>
       <key>Quarterly</key>
-      <value>vierteljährlich</value>
+      <value>Vierteljährlich</value>
     </entry>
     <entry>
       <key>Indonesia</key>
@@ -9088,7 +9088,7 @@ Bitte Datumseingabe prüfen</value>
     </entry>
     <entry>
       <key>Monthly</key>
-      <value>monatlich</value>
+      <value>Monatlich</value>
     </entry>
     <entry>
       <key>The status of the order was changed to \"sent\".</key>
@@ -9100,7 +9100,7 @@ Bitte Datumseingabe prüfen</value>
     </entry>
     <entry>
       <key>Yearly</key>
-      <value>jährlich</value>
+      <value>Jährlich</value>
     </entry>
     <entry>
       <key>Until</key>
@@ -12052,6 +12052,12 @@ Bitte Datumseingabe prüfen</value>
       <key>Due on</key>
       <value>Fällig am</value>
     </entry>
+    <entry>
+      <key>set attribute (use filter result)</key>
+    </entry>
+    <entry>
+      <key>Weekly</key>
+    </entry>
     <entry>
       <key>Do you really want to delete all usages of \"%0\"?</key>
       <value>Wirklich jede Verwendungen von \"%0\" löschen?</value>
diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
index bc061008deb43f52b71dc2c5cb064bfef24e2505..177c0df254417d084c327dcc2c897da6a697bead 100644
--- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
+++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
@@ -9278,6 +9278,27 @@
     <entry>
       <key>Landingpage</key>
     </entry>
+    <entry>
+      <key>SerialLetter</key>
+    </entry>
+    <entry>
+      <key>Bulkmail</key>
+    </entry>
+    <entry>
+      <key>%0 recipient will be added to the serial letter.</key>
+    </entry>
+    <entry>
+      <key>Volume (Euro)</key>
+    </entry>
+    <entry>
+      <key>%0 recipient will be added to the bulk mail.</key>
+    </entry>
+    <entry>
+      <key>Attribute \"%0\" can only be inserted once with the same value.</key>
+    </entry>
+    <entry>
+      <key>Set attribute (use filter result)</key>
+    </entry>
     <entry>
       <key>Do you really want to delete all usages of \"%0\"?</key>
     </entry>
diff --git a/neonView/DistrictContactEdit_view/DistrictContactEdit_view.aod b/neonView/DistrictContactEdit_view/DistrictContactEdit_view.aod
index 95263fb267a2c025538e19a4956b7e1be696d02f..9eac77b47303ab525386f2455cc86c1d22c4628d 100644
--- a/neonView/DistrictContactEdit_view/DistrictContactEdit_view.aod
+++ b/neonView/DistrictContactEdit_view/DistrictContactEdit_view.aod
@@ -42,6 +42,10 @@
           <name>c1b99287-3727-4470-a58a-4ecce35284cc</name>
           <entityField>ORIGIN</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>3bb2aab2-4398-4e99-b8e2-03ba93f11a16</name>
+          <entityField>VISITFREQUENCY</entityField>
+        </entityFieldLink>
       </fields>
     </genericViewTemplate>
   </children>
diff --git a/neonView/DistrictContactFilter_view/DistrictContactFilter_view.aod b/neonView/DistrictContactFilter_view/DistrictContactFilter_view.aod
index 8cf112f1376d32406bec6202971f660d8e7a15f6..e73197950d24f8c0cc393ed7d94167923f1cdd41 100644
--- a/neonView/DistrictContactFilter_view/DistrictContactFilter_view.aod
+++ b/neonView/DistrictContactFilter_view/DistrictContactFilter_view.aod
@@ -65,6 +65,10 @@
           <name>e8942dc0-3661-431e-9bac-2ab15a060438</name>
           <entityField>DISTRICT_ID</entityField>
         </neonTableColumn>
+        <neonTableColumn>
+          <name>9f7f5d61-6a6f-4a8c-8d78-d05076120720</name>
+          <entityField>VISITFREQUENCY</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>873010c6-bd65-40bf-a8f3-7bbb82d56e8a</name>
           <entityField>VALID_FROM</entityField>
diff --git a/neonView/DistrictResponsibleEdit_view/DistrictResponsibleEdit_view.aod b/neonView/DistrictResponsibleEdit_view/DistrictResponsibleEdit_view.aod
index 2fb95e5410b9bc687d0704fd66e300de8846b47f..1dd9010a150123e3352e8d494a78b79d50370bc1 100644
--- a/neonView/DistrictResponsibleEdit_view/DistrictResponsibleEdit_view.aod
+++ b/neonView/DistrictResponsibleEdit_view/DistrictResponsibleEdit_view.aod
@@ -26,6 +26,10 @@
           <name>6b4c7d81-48f0-4cc2-a0fd-2fbb090d35da</name>
           <entityField>ADVISER_STATUS</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>0cac4d7e-1f54-4f1a-9a8d-663d0b6257a8</name>
+          <entityField>VISITFREQUENCY</entityField>
+        </entityFieldLink>
         <entityFieldLink>
           <name>14ba4841-19c5-4282-ae2c-97108e55ed14</name>
           <entityField>VALID_FROM</entityField>
diff --git a/neonView/DistrictResponsibleFilter_view/DistrictResponsibleFilter_view.aod b/neonView/DistrictResponsibleFilter_view/DistrictResponsibleFilter_view.aod
index 04469a199323b98137276f1393bafba7d2b4c9ce..d4f1d47578a80ccf6cc62962b97ca47795de69b9 100644
--- a/neonView/DistrictResponsibleFilter_view/DistrictResponsibleFilter_view.aod
+++ b/neonView/DistrictResponsibleFilter_view/DistrictResponsibleFilter_view.aod
@@ -33,6 +33,10 @@
           <name>f8b3b6e7-8e7c-41f1-aed9-f81e3f3d0bad</name>
           <entityField>ADVISER_STATUS</entityField>
         </neonTableColumn>
+        <neonTableColumn>
+          <name>f1f9540c-89c9-4d89-9560-b017595ca71d</name>
+          <entityField>VISITFREQUENCY</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>9896476f-1b08-49c9-91ef-000579e52e0b</name>
           <entityField>VALID_FROM</entityField>
diff --git a/process/District_lib/process.js b/process/District_lib/process.js
index 6f77c41867db968f82bf6e6421c03b72bf34f8b1..269de63eb452827612583af3dc37d21c19b64aff 100644
--- a/process/District_lib/process.js
+++ b/process/District_lib/process.js
@@ -144,7 +144,7 @@ DistrictUtils.assignDistrict = function (pDistrictId, pAppliedFilter, pContactId
     //Einlesen aller Betreuer, die dem übergebenen Gebiet zugeordnet sind
     var arrResponsibleIds = new SqlBuilder()
             .select("DISTRICTRESPONSIBLE.EMPLOYEE_CONTACT_ID, DISTRICTRESPONSIBLE.ADVISER_ROLE, " +
-                    "DISTRICTRESPONSIBLE.ADVISER_STATUS, DISTRICTRESPONSIBLE.VALID_FROM, DISTRICTRESPONSIBLE.VALID_UNTIL")
+                    "DISTRICTRESPONSIBLE.ADVISER_STATUS, DISTRICTRESPONSIBLE.VALID_FROM, DISTRICTRESPONSIBLE.VALID_UNTIL, DISTRICTRESPONSIBLE.VISITFREQUENCY")
             .from("DISTRICTRESPONSIBLE")    
             .where("DISTRICTRESPONSIBLE.DISTRICT_ID", pDistrictId)
             .table();
@@ -177,7 +177,8 @@ DistrictUtils.assignDistrict = function (pDistrictId, pAppliedFilter, pContactId
             "VALID_UNTIL",
             "ORIGIN",
             "USER_NEW",
-            "DATE_NEW"
+            "DATE_NEW",
+            "VISITFREQUENCY"
         ];
     var updateArray = [];
     var colsUpdate = [
@@ -210,8 +211,10 @@ DistrictUtils.assignDistrict = function (pDistrictId, pAppliedFilter, pContactId
             {
                 //Falls Status null, dann auf active setzen
                 if (Utils.isNullOrEmpty(arrResponsibleIds[j][2])) 
+                {
                     arrResponsibleIds[j][2] = $KeywordRegistry.contactStatus$active();
-                
+                }
+
                 var valsInsert = [
                     util.getNewUUID(),
                     arrOrgContactIds[i],
@@ -223,8 +226,9 @@ DistrictUtils.assignDistrict = function (pDistrictId, pAppliedFilter, pContactId
                     arrResponsibleIds[j][4],
                     $KeywordRegistry.districtOrigin$auto(),
                     vars.get("$sys.user"),
-                    vars.get("$sys.date")
-                ];                
+                    vars.get("$sys.date"),
+                    arrResponsibleIds[j][5]
+                ]; 
                 insertArray.push(["DISTRICTCONTACT", colsInsert, null, valsInsert]);
             }            
         }        
diff --git a/process/KeywordRegistry_basic/process.js b/process/KeywordRegistry_basic/process.js
index 1b1d3fedc64e9b914022092293873d3ad01a8a43..95b3015437131deed5707455a256fa2a0fbb995d 100644
--- a/process/KeywordRegistry_basic/process.js
+++ b/process/KeywordRegistry_basic/process.js
@@ -434,3 +434,10 @@ $KeywordRegistry.emailFilterType$blacklist = function(){return "EMAIL_FILTER_BLA
 $KeywordRegistry.emailFilterType$bounceSoft = function(){return "EMAIL_FILTER_BOUNCESOFT";};
 $KeywordRegistry.emailFilterType$bounceHard = function(){return "EMAIL_FILTER_BOUNCEHARD";};
 $KeywordRegistry.emailFilterType$autoResponder = function(){return "EMAIL_FILTER_AUTORESPONDER";};
+
+$KeywordRegistry.visitFrequency = function(){return "VISITFREQUENCY";};
+$KeywordRegistry.visitFrequency$yearly = function(){return "VISITFREQUENCYYEARLY";};
+$KeywordRegistry.visitFrequency$semiannualy = function(){return "VISITFREQUENCYSEMIANNUALLY";};
+$KeywordRegistry.visitFrequency$quarterly = function(){return "VISITFREQUENCYQUARTERLY";};
+$KeywordRegistry.visitFrequency$monthly = function(){return "VISITFREQUENCYMONTHLY";};
+$KeywordRegistry.visitFrequency$weekly = function(){return "VISITFREQUENCYWEEKLY";};