diff --git a/entity/DuplicateOrganisation_entity/DuplicateOrganisation_entity.aod b/entity/DuplicateOrganisation_entity/DuplicateOrganisation_entity.aod
index eb3318d1aad761ad8f944dd5596c80d20a8999b3..e651b0227e3d342c20dea0aa3be489279800051e 100644
--- a/entity/DuplicateOrganisation_entity/DuplicateOrganisation_entity.aod
+++ b/entity/DuplicateOrganisation_entity/DuplicateOrganisation_entity.aod
@@ -3,6 +3,7 @@
   <name>DuplicateOrganisation_entity</name>
   <title>Duplicate</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/entity/DuplicateOrganisation_entity/documentation.adoc</documentation>
   <grantCreate v="false" />
   <grantUpdate v="false" />
   <grantDelete v="false" />
diff --git a/entity/DuplicateOrganisation_entity/documentation.adoc b/entity/DuplicateOrganisation_entity/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..73695092a6b0fcb6d5afaa09001147aad6bc69f8
--- /dev/null
+++ b/entity/DuplicateOrganisation_entity/documentation.adoc
@@ -0,0 +1,17 @@
+= DuplicateOrganisation_entity
+
+== Overview
+
+Shows the duplicates of a record. 
+The views are only referenced in the OrganisationMain_view. 
+
+This entity is used to show all duplicates of an organisation, merge duplicates to one record and to ignore duplicates.
+
+==== Actions
+
+* ignoreDuplicates: The selected record is marked as no duplicate.
+* mergeselectedintocurrent: The selected record will be merged into the current opened one.
+* mergecurrentintoselected: Same behavior as with the mergeselectedintocurrent action only the other way.
+
+== AID
+More information on duplicates can be found in the AID60 or in the documentation of the DuplicateScanner_entity
\ No newline at end of file
diff --git a/entity/DuplicatePerson_entity/DuplicatePerson_entity.aod b/entity/DuplicatePerson_entity/DuplicatePerson_entity.aod
index 2d5dd73d048c99ae42a4b422275198df818f39d1..76bf7dd0ac61df8cf73e52f42f4473244b9f2d2a 100644
--- a/entity/DuplicatePerson_entity/DuplicatePerson_entity.aod
+++ b/entity/DuplicatePerson_entity/DuplicatePerson_entity.aod
@@ -3,6 +3,7 @@
   <name>DuplicatePerson_entity</name>
   <title>Duplicate</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/entity/DuplicatePerson_entity/documentation.adoc</documentation>
   <grantCreate v="false" />
   <grantUpdate v="false" />
   <grantDelete v="false" />
diff --git a/entity/DuplicatePerson_entity/documentation.adoc b/entity/DuplicatePerson_entity/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..8d2e8be6b145c97ddff336e74921c2d77918c3d2
--- /dev/null
+++ b/entity/DuplicatePerson_entity/documentation.adoc
@@ -0,0 +1,17 @@
+= DuplicateOrganisation_entity
+
+== Overview
+
+Shows the duplicates of a record. 
+The views are only referenced in the PersonMain_view. 
+
+This entity is used to show all duplicates of a person, merge duplicates to one record and to ignore duplicates.
+
+==== Actions
+
+* ignoreDuplicates: The selected record is marked as no duplicate.
+* mergeselectedintocurrent: The selected record will be merged into the current opened one.
+* mergecurrentintoselected: Same behavior as with the mergeselectedintocurrent action only the other way.
+
+== AID
+More information on duplicates can be found in the AID60 or in the documentation of the DuplicateScanner_entity
diff --git a/entity/DuplicateScanner_entity/DuplicateScanner_entity.aod b/entity/DuplicateScanner_entity/DuplicateScanner_entity.aod
index 220ca8da86b7ff352ba94fa259602a9f004e9585..b94abcf3580c347872603d09949c5acf1e2a1f4e 100644
--- a/entity/DuplicateScanner_entity/DuplicateScanner_entity.aod
+++ b/entity/DuplicateScanner_entity/DuplicateScanner_entity.aod
@@ -97,7 +97,6 @@
       <name>DBRecordContainer</name>
       <onDBInsert>%aditoprj%/entity/DuplicateScanner_entity/recordcontainers/dbrecordcontainer/onDBInsert.js</onDBInsert>
       <onDBUpdate>%aditoprj%/entity/DuplicateScanner_entity/recordcontainers/dbrecordcontainer/onDBUpdate.js</onDBUpdate>
-      <onDBDelete>%aditoprj%/entity/DuplicateScanner_entity/recordcontainers/dbrecordcontainer/onDBDelete.js</onDBDelete>
       <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
diff --git a/entity/DuplicateScanner_entity/documentation.adoc b/entity/DuplicateScanner_entity/documentation.adoc
index 6284402b762958e1f8d9b2d9b848c4189920e666..63f59e3f44e71a5213500fd605fc6879041243af 100644
--- a/entity/DuplicateScanner_entity/documentation.adoc
+++ b/entity/DuplicateScanner_entity/documentation.adoc
@@ -1,7 +1,27 @@
-=DuplicateScanner_entity
+= DuplicateScanner_entity
 
-A "DuplicateScanner" is a definition 
-- WHICH objects may be searched for duplicates
-- and HOW these are searched 
+== Overview
+The duplicate scanner is the configuration for duplicate recognition.
+It defines WHICH objects may be searched for duplicates and HOW these are searched.
 
-Speaking of this, the duplicate scanner is the configuration for duplicate recognition.
+== Technical details
+The filter is a field with contentType: FILTER_TREE which is loaded in the onInsert/onUpdate of the db recordcontainer.
+
+All records in the DuplicateScanner cannot be deleted/created
+and should be created via liquibase scripts, during the implementation of the duplicates for a new entity. Note that, the provider and the entity must be set in the filter.
+
+The field EXTERNAL_SERVICE_USAGE_ALLOWED is deprecated and is not used in the implementation as of 06 May 2021.
+
+The field FILTER_NAME is only used as displayName in the UI and is irrelevant for the duplicate search.
+
+SCAN_PATTERN defines the filter. Note that, the provider of the ENTITY_TO_SCAN_NAME must use an index recordContainer.
+
+ID_FIELD_NAME the uid field for the duplicate search. Note that currently, it must be the uid field of the entity.
+
+==== Actions
+* rebuild: rebuilds all duplicates see rebuildDuplicates_serverProcess.
+* viewDuplicates: opens the target entity with default duplicate filter.
+
+== AID
+
+Further information and how to implement custom duplicate functionality can be found in AID60 Duplicates
diff --git a/process/DuplicateMerge_lib/DuplicateMerge_lib.aod b/process/DuplicateMerge_lib/DuplicateMerge_lib.aod
index bc0eb0235229e83f6e13f3215fd29f3dcb46bc1a..0b31b47adabb6dffb053cbabace4bf0ce4f1b723 100644
--- a/process/DuplicateMerge_lib/DuplicateMerge_lib.aod
+++ b/process/DuplicateMerge_lib/DuplicateMerge_lib.aod
@@ -2,6 +2,7 @@
 <process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>DuplicateMerge_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/process/DuplicateMerge_lib/documentation.adoc</documentation>
   <process>%aditoprj%/process/DuplicateMerge_lib/process.js</process>
   <variants>
     <element>LIBRARY</element>
diff --git a/process/DuplicateMerge_lib/documentation.adoc b/process/DuplicateMerge_lib/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..09fc1f75573d8c685829f051d4731e2285eaf3ed
--- /dev/null
+++ b/process/DuplicateMerge_lib/documentation.adoc
@@ -0,0 +1,5 @@
+= DuplicateMerge_lib
+
+Provides functionalities for merging 2 datasets. Currently implemented for Person and Organisation.
+
+This lib is, among other things, able to create activities for the merge and to update the duplicates for the merged datasets.
diff --git a/process/DuplicateScanner_lib/DuplicateScanner_lib.aod b/process/DuplicateScanner_lib/DuplicateScanner_lib.aod
index 6b45659f204354af0a6d1a39a810a6f008eda16c..bf45bdb540e198dcf9464c358b2a43245ab27921 100644
--- a/process/DuplicateScanner_lib/DuplicateScanner_lib.aod
+++ b/process/DuplicateScanner_lib/DuplicateScanner_lib.aod
@@ -2,6 +2,7 @@
 <process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>DuplicateScanner_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/process/DuplicateScanner_lib/documentation.adoc</documentation>
   <process>%aditoprj%/process/DuplicateScanner_lib/process.js</process>
   <alias>Data_alias</alias>
   <variants>
diff --git a/process/DuplicateScanner_lib/documentation.adoc b/process/DuplicateScanner_lib/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..d824334d2f7be4a57046b2f8efb7730bbb17115e
--- /dev/null
+++ b/process/DuplicateScanner_lib/documentation.adoc
@@ -0,0 +1,15 @@
+= DuplicateScanner_lib
+
+Provides a utility function for reading scan patterns (getScannerByEntity).
+
+Provides functions to create duplicate filterExtensions (getDuplicateConditionalListSql).
+
+Provides functions to manage ignored duplicates (filterIgnored, updateIgnored).
+
+Provides functions to search for ignored duplicates.
+The base function is DuplicateScannerUtils.getDuplicateIds. The other helper functions are
+    DuplicateScannerUtils.getDuplicateIdsByEntityScanner and DuplicateScannerUtils.getDuplicateIdsByEntityObj.
+    both call the base function but simplify the call for the 2 usecases:
+
+* get all duplicateids of a dataset by entity and uid: getDuplicateIdsByEntityScanner
+* get all duplicateids of a dataset based on the entity and the variable (if the dataset has not been saved yet).
diff --git a/process/IndexSearch_lib/IndexSearch_lib.aod b/process/IndexSearch_lib/IndexSearch_lib.aod
index b5a2aacd8c33062115f137291582acd7c0d8a36b..966a62229e274087ad9f4afa9a706cf2a5c2167c 100644
--- a/process/IndexSearch_lib/IndexSearch_lib.aod
+++ b/process/IndexSearch_lib/IndexSearch_lib.aod
@@ -2,6 +2,7 @@
 <process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>IndexSearch_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/process/IndexSearch_lib/documentation.adoc</documentation>
   <process>%aditoprj%/process/IndexSearch_lib/process.js</process>
   <variants>
     <element>LIBRARY</element>
diff --git a/process/IndexSearch_lib/documentation.adoc b/process/IndexSearch_lib/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..e1a46041bb3106b86648236d1096747bf963e355
--- /dev/null
+++ b/process/IndexSearch_lib/documentation.adoc
@@ -0,0 +1,3 @@
+= IndexSearch_lib
+
+Provides functionality to generate a adito-solr indexquery
diff --git a/process/rebuildDuplicates_serverProcess/documentation.adoc b/process/rebuildDuplicates_serverProcess/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..b76ecd14518c25f95453633cb10473be8d112b8a
--- /dev/null
+++ b/process/rebuildDuplicates_serverProcess/documentation.adoc
@@ -0,0 +1,12 @@
+= rebuildDuplicate_serverProcess
+
+== Overview
+Manages the asynchronous server-side recalculation of all duplicates of an entity.
+This process should only be necessary initially and possibly during data imports.
+
+== Technical Details
+Currently the process is called in the rebuild action of the DuplicateScanner_entity.
+
+The batchsize of the process (how many data sets should be loaded at once)
+can be determined by the preference custom.duplicates.dataBlockSize.
+The default value is 5000.
diff --git a/process/rebuildDuplicates_serverProcess/rebuildDuplicates_serverProcess.aod b/process/rebuildDuplicates_serverProcess/rebuildDuplicates_serverProcess.aod
index 3a72b0bfc4f0fb92cacba8dbda2b2d68acbd3386..e28fee4a9b23675f047ec8759a20a6991495b3ed 100644
--- a/process/rebuildDuplicates_serverProcess/rebuildDuplicates_serverProcess.aod
+++ b/process/rebuildDuplicates_serverProcess/rebuildDuplicates_serverProcess.aod
@@ -5,6 +5,7 @@
 This process can only be executed within the client.
 The action (Rebuild selected entries) can be found in the administration context "Duplicate Configuration".</description>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/process/rebuildDuplicates_serverProcess/documentation.adoc</documentation>
   <process>%aditoprj%/process/rebuildDuplicates_serverProcess/process.js</process>
   <alias>Data_alias</alias>
   <variants>