diff --git a/api/src/main/java/org/apache/unomi/api/Event.java b/api/src/main/java/org/apache/unomi/api/Event.java
index cd77586..ab7e1b0 100644
--- a/api/src/main/java/org/apache/unomi/api/Event.java
+++ b/api/src/main/java/org/apache/unomi/api/Event.java
@@ -116,6 +116,7 @@
      * @param scope     the scope from which the event is issued
      * @param source    the source of the event
      * @param target    the target of the event if any
+     * @param properties the properties for this event if any
      * @param timestamp the timestamp associated with the event if provided
      * @param persistent specifies if the event needs to be persisted
      */
diff --git a/api/src/main/java/org/apache/unomi/api/Parameter.java b/api/src/main/java/org/apache/unomi/api/Parameter.java
index c59fcab..a24fe9b 100644
--- a/api/src/main/java/org/apache/unomi/api/Parameter.java
+++ b/api/src/main/java/org/apache/unomi/api/Parameter.java
@@ -48,6 +48,7 @@
     }
 
     /**
+     * @param choiceListInitializerFilter a reference to a choicelist
      * @deprecated As of version 1.1.0-incubating
      */
     @Deprecated
diff --git a/api/src/main/java/org/apache/unomi/api/PartialList.java b/api/src/main/java/org/apache/unomi/api/PartialList.java
index 2128f93..568cf33 100644
--- a/api/src/main/java/org/apache/unomi/api/PartialList.java
+++ b/api/src/main/java/org/apache/unomi/api/PartialList.java
@@ -67,6 +67,7 @@
      * @param offset    the offset of the first element in the view
      * @param pageSize  the number of elements this PartialList contains
      * @param totalSize the total size of elements in the original List
+     * @param totalSizeRelation the relation to the total size (equals or greater than)
      */
     public PartialList(List<T> list, long offset, long pageSize, long totalSize, Relation totalSizeRelation) {
         this.list = list;
diff --git a/api/src/main/java/org/apache/unomi/api/services/ProfileService.java b/api/src/main/java/org/apache/unomi/api/services/ProfileService.java
index 21c0333..3b94ed9 100644
--- a/api/src/main/java/org/apache/unomi/api/services/ProfileService.java
+++ b/api/src/main/java/org/apache/unomi/api/services/ProfileService.java
@@ -322,8 +322,9 @@
     /**
      * This function will try to set the target on the property type if not set already, based on the file URL
      *
-     * @param predefinedPropertyTypeURL
-     * @param propertyType
+     * @param predefinedPropertyTypeURL the URL to extract the target from if the target is not yet. By default it will
+     *                                  use the 5's part after a "/" character
+     * @param propertyType the property type to register
      */
     void setPropertyTypeTarget(URL predefinedPropertyTypeURL, PropertyType propertyType);
 
diff --git a/api/src/main/java/org/apache/unomi/api/services/SegmentService.java b/api/src/main/java/org/apache/unomi/api/services/SegmentService.java
index e5d4b29..d1dc440 100644
--- a/api/src/main/java/org/apache/unomi/api/services/SegmentService.java
+++ b/api/src/main/java/org/apache/unomi/api/services/SegmentService.java
@@ -223,7 +223,7 @@
      * Get generated property key for past event condition
      * @param condition The event condition
      * @param parentCondition The past event condition
-     * @return
+     * @return a String representing the condition and parent condition uniquelly
      */
     String getGeneratedPropertyKey(Condition condition, Condition parentCondition);
 }
diff --git a/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/services/ImportExportConfigurationService.java b/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/services/ImportExportConfigurationService.java
index e7197f8..dd561e7 100644
--- a/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/services/ImportExportConfigurationService.java
+++ b/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/services/ImportExportConfigurationService.java
@@ -62,7 +62,7 @@
     /**
      * Set the router camel context to share
      *
-     * @param routerCamelContext
+     * @param routerCamelContext the router Camel context to use for all operations
      */
     void setRouterCamelContext(IRouterCamelContext routerCamelContext);
 
diff --git a/extensions/salesforce-connector/services/src/main/java/org/apache/unomi/sfdc/services/SFDCService.java b/extensions/salesforce-connector/services/src/main/java/org/apache/unomi/sfdc/services/SFDCService.java
index ab5041b..86b4519 100644
--- a/extensions/salesforce-connector/services/src/main/java/org/apache/unomi/sfdc/services/SFDCService.java
+++ b/extensions/salesforce-connector/services/src/main/java/org/apache/unomi/sfdc/services/SFDCService.java
@@ -38,7 +38,7 @@
     /**
      * Save a Salesforce configuration into the persistence service
      * @param sfdcConfiguration the configuration to persist
-     * @return
+     * @return a boolean indicating if the save was successful or not
      */
     boolean saveConfiguration(SFDCConfiguration sfdcConfiguration);
 
@@ -46,8 +46,8 @@
      * Login into Salesforce using the configuration passed in the methods arguments.
      * @param sfdcConfiguration the configuration to use for the login
      * @return true if the login was successful, false otherwise
-     * @throws HttpException
-     * @throws IOException
+     * @throws HttpException thrown if there was an error communicating with the Salesforce server
+     * @throws IOException thrown if there was an error communicating with the Salesforce server
      */
     boolean login(SFDCConfiguration sfdcConfiguration) throws HttpException, IOException;
 
@@ -57,14 +57,14 @@
 
     /**
      * Create or update a lead based on a Unomi profile.
-     * @param profile
+     * @param profile the Unomi profile to use to update leads
      * @return a String containing the identifier of the corresponding SFDC lead
      */
     String createOrUpdateLead(Profile profile);
 
     /**
      * Updates a Unomi profile from a Salesforce lead
-     * @param profile
+     * @param profile the profile to update with the data coming from the lead
      * @return true if the profile was updated, false otherwise.
      */
     boolean updateProfileFromLead(Profile profile);
diff --git a/extensions/unomi-mailchimp/services/src/main/java/org/apache/unomi/mailchimp/services/MailChimpService.java b/extensions/unomi-mailchimp/services/src/main/java/org/apache/unomi/mailchimp/services/MailChimpService.java
index 24179b4..9386dcb 100644
--- a/extensions/unomi-mailchimp/services/src/main/java/org/apache/unomi/mailchimp/services/MailChimpService.java
+++ b/extensions/unomi-mailchimp/services/src/main/java/org/apache/unomi/mailchimp/services/MailChimpService.java
@@ -37,8 +37,8 @@
     /**
      * This function will add the current visitor to a MailChimp list.
      *
-     * @param profile @see org.apache.unomi.api.Profile
-     * @param action  @see org.apache.unomi.api.actions.Action
+     * @param profile the Unomi profile to add to the list @see org.apache.unomi.api.Profile
+     * @param action the action used to call this method, to retrieve parameters @see org.apache.unomi.api.actions.Action
      * @return true if the visitor is successfully added to a MailChimp list.
      */
     MailChimpResult addToMCList(Profile profile, Action action);
@@ -46,8 +46,8 @@
     /**
      * This function will remove the current visitor from a MailChimp list.
      *
-     * @param profile @see org.apache.unomi.api.Profile
-     * @param action  @see org.apache.unomi.api.actions.Action
+     * @param profile the Unomi profile to remove from the list @see org.apache.unomi.api.Profile
+     * @param action the action used to call this method, to retrieve parameters @see org.apache.unomi.api.actions.Action
      * @return true if the visitor is successfully removed to a MailChimp list.
      */
     MailChimpResult removeFromMCList(Profile profile, Action action);
@@ -55,8 +55,8 @@
     /**
      * This function will unsbscribe the current visitor to a MailChimp list.
      *
-     * @param profile @see org.apache.unomi.api.Profile
-     * @param action  @see org.apache.unomi.api.actions.Action
+     * @param profile the Unomi profile to unsubscribe from the list @see org.apache.unomi.api.Profile
+     * @param action the action used to call this method, to retrieve parameters @see org.apache.unomi.api.actions.Action
      * @return true if the visitor is successfully unsbscribed to a MailChimp list.
      */
     MailChimpResult unsubscribeFromMCList(Profile profile, Action action);
@@ -64,7 +64,8 @@
     /**
      * This function will update merge properties of MailChimp list.
      *
-     * @param action @see org.apache.unomi.api.actions.Action
+     * @param profile the Unomi profile to unsubscribe from the list @see org.apache.unomi.api.Profile
+     * @param action the action used to call this method, to retrieve parameters @see org.apache.unomi.api.actions.Action
      * @return true if the visitor is successfully unsbscribed to a MailChimp list.
      */
     MailChimpResult updateMCProfileProperties(Profile profile, Action action);
diff --git a/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/PersistenceService.java b/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/PersistenceService.java
index 31c0239..6fde7ee 100644
--- a/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/PersistenceService.java
+++ b/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/PersistenceService.java
@@ -101,9 +101,10 @@
     void setSetting(String fieldName, Object value) throws NoSuchFieldException, IllegalAccessException;
 
     /**
-     * Set settings of the persistence service
+     * Get settings of the persistence service
      *
      * @param fieldName name of the field to get
+     * @return an object corresponding to the field that was accessed
      * @throws NoSuchFieldException if the field does not exist
      * @throws IllegalAccessException field is not accessible to be changed
      */
diff --git a/pom.xml b/pom.xml
index 78b0ded..4b9fd36 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1096,6 +1096,20 @@
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-javadoc-plugin</artifactId>
                     <version>3.2.0</version>
+                    <configuration>
+                        <additionalDependencies>
+                            <additionalDependency>
+                                <groupId>org.eclipse.jetty</groupId>
+                                <artifactId>jetty-client</artifactId>
+                                <version>7.4.4.v20110707</version>
+                            </additionalDependency>
+                            <additionalDependency>
+                                <groupId>org.eclipse.jetty</groupId>
+                                <artifactId>jetty-util</artifactId>
+                                <version>7.4.4.v20110707</version>
+                            </additionalDependency>
+                        </additionalDependencies>
+                    </configuration>
                 </plugin>
                 <plugin>
                     <groupId>org.apache.servicemix.tooling</groupId>
diff --git a/rest/src/main/java/org/apache/unomi/rest/EventServiceEndpoint.java b/rest/src/main/java/org/apache/unomi/rest/EventServiceEndpoint.java
index a1bd69b..fdfdabd 100644
--- a/rest/src/main/java/org/apache/unomi/rest/EventServiceEndpoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/EventServiceEndpoint.java
@@ -93,6 +93,7 @@
 
     /**
      * Returns the list of event properties
+     * @param typeName the type name identifier
      * @return a List of EventProperty objects that make up the properties that the server has seen.
      */
     @GET
diff --git a/rest/src/main/java/org/apache/unomi/rest/PatchServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/PatchServiceEndPoint.java
index 81033d8..715923e 100644
--- a/rest/src/main/java/org/apache/unomi/rest/PatchServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/PatchServiceEndPoint.java
@@ -50,6 +50,8 @@
 
     /**
      * Apply a patch on an item
+     * @param patch the patch to apply
+     * @param force a boolean to force (or not) the application of the patch even if it was previously applied.
      */
     @POST
     @Path("/apply")
diff --git a/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
index 3ff36a9..477aafd 100644
--- a/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
@@ -458,7 +458,9 @@
      * @param isSystemTag   if we should look in system tags instead of tags
      * @param itemType      the String representation of the item type we want to retrieve the count of, as defined by its class' {@code ITEM_TYPE} field
      * @param language      the value of the {@code Accept-Language} header to specify in which locale the properties description should be returned TODO unused
+     * @param response      the http response object
      * @return all property types defined for the specified item type and with the specified tag
+     * @throws IOException if there was an error sending the response
      */
     @GET
     @Path("/existingProperties")
diff --git a/rest/src/main/java/org/apache/unomi/rest/authentication/RestAuthenticationConfig.java b/rest/src/main/java/org/apache/unomi/rest/authentication/RestAuthenticationConfig.java
index 601f8de..991c580 100644
--- a/rest/src/main/java/org/apache/unomi/rest/authentication/RestAuthenticationConfig.java
+++ b/rest/src/main/java/org/apache/unomi/rest/authentication/RestAuthenticationConfig.java
@@ -49,7 +49,7 @@
      * - Class name + method name:      org.apache.unomi.rest.ContextJsonEndpoint.getContextJSON
      * - Method name only:              getContextJSON
      *
-     * @return the list of role mappings <methodKey, roles separated by single white spaces>, like: <"getContextJSON", "ROLE1 ROLE2 ROLE3">
+     * @return the list of role mappings &lt;methodKey, roles separated by single white spaces&gt;, like: &lt;"getContextJSON", "ROLE1 ROLE2 ROLE3"&gt;
      */
     Map<String, String> getMethodRolesMap();
 
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/Migration.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/Migration.java
index 639defe..2858e9e 100644
--- a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/Migration.java
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/Migration.java
@@ -51,7 +51,9 @@
      * This method is called to execute the migration
      * @param session       the shell's session
      * @param httpClient    CloseableHttpClient
-     * @throws IOException
+     * @param esAddress     the fully qualified address at which the ElasticSearch is reachable (ie http://localhost:9200)
+     * @param bundleContext the bundle context object
+     * @throws IOException if there was an error while executing the migration
      */
     void execute(Session session, CloseableHttpClient httpClient, String esAddress, BundleContext bundleContext) throws IOException;
 }
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/utils/ConsoleUtils.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/utils/ConsoleUtils.java
index 0a60314..145e249 100644
--- a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/utils/ConsoleUtils.java
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/utils/ConsoleUtils.java
@@ -38,8 +38,8 @@
      * @param session           the shell's session
      * @param msg               String message to ask
      * @param defaultAnswer     String default answer
-     * @return the user answer
-     * @throws IOException
+     * @return the user's answer
+     * @throws IOException if there was a problem reading input from the console
      */
     public static String askUserWithDefaultAnswer(Session session, String msg, String defaultAnswer) throws IOException {
         String answer = promptMessageToUser(session, msg);
@@ -57,7 +57,7 @@
      * @param msg               String message to ask
      * @param authorizedAnswer  Array of possible answer, all answer must be in lower case
      * @return the user answer
-     * @throws IOException
+     * @throws IOException if there was an error retrieving an answer from the user on the console
      */
     public static String askUserWithAuthorizedAnswer(Session session, String msg, List<String> authorizedAnswer) throws IOException {
         String answer;
@@ -74,7 +74,7 @@
      * @param session   the shell's session
      * @param msg       String message to prompt
      * @return the user answer
-     * @throws IOException
+     * @throws IOException if there was an error retrieving an answer from the user on the console
      */
     public static String promptMessageToUser(Session session, String msg) throws IOException {
         LineReader reader = (LineReader) session.get(".jline.reader");
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/services/UnomiManagementService.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/services/UnomiManagementService.java
index f4070c0..ebb8ba4 100644
--- a/tools/shell-commands/src/main/java/org/apache/unomi/shell/services/UnomiManagementService.java
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/services/UnomiManagementService.java
@@ -26,13 +26,13 @@
 
     /**
      * This method will start Apache Unomi
-     * @throws BundleException
+     * @throws BundleException if there was an error starting Unomi's bundles
      */
     void startUnomi() throws BundleException;
 
     /**
      * This method will stop Apache Unomi
-     * @throws BundleException
+     * @throws BundleException if there was an error stopping Unomi's bundles
      */
     void stopUnomi() throws BundleException;
 }
diff --git a/wab/src/main/java/org/apache/unomi/web/HttpUtils.java b/wab/src/main/java/org/apache/unomi/web/HttpUtils.java
index dbe7eab..664d105 100644
--- a/wab/src/main/java/org/apache/unomi/web/HttpUtils.java
+++ b/wab/src/main/java/org/apache/unomi/web/HttpUtils.java
@@ -26,9 +26,9 @@
 
     /**
      * Setup CORS headers as soon as possible so that errors are not misconstrued on the client for CORS errors
-     * @param httpServletRequest
-     * @param response
-     * @throws IOException
+     * @param httpServletRequest the http servlet request object to use
+     * @param response the http servlet response object to use
+     * @throws IOException raised if there was a problem reading from the request or writing to the response
      */
     public static void setupCORSHeaders(HttpServletRequest httpServletRequest, ServletResponse response) throws IOException {
         if (response instanceof HttpServletResponse) {
