From 517a823d2afbc2761f3aac2cc7201094082b73b2 Mon Sep 17 00:00:00 2001
From: "S.Listl" <s.listl@adito.de>
Date: Wed, 30 Oct 2019 08:38:04 +0100
Subject: [PATCH] Attribute 'Responsible AD supervisor' and dashlets

---
 .../Data_alias/basic/2019.3.1/changelog.xml   |  7 +++
 .../insert_attribute_ad_supervisor.xml        | 24 ++++++++++
 .liquibase/Data_alias/changelog.xml           |  1 +
 .../dropdowndefinition/stateProcess.js        | 14 +++---
 .../dropdownfilter/valueProcess.js            |  4 +-
 .../Organisation_entity.aod                   |  4 ++
 .../recordcontainers/db/conditionProcess.js   | 20 +++++++-
 entity/Person_entity/Person_entity.aod        |  8 ++++
 .../recordcontainers/db/conditionProcess.js   | 22 ++++++++-
 .../QuickEntry_entity/QuickEntry_entity.aod   | 26 +++++++++++
 .../_____LANGUAGE_EXTRA.aod                   | 36 +++++++++++----
 .../_____LANGUAGE_de/_____LANGUAGE_de.aod     | 46 ++++++++++++++-----
 .../_____LANGUAGE_en/_____LANGUAGE_en.aod     | 36 +++++++++++----
 .../OrganisationFilter_view.aod               | 21 +++++++++
 .../PersonFilter_view/PersonFilter_view.aod   | 21 +++++++++
 process/AttributeRegistry_basic/process.js    |  1 +
 16 files changed, 250 insertions(+), 41 deletions(-)
 create mode 100644 .liquibase/Data_alias/basic/2019.3.1/changelog.xml
 create mode 100644 .liquibase/Data_alias/basic/2019.3.1/insert_attribute_ad_supervisor.xml

diff --git a/.liquibase/Data_alias/basic/2019.3.1/changelog.xml b/.liquibase/Data_alias/basic/2019.3.1/changelog.xml
new file mode 100644
index 00000000000..fda03e142d4
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.3.1/changelog.xml
@@ -0,0 +1,7 @@
+<?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_attribute_ad_supervisor.xml"/>
+    
+</databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/2019.3.1/insert_attribute_ad_supervisor.xml b/.liquibase/Data_alias/basic/2019.3.1/insert_attribute_ad_supervisor.xml
new file mode 100644
index 00000000000..637b87fdb06
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.3.1/insert_attribute_ad_supervisor.xml
@@ -0,0 +1,24 @@
+<?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="9c2eb28c-2d77-456a-aa61-e8e7ae3fb15e">
+        <insert tableName="AB_ATTRIBUTE">
+            <column name="AB_ATTRIBUTEID" value="c0b26482-c0aa-413d-a9c3-f44c56bd04a9"/>
+            <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+            <column name="ATTRIBUTE_NAME" value="Responsible AD supervisor"/>
+            <column name="ATTRIBUTE_TYPE" value="OBJECTSELECTION                     "/>
+            <column name="DROPDOWNDEFINITION" value="Employee_entity"/>
+            <column name="SORTING" valueNumeric="2"/>
+        </insert>
+        <insert tableName="AB_ATTRIBUTEUSAGE">
+            <column name="AB_ATTRIBUTEUSAGEID" value="bcf4ccdd-9515-4926-a3e6-9066c9e49ade"/>
+            <column name="AB_ATTRIBUTE_ID" value="c0b26482-c0aa-413d-a9c3-f44c56bd04a9"/>
+            <column name="OBJECT_TYPE" value="Person"/>
+        </insert>
+        <insert tableName="AB_ATTRIBUTEUSAGE">
+            <column name="AB_ATTRIBUTEUSAGEID" value="62998088-1915-40cd-b39e-94f81edb865b"/>
+            <column name="AB_ATTRIBUTE_ID" value="c0b26482-c0aa-413d-a9c3-f44c56bd04a9"/>
+            <column name="OBJECT_TYPE" value="Organisation"/>
+        </insert>
+    </changeSet>
+</databaseChangeLog>
diff --git a/.liquibase/Data_alias/changelog.xml b/.liquibase/Data_alias/changelog.xml
index 373e8973e00..2580416d2d7 100644
--- a/.liquibase/Data_alias/changelog.xml
+++ b/.liquibase/Data_alias/changelog.xml
@@ -4,6 +4,7 @@
     <include relativeToChangelogFile="true" file="basic/2019.1.4/changelog.xml"/>
     <include relativeToChangelogFile="true" file="basic/2019.2.1/changelog.xml"/>
     <include relativeToChangelogFile="true" file="basic/2019.3.0/changelog.xml"/>
+    <include relativeToChangelogFile="true" file="basic/2019.3.1/changelog.xml"/>
     
     <include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/entity/Attribute_entity/entityfields/dropdowndefinition/stateProcess.js b/entity/Attribute_entity/entityfields/dropdowndefinition/stateProcess.js
index e7b56537726..af384e2e38a 100644
--- a/entity/Attribute_entity/entityfields/dropdowndefinition/stateProcess.js
+++ b/entity/Attribute_entity/entityfields/dropdowndefinition/stateProcess.js
@@ -3,12 +3,14 @@ import("system.vars");
 import("system.result");
 import("Attribute_lib");
 
-var fieldState;
+var fieldState = neon.COMPONENTSTATE_INVISIBLE;
 var type = vars.get("$field.ATTRIBUTE_TYPE").trim();
-if (type && $AttributeTypes[type] && $AttributeTypes[type].getDropDownDefinitions
-        && !AttributeUtil.hasRelations(vars.get("$field.UID")))
-    fieldState = neon.COMPONENTSTATE_EDITABLE;
-else
-    fieldState = neon.COMPONENTSTATE_INVISIBLE;
+if (type && $AttributeTypes[type] && $AttributeTypes[type].getDropDownDefinitions)
+{
+    if (AttributeUtil.hasRelations(vars.get("$field.UID")))
+        fieldState = neon.COMPONENTSTATE_READONLY;
+    else
+        fieldState = neon.COMPONENTSTATE_EDITABLE;
+}
 
 result.string(fieldState);
\ No newline at end of file
diff --git a/entity/Attribute_entity/entityfields/dropdownfilter/valueProcess.js b/entity/Attribute_entity/entityfields/dropdownfilter/valueProcess.js
index c040a5fb108..1a58da7930c 100644
--- a/entity/Attribute_entity/entityfields/dropdownfilter/valueProcess.js
+++ b/entity/Attribute_entity/entityfields/dropdownfilter/valueProcess.js
@@ -4,7 +4,7 @@ import("system.result");
 import("Attribute_lib");
 
 if (vars.get("$field.ATTRIBUTE_TYPE").trim() == $AttributeTypes.OBJECTSELECTION 
-    && (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW))
+    && (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT))
 {
     var entity = vars.getString("$field.DROPDOWNDEFINITION");
     var emptyFilter = {entity: entity, filter: {type: "group", operator: "AND", childs: []}};
@@ -14,7 +14,7 @@ if (vars.get("$field.ATTRIBUTE_TYPE").trim() == $AttributeTypes.OBJECTSELECTION
         currentFilter = JSON.parse(currentFilter);
 
     //if the filter field is empty or if the entity was changed, reset the filter
-    if (!vars.get("$this.value") || currentFilter.entity != emptyFilter.entity)
+    if (!currentFilter || currentFilter.entity != emptyFilter.entity)
     {
         var condJson = JSON.stringify(emptyFilter);
         result.string(condJson);
diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod
index ebc47f40bfd..fa429536f9d 100644
--- a/entity/Organisation_entity/Organisation_entity.aod
+++ b/entity/Organisation_entity/Organisation_entity.aod
@@ -1041,6 +1041,10 @@
     <entityField>
       <name>IndexCity</name>
     </entityField>
+    <entityParameter>
+      <name>OnlyOwnSupervised_param</name>
+      <expose v="true" />
+    </entityParameter>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/Organisation_entity/recordcontainers/db/conditionProcess.js b/entity/Organisation_entity/recordcontainers/db/conditionProcess.js
index f9d0b6ed3ee..f93b3e2b750 100644
--- a/entity/Organisation_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Organisation_entity/recordcontainers/db/conditionProcess.js
@@ -1,3 +1,7 @@
+import("Employee_lib");
+import("AttributeRegistry_basic");
+import("Attribute_lib");
+import("system.logging");
 import("system.vars");
 import("system.db");
 import("system.result");
@@ -42,7 +46,6 @@ if (vars.exists("$param.ExcludedContactIds_param") && vars.get("$param.ExcludedC
 }
 
 cond.andPrepareVars("ORGANISATION.KIND", "$param.OrganisationType_param");
-
 if(onlyShowContactIds != null && onlyShowContactIds.length > 0)
 {
     let additionalCondition = SqlCondition.begin();
@@ -54,6 +57,19 @@ if(onlyShowContactIds != null && onlyShowContactIds.length > 0)
     cond.andSqlCondition(additionalCondition, "1=2");
     alternativeCondition = "1 = 2";
 }
+if (vars.exists("$param.OnlyOwnSupervised_param") && vars.get("$param.OnlyOwnSupervised_param") == "true")
+{
+    var subQuery = new SqlBuilder()
+        .select("1")
+        .from("AB_ATTRIBUTERELATION")
+        .where(new SqlCondition()
+            .andPrepare("AB_ATTRIBUTERELATION.OBJECT_TYPE", ContextUtils.getCurrentContextId())
+            .and("AB_ATTRIBUTERELATION.OBJECT_ROWID = CONTACT.CONTACTID")
+            .andPrepare("AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID", $AttributeRegistry.responsibleADsupervisor())
+            .andPrepare("AB_ATTRIBUTERELATION." + $AttributeTypes.OBJECTSELECTION.databaseField, EmployeeUtils.sliceUserId(EmployeeUtils.getCurrentUserId()))
+        );
+    cond.andSqlBuilder(subQuery);
+}
 
 //TODO: use a preparedCondition (.build instead of .translate) when available #1030812 #1034026
-result.string(cond.translate(alternativeCondition));
\ No newline at end of file
+result.string(cond.translate(alternativeCondition));
diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod
index 9261c6e57bc..8ddf9367f4a 100644
--- a/entity/Person_entity/Person_entity.aod
+++ b/entity/Person_entity/Person_entity.aod
@@ -1107,6 +1107,14 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
       <name>STANDARD_COUNTRY</name>
       <valueProcess>%aditoprj%/entity/Person_entity/entityfields/standard_country/valueProcess.js</valueProcess>
     </entityField>
+    <entityActionField>
+      <name>ActionField</name>
+      <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/actionfield/onActionProcess.js</onActionProcess>
+    </entityActionField>
+    <entityParameter>
+      <name>OnlyOwnSupervised_param</name>
+      <expose v="true" />
+    </entityParameter>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/Person_entity/recordcontainers/db/conditionProcess.js b/entity/Person_entity/recordcontainers/db/conditionProcess.js
index 69c8f9443ee..63a7be5bdb4 100644
--- a/entity/Person_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Person_entity/recordcontainers/db/conditionProcess.js
@@ -1,8 +1,12 @@
+import("Context_lib");
+import("AttributeRegistry_basic");
+import("Employee_lib");
+import("AttributeFilter_lib");
+import("Attribute_lib");
 import("system.vars");
 import("system.db");
 import("system.result");
 import("Sql_lib");
-
 var cond = new SqlCondition();
 let alternativeCondition = "1 = 1";
 cond.andPrepareVars("CONTACT.ORGANISATION_ID", "$param.OrgId_param")
@@ -24,5 +28,19 @@ if(onlyShowContactIds != null && onlyShowContactIds.length > 0)
     cond.andSqlCondition(additionalCondition, "1=2");
     alternativeCondition = "1 = 2";
 }
+
+if (vars.exists("$param.OnlyOwnSupervised_param") && vars.get("$param.OnlyOwnSupervised_param") == "true")
+{
+    var subQuery = new SqlBuilder()
+        .select("1")
+        .from("AB_ATTRIBUTERELATION")
+        .where(new SqlCondition()
+            .andPrepare("AB_ATTRIBUTERELATION.OBJECT_TYPE", ContextUtils.getCurrentContextId())
+            .and("AB_ATTRIBUTERELATION.OBJECT_ROWID = CONTACT.CONTACTID")
+            .andPrepare("AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID", $AttributeRegistry.responsibleADsupervisor())
+            .andPrepare("AB_ATTRIBUTERELATION." + $AttributeTypes.OBJECTSELECTION.databaseField, EmployeeUtils.sliceUserId(EmployeeUtils.getCurrentUserId()))
+        );
+    cond.andSqlBuilder(subQuery);
+}
 //TODO: use a preparedCondition (.build instead of .translate) when available #1030812 #1034026
-result.string(cond.translate(alternativeCondition));
\ No newline at end of file
+result.string(cond.translate(alternativeCondition));
diff --git a/entity/QuickEntry_entity/QuickEntry_entity.aod b/entity/QuickEntry_entity/QuickEntry_entity.aod
index a9fc5171af2..9552ccd4093 100644
--- a/entity/QuickEntry_entity/QuickEntry_entity.aod
+++ b/entity/QuickEntry_entity/QuickEntry_entity.aod
@@ -57,6 +57,32 @@
         <fieldName>ISO3Name</fieldName>
       </dependency>
     </entityConsumer>
+    <entityField>
+      <name>FIRSTNAME</name>
+      <title>Firstname</title>
+    </entityField>
+    <entityField>
+      <name>LASTNAME</name>
+      <title>Lastname</title>
+    </entityField>
+    <entityField>
+      <name>PERSON_TITLE</name>
+      <title>Title</title>
+      <consumer>SalutationTitles</consumer>
+    </entityField>
+    <entityField>
+      <name>PERSON_SALUTATION</name>
+      <title>Salutation</title>
+      <consumer>Salutations</consumer>
+    </entityField>
+    <entityField>
+      <name>PERSON_CONTACT_ID</name>
+      <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/person_contact_id/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>PERSON_ID</name>
+      <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/person_id/valueProcess.js</valueProcess>
+    </entityField>
     <entityConsumer>
       <name>Salutations</name>
       <dependency>
diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
index 67f79141b63..29d48841024 100644
--- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
+++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
@@ -5172,15 +5172,6 @@
     <entry>
       <key>Configurations</key>
     </entry>
-    <entry>
-      <key>Appointment checkup for the selected day</key>
-    </entry>
-    <entry>
-      <key>Show tickets where I am the editor</key>
-    </entry>
-    <entry>
-      <key>Quick entry</key>
-    </entry>
     <entry>
       <key>Data block size</key>
     </entry>
@@ -5211,6 +5202,33 @@
     <entry>
       <key>Add to distribution list</key>
     </entry>
+    <entry>
+      <key>Responsible AD supervisor</key>
+    </entry>
+    <entry>
+      <key>Appointment checkup for the selected day</key>
+    </entry>
+    <entry>
+      <key>Show my contacts</key>
+    </entry>
+    <entry>
+      <key>Show tickets where I am the editor</key>
+    </entry>
+    <entry>
+      <key>Quick entry</key>
+    </entry>
+    <entry>
+      <key>Either or both a contact and a company must be specified</key>
+    </entry>
+    <entry>
+      <key>Show my organisations</key>
+    </entry>
+    <entry>
+      <key>My organisations</key>
+    </entry>
+    <entry>
+      <key>Attribute groups can't be selected</key>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
   <sqlModels>
diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
index f2e68f6ab3a..a0f79f9e265 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -10,6 +10,18 @@
       <key>Project management</key>
       <value>Projektmanagement</value>
     </entry>
+    <entry>
+      <key>Show my organisations</key>
+      <value>Meine Firmen anzeigen</value>
+    </entry>
+    <entry>
+      <key>My organisations</key>
+      <value>Meine Firmen</value>
+    </entry>
+    <entry>
+      <key>Show my contacts</key>
+      <value>Meine Kontakte anzeigen</value>
+    </entry>
     <entry>
       <key>ARCHIVE</key>
       <value>Archiviert</value>
@@ -61,6 +73,10 @@
       <key>Long string value</key>
       <value>Langer String-Wert</value>
     </entry>
+    <entry>
+      <key>Attribute groups can't be selected</key>
+      <value>Eigenschafsgruppen können nicht verwendet werden</value>
+    </entry>
     <entry>
       <key>Object selection</key>
       <value>Objektauswahl</value>
@@ -372,6 +388,10 @@
       <key>Serial letters</key>
       <value>Serienbriefe</value>
     </entry>
+    <entry>
+      <key>Either or both a contact and a company must be specified</key>
+      <value>Es muss entweder ein Kontakt, eine Firma oder beides angegeben werden</value>
+    </entry>
     <entry>
       <key>Categorization</key>
       <value>Kategorisierung</value>
@@ -3677,6 +3697,10 @@
     <entry>
       <key>normal</key>
     </entry>
+    <entry>
+      <key>My contacts</key>
+      <value>Meine Kontakte</value>
+    </entry>
     <entry>
       <key>Termine von</key>
     </entry>
@@ -6112,6 +6136,7 @@
     </entry>
     <entry>
       <key>Links</key>
+      <value>Verknüpfungen</value>
     </entry>
     <entry>
       <key>Set dunning</key>
@@ -6445,6 +6470,7 @@
     </entry>
     <entry>
       <key>${CONTRACT_STATUS}</key>
+      <value>Vertragsstatus</value>
     </entry>
     <entry>
       <key>Time in minutes</key>
@@ -6492,12 +6518,11 @@
     </entry>
     <entry>
       <key>Integrate selected into current contact</key>
-      <value>Selektierten Datensatz in aktuellen integrieren</value>
-      <value>Dubletten</value>
+      <value>Integriere ausgewählten in aktuellen Kontakt</value>
     </entry>
     <entry>
       <key>Duplicate actions</key>
-      <value>Dubletten Aktionen</value>
+      <value>Dublettenaktionen</value>
     </entry>
     <entry>
       <key>Export letter</key>
@@ -6522,14 +6547,6 @@
       <key>Count duplicates in cluster</key>
       <value>Anzahl Dubletten im Cluster</value>
     </entry>
-    <entry>
-      <key>Duplicate actions</key>
-      <value>Dublettenaktionen</value>
-    </entry>
-    <entry>
-      <key>Integrate selected into current contact</key>
-      <value>Integriere ausgewählten in aktuellen Kontakt</value>
-    </entry>
     <entry>
       <key>Unrelated organisations duplicates</key>
       <value>Ignorierte Dublettenrelationen</value>
@@ -6578,6 +6595,13 @@
       <key>A %0 record has been merged</key>
       <value>Zwei Datensätze vom Typ %0 wurden zusammengeführt</value>
     </entry>
+    <entry>
+      <key>Hospitality</key>
+    </entry>
+    <entry>
+      <key>Responsible AD supervisor</key>
+      <value>Zuständiger AD Betreuer</value>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
 </language>
diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
index 4eb712c5b81..cf72a723206 100644
--- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
+++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
@@ -5222,15 +5222,6 @@
     <entry>
       <key>Configurations</key>
     </entry>
-    <entry>
-      <key>Appointment checkup for the selected day</key>
-    </entry>
-    <entry>
-      <key>Show tickets where I am the editor</key>
-    </entry>
-    <entry>
-      <key>Quick entry</key>
-    </entry>
     <entry>
       <key>Data block size</key>
     </entry>
@@ -5261,6 +5252,33 @@
     <entry>
       <key>Add to distribution list</key>
     </entry>
+    <entry>
+      <key>Responsible AD supervisor</key>
+    </entry>
+    <entry>
+      <key>Appointment checkup for the selected day</key>
+    </entry>
+    <entry>
+      <key>Show my contacts</key>
+    </entry>
+    <entry>
+      <key>Show tickets where I am the editor</key>
+    </entry>
+    <entry>
+      <key>Quick entry</key>
+    </entry>
+    <entry>
+      <key>Either or both a contact and a company must be specified</key>
+    </entry>
+    <entry>
+      <key>Show my organisations</key>
+    </entry>
+    <entry>
+      <key>My organisations</key>
+    </entry>
+    <entry>
+      <key>Attribute groups can't be selected</key>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
 </language>
diff --git a/neonView/OrganisationFilter_view/OrganisationFilter_view.aod b/neonView/OrganisationFilter_view/OrganisationFilter_view.aod
index d9f75404be8..e07000fb478 100644
--- a/neonView/OrganisationFilter_view/OrganisationFilter_view.aod
+++ b/neonView/OrganisationFilter_view/OrganisationFilter_view.aod
@@ -19,6 +19,27 @@
         </neonDashletCategory>
       </categories>
     </neonDashletConfiguration>
+    <neonDashletConfiguration>
+      <name>OwnSupervisedOrganisations</name>
+      <title>My organisations</title>
+      <description>Show my organisations</description>
+      <fragment>Organisation/filter</fragment>
+      <singleton v="false" />
+      <requiresConfiguration v="false" />
+      <icon>vaadin:building</icon>
+      <categories>
+        <neonDashletCategory>
+          <name>contactmanagement</name>
+          <title>Contactmanagement</title>
+        </neonDashletCategory>
+      </categories>
+      <parameters>
+        <neonDashletParameter>
+          <name>OnlyOwnSupervised_param</name>
+          <value>true</value>
+        </neonDashletParameter>
+      </parameters>
+    </neonDashletConfiguration>
   </dashletConfigurations>
   <layout>
     <boxLayout>
diff --git a/neonView/PersonFilter_view/PersonFilter_view.aod b/neonView/PersonFilter_view/PersonFilter_view.aod
index 3503ec3460f..f821995c0e6 100644
--- a/neonView/PersonFilter_view/PersonFilter_view.aod
+++ b/neonView/PersonFilter_view/PersonFilter_view.aod
@@ -19,6 +19,27 @@
         </neonDashletCategory>
       </categories>
     </neonDashletConfiguration>
+    <neonDashletConfiguration>
+      <name>OwnSupervisedContacts</name>
+      <title>My contacts</title>
+      <description>Show my contacts</description>
+      <fragment>Person/filter</fragment>
+      <singleton v="false" />
+      <requiresConfiguration v="false" />
+      <icon>vaadin:users</icon>
+      <categories>
+        <neonDashletCategory>
+          <name>contactmanagement</name>
+          <title>Contactmanagement</title>
+        </neonDashletCategory>
+      </categories>
+      <parameters>
+        <neonDashletParameter>
+          <name>OnlyOwnSupervised_param</name>
+          <value>true</value>
+        </neonDashletParameter>
+      </parameters>
+    </neonDashletConfiguration>
   </dashletConfigurations>
   <layout>
     <boxLayout>
diff --git a/process/AttributeRegistry_basic/process.js b/process/AttributeRegistry_basic/process.js
index 27085a93aef..13279769556 100644
--- a/process/AttributeRegistry_basic/process.js
+++ b/process/AttributeRegistry_basic/process.js
@@ -17,3 +17,4 @@ $AttributeRegistry.targetGroup = function(){return "c7d28377-8cb1-4f92-a9ac-ed08
 $AttributeRegistry.targetGroup$competitior = function(){return "1d30d0ab-6103-4972-84c0-fd23eef15ca1";};
 $AttributeRegistry.departments = function(){return "87d4ff5b-0ab6-4534-be26-76c6ef486072";};
 $AttributeRegistry.salesprojectType = function(){return "fd3963bc-8e60-411a-9911-b97eb73e5cf7";};
+$AttributeRegistry.responsibleADsupervisor = function(){return "c0b26482-c0aa-413d-a9c3-f44c56bd04a9";};
-- 
GitLab