diff --git a/src/main/java/org/caosdb/server/jobs/Job.java b/src/main/java/org/caosdb/server/jobs/Job.java
index a5cfa7550604b4058041591729c7410168d8456c..ed2ca77c9cd7a8e728ea10f00bc8dfa1833092e9 100644
--- a/src/main/java/org/caosdb/server/jobs/Job.java
+++ b/src/main/java/org/caosdb/server/jobs/Job.java
@@ -162,26 +162,23 @@ public abstract class Job {
   }
 
   /**
-   * Check if an entity ('child') is a direct or indirect child of another
-   * entity ('targetParent').
+   * Check if an entity ('child') is a direct or indirect child of another entity ('targetParent').
    *
-   * This assumes that the parent has either an id (persistent or temporary) or
-   * a name.
+   * <p>This assumes that the parent has either an id (persistent or temporary) or a name.
    *
-   * If the targetParent is not in the set of parents of the child, this method
-   * iterates through the direct parents of the child.
+   * <p>If the targetParent is not in the set of parents of the child, this method iterates through
+   * the direct parents of the child.
    *
-   * If the both entities are part of this transaction, they are resolved within
-   * this transaction. Otherwise they are fetched from the database backend or
-   * the whole evaluation takes place in the backend (if both have persistent
-   * ids and are not part of this transaction).
+   * <p>If the both entities are part of this transaction, they are resolved within this
+   * transaction. Otherwise they are fetched from the database backend or the whole evaluation takes
+   * place in the backend (if both have persistent ids and are not part of this transaction).
    *
-   * Also, if both entities have the same id or name, the return value is true.
+   * <p>Also, if both entities have the same id or name, the return value is true.
    *
    * @param child the child entity
    * @param targetParent the parent entity
-   * @return true iff targetParent is a direct or indirect parent of the child
-   * or when the ids or names match.
+   * @return true iff targetParent is a direct or indirect parent of the child or when the ids or
+   *     names match.
    * @throws Message
    */
   protected final boolean isSubType(final EntityInterface child, final EntityInterface targetParent)
@@ -554,13 +551,12 @@ public abstract class Job {
   }
 
   /**
-   * Resolve an entity (which might only be specified by it's name or id) to
-   * it's full representation (with properties, parents and all).
+   * Resolve an entity (which might only be specified by it's name or id) to it's full
+   * representation (with properties, parents and all).
    *
    * @param entity the entity to be resolved.
    * @return the resolved entity.
-   * @throws EntityWasNotUniqueException if the resolution failed due to
-   * ambuiguity of the name.
+   * @throws EntityWasNotUniqueException if the resolution failed due to ambuiguity of the name.
    */
   protected EntityInterface resolve(final EntityInterface entity)
       throws EntityWasNotUniqueException {
diff --git a/src/main/java/org/caosdb/server/jobs/JobConfig.java b/src/main/java/org/caosdb/server/jobs/JobConfig.java
index 43a53a99080631710a44f9ae994e7cfddf098af8..f400ec639c29ce6010a91f05d81a4e50e5f8a81a 100644
--- a/src/main/java/org/caosdb/server/jobs/JobConfig.java
+++ b/src/main/java/org/caosdb/server/jobs/JobConfig.java
@@ -20,6 +20,24 @@ import org.caosdb.server.jobs.core.JobFailureSeverity;
 import org.caosdb.server.transaction.Transaction;
 import org.caosdb.server.utils.ConfigurationException;
 
+/**
+ * Configuration of the jobs which have to run during all entity transactions with "job rules".
+ *
+ * <p>A job rule contains of a quintuple (domain, entity, transaction type, job name, job failure
+ * severity).
+ *
+ * <p>The domain and the entities define for which entities the job (of the given name) should be
+ * loaded. The transaction type (e.g. Insert, Update, Delete) defines the transaction where this
+ * rule applies. The job failure severity sets the related property of a job.
+ *
+ * <p>The configuration is being read from a config file {@link
+ * ServerProperties#KEY_JOB_RULES_CONFIG}
+ *
+ * <p>This class works as a singleton, most of the time. It is possible to instanciate it otherwise,
+ * though.
+ *
+ * @author Timm Fitschen <t.fitschen@indiscale.com>
+ */
 public class JobConfig {
 
   private static JobConfig instance;
@@ -34,6 +52,10 @@ public class JobConfig {
     }
   }
 
+  /**
+   * The keys of these rules consist of the domain, entity and transaction. The value is a pair (job
+   * name, job failure severity).
+   */
   private final Map<String, List<Object[]>> rules;
 
   public JobConfig() throws FileNotFoundException, IOException {
@@ -44,6 +66,14 @@ public class JobConfig {
     this.rules = getRulesFromCSV(config);
   }
 
+  /**
+   * Read the rules from the CSV file.
+   *
+   * @param file
+   * @return A map with all the rules.
+   * @throws FileNotFoundException
+   * @throws IOException
+   */
   private Map<String, List<Object[]>> getRulesFromCSV(final File file)
       throws FileNotFoundException, IOException {
     try (final BufferedReader reader = new BufferedReader(new FileReader(file))) {
@@ -65,6 +95,7 @@ public class JobConfig {
     }
   }
 
+  /** Generate a unique key (for class-internal use only). */
   private String getKey(final Integer domain, final Integer entity, final String transaction) {
     final StringBuilder sb = new StringBuilder();
     sb.append("<");
@@ -77,6 +108,12 @@ public class JobConfig {
     return sb.toString();
   }
 
+  /**
+   * Read a rule from the csv-row and put it into the 'result' map
+   *
+   * @param result map with all the rules.
+   * @param row represents a single rule as a comma-separated quintuple.
+   */
   private void addRule(final Map<String, List<Object[]>> result, final String[] row) {
     if (row.length != 5) {
       throw new ConfigurationException(
@@ -99,6 +136,16 @@ public class JobConfig {
     }
   }
 
+  /**
+   * Factory method for the instanciation and configuration of a job for a specific entity.
+   *
+   * @param domain the domain of the rule
+   * @param entity the entity of the rule (this might be a particular datatype or a role, like
+   *     "RecordType")
+   * @param target the entity for which the job will run.
+   * @param transaction the transaction for which the job will run.
+   * @return A fresh job instance
+   */
   public List<Job> getConfiguredJobs(
       final Integer domain,
       final Integer entity,